Apache Jena和Python

10

我一直在使用Python编写各种关系提取模型,所有的关系当前都保存在数据框或CSV文件中。最终,我想创建一个RDF图。由于我使用Python开发,我打算使用RDFlib创建RDF,并将RDF读入Apache Jena中的模型进行查询。这是一个很好的工作流程,还是有更好的方法?


2
看起来很合理。另一种方法是运行Jena Fuseki并将数据发送到Fuseki,而不是将其写出并再次读入。您可以从Python查询Fuseki。 - AndyS
取决于您之后打算如何处理RDF的数据。我建议考虑三种情形:共享 - 将RDF数据写成RDF-HDT文件;查询和在应用程序中使用 - 使用https://rdflib.github.io/sparqlwrapper/将RDF数据放入三元组存储库;一次性推理 - 编写Java/Prolog程序将数据加载到内存中的Jena或Cliopatria图中,并执行您计划完成的步骤。这有意义吗?我可能仍然会编写N-Triples或RDF-HDT文件,因为易于自动转换,然后只需将RDF传递给程序或三元组存储库即可。 - berezovskyi
我想要的是创建一个在线界面,可以查询三元组存储。 - Joe124
1个回答

4

虽然有些晚了,但我也遇到了类似的问题,这是我用Python与Jena TDB交互的方法。

你也可以利用JayDeBeApi和官方的Jena TDB JDBC驱动程序。确保JDBC驱动程序在Java类路径中可用。

import jaydebeapi
jclass = "org.apache.jena.jdbc.JenaJDBC"
conn_string = "jdbc:jena:tdb:location=/path/to/tdbstore"
conn = jaydebeapi.connect(jclass, conn_string)
cursor = conn.cursor()
query = """
SELECT DISTINCT ?a
WHERE  {
    ?a ?b ?b .
}
"""
cursor.execute(query)
# do something with the results
cursor.close()
conn.close()

您还可以在 conn_string 中添加 &must-exist=true|false ,表示存储是否必须存在。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接