带有推断属性的查询

后端开发 2026-07-09

我在使用rdflib连接GraphDB。

在指定推断属性(例如反向属性)时,我得到空响应。

在下方的情形中,“schema:children” 被定义为“schema:parent”的反向关系,我在图中可以看到正确的推断。

>>> person = rdflib.term.URIRef("urn:uuid:43e5f3c2-784d-433c-be3d-f711bfb7c86b")
>>> q = '''
... select ?child where {{
...     <{person}> schema:children ?child .
... }} '''
>>> qres = graphdb.query(q.format(person=person))
>>> len(qres)
0

GraphDB控制台中的同一查询给出了正确的答案。

来自 GraphDB 界面的屏幕截图

为什么我在rdflib连接中没有得到同样的响应?

我使用的是OWL2-RL(Optimized)规则集。

解决方案

查询本身没有问题。

我刚刚发现GraphDB对图对象中使用的标识符处理得并不好。rdflib在查询参数中插入default-graph-uri,这在某种程度上影响了响应。

原始对象是这样的:

default_graph = URIRef('http://ontology.starchus.tech/clinic/')
graphdb = Graph(store, identifier=default_graph)

我只需要移除该标识符即可使其工作。

graphdb = Graph(store)
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章