【发布时间】:2021-06-09 07:40:08
【问题描述】:
我正在尝试运行一个简单的查询:
"""
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?label
WHERE { ?a rdfs:label ?label }
""")
通过我的 GraphDB 存储库,但来自 Python。经过一番搜索,我发现 SPARQL 包装器可以用于此,但我不确定如何让 python 连接到我的 GraphDB(端点?)。我对 API 没有经验。到目前为止我所拥有的:
from SPARQLWrapper import SPARQLWrapper, JSON
sparql = SPARQLWrapper("http://192.168.0.12:7200/repositories/MyRepository")
sparql.setQuery("""
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?label
WHERE { ?a rdfs:label ?label }
""")
sparql.setReturnFormat(JSON)
results = sparql.query().convert()
for result in results["results"]["bindings"]:
print(result["label"]["value"])
print('---------------------------')
for result in results["results"]["bindings"]:
print('%s: %s' % (result["label"]["xml:lang"], result["label"]["value"]))
我从另一个 stackoverflow 复制了这个示例查询,但只更改了 where 查询的主题,因此它适用于我的数据,它适用于他们指向那里的存储库 (http://dbpedia.org/sparql),但不适用于链接我从 graphDB 的存储库中获取。
有什么想法吗?
【问题讨论】:
-
问题:你得到一个异常或只是一个空的结果集?
-
尝试使用简单的选择查询来查看是否有任何结果。上面的例子对我有用,除了最后一个打印语句。选择 * where { ?s ?p ?o 。 } 限制 100
-
有趣!我实际上得到以下错误: urllib.error.URLError:
-
这对我来说表明我的 python 没有与我在 graphDB 上的存储库正确通信。这是我感到困惑的一点:我是否使用 sparql = SPARQLWrapper("192.168.0.12:7200/repositories/MyRepository") 正确指向了我的存储库
-
@Robin,curl 是一个命令行程序。使用它来测试你的 gdb 端点,而不会有你的 python 工具堆栈中的某些东西妨碍你的风险。
标签: python sparql graphdb sparqlwrapper