【问题标题】:Apache Jena and PythonApache Jena 和 Python
【发布时间】:2018-10-23 11:57:52
【问题描述】:

我一直在研究 python 中的各种关系提取模型,所有关系目前都保存在数据框或 csv 文件中。最终我想创建一个 RDF 图。因为我在 python 中工作,所以我打算使用 RDFlib 创建 RDF,并将 RDF 读入 Apache Jena 到我可以查询的模型中。这是一个好的工作流程还是有更好的方法?

【问题讨论】:

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

标签: python jena rdflib


【解决方案1】:

很晚了,但是当我遇到类似的问题时,这就是我如何从 python 与 Jena TDB 交谈的方式。

您也可以使用JayDeBeApi 和官方Jena TDB JDBC Driver。您必须确保 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,表示商店是否必须存在。

【讨论】:

    猜你喜欢
    • 2021-05-17
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多