我有一个NT格式的大型RDF数据集(Geonames数据集:18GB)。我想使用rdflib_sqlalchemy.SQLAlchemy
将其加载到PostgreSQL关系表中。我知道这是可行的(performing sparql query on the rdf data stored in relational database)。但是,我不知道如何。你能给我举个例子吗?
我的下一个目标是使用RDFLib从python编写SPARQL查询。我知道该怎么做。在此先感谢您的帮助。
安装这些Python库:
pip install rdflib
pip install rdflib-sqlalchemy
pip install psycopg2
运行以下Python代码:
from rdflib import plugin
from rdflib.graph import Graph
from rdflib.store import Store
from rdflib_sqlalchemy import registerplugins
registerplugins()
SQLALCHEMY_URL ="postgresql+psycopg2://user:password@hostname:port/databasename"
store = plugin.get("SQLAlchemy", Store)(identifier="my_store")
graph = Graph(store, identifier="my_graph")
graph.open(SQLALCHEMY_URL, create=True)
graph.parse("demo.nt", format="nt")
result = graph.query("select * where {?s ?p ?o} limit 10")
for subject, predicate, object_ in result:
print(subject, predicate, object_)
graph.close()
'demo.nt'是要导入的N-Triples文件。我用这个来测试:
<http://example.org/a> <http://example.org/b> <http://example.org/c> .
成功导入后,您的数据库包含五个填充三元组的表(例如,kb_ [some_id] _asserted_statements)。控制台最多打印十个三元组。
在Windows 10,PostgreSQL 10.5,Python 3.5.4(全部64位)上使用rdflib-4.2.2,rdflib-sqlalchemy-0.3.8和psycopg2-2.7.5进行了测试。