sparrow,通用rdf/sparql数据库api
sparrow的Python项目详细描述
麻雀
简介
sparrow是一个库,它为 RDF数据库。为SPARQL查询提供支持的任何数据库 有一个可以处理上下文的TripleStore可以用作后端。
sparrow的目标是确保所有这些不同的后端行为相同, 使无需更改就可以更改rdf数据库后端 你的密码。
目前支持以下后端:
api支持以下基本功能:
- Parsing RDF statements from different formats into a contextual database
- Serializing the RDF statements from a specific context of a database
- Removing statements from a specific context of a database
- Performing SPARQL Queries
sparrow不提供图形api,但它可以解析和序列化python。 字典对象。它使用与json序列化相同的格式。 每个TripleStore后端都提供以下格式:
- RDFXML
- NTriples
- Turtle
- JSON
- Python dictionaries
安装
sparrow提供了几个数据库的构建配置文件。 这些配置文件将为您安装和设置不同的后端。 你不必使用BuildOut,但我建议你使用它。
要安装,请键入:
> python2.5 bootstrap.py > ./bin/buildout
这将在bin文件夹中创建一些脚本,比如testrunner和 (取决于您选择的配置文件)用于配置和启动的脚本 不同的后端。
使用量
通常,您只需要导入基本的sparrow模块
>>> import sparrow
大多数数据库后端都无法正常工作。 由于rdflib后端是用python编写并打包在pypi上的, 它总是可用的,并且与sparrow一起安装。
让我们创建内存中的rdflib数据库
>>> db = sparrow.database('rdflib', 'memory') >>> db <sparrow.rdflib_backend.RDFLibTripleStore ...>
让我们向数据库中添加一些三元组,我们将为此使用Turtle语法。 我们会举一些例子来说明约翰是一个人, 他的名字叫“约翰”。
>>> data = """@prefix ex: <http://example.org#> . ... ex:john a ex:Person; ex:name "John" ."""
现在我们可以将其添加到数据库中。我们需要告诉数据库 存储数据的上下文。数据本身可以是文件或http 基于uri、数据字符串或类似文件的对象。
所以,让我们把这个添加到persons上下文中。
>>> db.add_turtle(StringIO(data), 'persons')
我们现在可以询问数据库,它有哪些上下文:
>>> db.contexts() [u'persons']
您可以将数据存储在任意多个不同的上下文中,也可以将所有内容 在单一的背景下。
让我们在数据库
上做一个简单的SPARQL查询>>> result = db.select('SELECT ?x {?x <http://example.org#name> "John".}')
我们可以把结果作为字典的列表。这是下面的例子 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() []
麻雀的变更日志
麻雀1.0b4(2009-07-20)
- Picked better default profile
麻雀1.0b3(2009-07-20)
- Fixed import errors in redland and allegro backend
- API Changes: removed format method, all stores are supposed to provide ‘ntriples’, ‘rdfxml’ and ‘turtle’ serializations
- API Changes: renamed IDatabase to ITripleStore, added ISPARQLEndpoint interface, added methods for different formats.
- Added json and python dict serialization and parser formats for all backends
- Added configure.zcml with utility registrations
- Fixed allegro query tests
麻雀1.0b2(2009-07-13)
- Added Allegro backend
- More unittests
- Added Allegro graph buildout profile
麻雀1.0b1(2009-07-12)
- Refactored Redland/LibRDF, Sesame backends from Metro
- Added RDFLib backend
- Added Sesame buildout profile, configure and start scripts
- Added basic test coverage