Sparrow,通用RDF/SPARQL数据库API
项目描述
Sparrow
简介
Sparrow是一个库,提供对RDF数据库的高级API。任何提供对SPARQL查询支持且具有可以处理上下文的三元组的数据库都可以用作后端。
Sparrow的目标是确保所有这些不同的后端表现一致,使得在不更改代码的情况下更换RDF数据库后端成为可能。
目前支持以下后端
API提供以下基本功能支持
将不同格式的RDF语句解析到上下文数据库中
将数据库特定上下文的RDF语句序列化
从数据库的特定上下文中删除语句
执行SPARQL查询
Sparrow不提供图API,但可以解析和序列化Python字典对象。这使用了与JSON序列化相同的格式。每个三元组存储后端提供以下格式
RDFXML
NTriples
Turtle
JSON
Python字典
安装
Sparrow附带为几个数据库提供的buildout配置文件。这些配置文件将为您安装和设置不同的后端。您不必使用buildout,但我推荐这样做。
要安装,请输入
> python2.5 bootstrap.py > ./bin/buildout
这将创建bin文件夹中的某些脚本,如测试运行器和(根据您选择的配置文件)配置和启动不同后端的脚本。
用法
通常,您只需导入base sparrow模块即可。
>>> import sparrow
大多数数据库后端都不需要安装即可使用。由于RDFLib后端是用Python编写的,并且打包在PyPI上,因此它总是可用的,并且与Sparrow一起安装。
让我们创建一个内存中的rdflib数据库。
>>> db = sparrow.database('rdflib', 'memory') >>> db <sparrow.rdflib_backend.RDFLibTripleStore ...>
让我们向数据库添加一些三元组,我们将使用turtle语法。我们将创建一些示例语句,声明John是一个人,他的名字是“John”。
>>> data = """@prefix ex: <http://example.org#> . ... ex:john a ex:Person; ex:name "John" ."""
现在我们可以将数据添加到数据库中。我们需要告诉数据库在哪个上下文中存储数据。数据本身可以是文件或基于HTTP的URI、数据字符串或文件对象。
因此,让我们将数据添加到< cite>persons cite>上下文中。
>>> db.add_turtle(StringIO(data), 'persons')
现在我们可以询问数据库它有哪些上下文。
>>> db.contexts() [u'persons']
您可以根据需要存储在任意多个不同的上下文中,或者将所有内容都放在一个上下文中。
让我们对数据库进行简单的SPARQL查询。
>>> result = db.select('SELECT ?x {?x <http://example.org#name> "John".}')
我们可以将结果作为字典列表获取。这遵循SPARQL JSON结果格式。
>>> result [{u'x': {'type': u'uri', 'value': u'http://example.org#john'}}]
除了查询之外,我们还可以从数据库中以任何支持的格式获取数据。我们指定我们想要的格式和要使用的上下文。
>>> db.get_ntriples('persons').read() '<http://example.org#john> ...'
如果数据库后端支持,您可以询问上下文中有多少个三元组。
>>> db.count('persons') 2
如果您想删除三元组,您需要提供描述要删除的三元组的数据。
>>> data = '<http://example.org#john> a <http://example.org#Person>.' >>> db.remove_turtle(data, 'persons') >>> db.count('persons') 1
您还可以删除上下文中的所有三元组。
>>> db.clear('persons') >>> db.count('persons') 0
由于“persons”上下文现在为空,因此它也被删除。
>>> db.contexts() []
Sparrow的变更日志
Sparrow 1.0b4 (2009-07-20)
选择了更好的默认配置文件
Sparrow 1.0b3 (2009-07-20)
修复了redland和allegro后端中的导入错误
API更改:删除了format方法,所有存储都应提供'ntriples'、'rdfxml'和'turtle'序列化
API更改:将IDatabase重命名为ITripleStore,添加了ISPARQLEndpoint接口,添加了不同格式的相关方法。
为所有后端添加了json和python dict序列化和解析格式
添加了configure.zcml与实用程序注册
修复了allegro查询测试
Sparrow 1.0b2 (2009-07-13)
添加了Allegro后端
更多的unittests
添加了Allegro图形构建配置文件
Sparrow 1.0b1 (2009-07-12)
从Metro重构了Redland/LibRDF、Sesame后端
添加了RDFLib后端
添加了Sesame构建配置文件、配置和启动脚本
添加了基本的测试覆盖率
项目详情
下载文件
下载适合您平台文件的文件。如果您不确定要选择哪个,请了解更多关于安装软件包的信息。