PAYATHON 2026

GraphDB 为何未推理含 inverseOf 的属性链?

数据小许

结论

从这个案例的实验结果看,问题可能出在属性链中逆属性的写法上:GraphDB 没有通过包含 owl:inverseOf 匿名节点的链完成推理。可以先为逆关系声明一个有名称的对象属性,再在属性链中引用它。这样,链中就不再需要用匿名节点表示逆属性。

调整属性链

原属性链在 Turtle 中用匿名节点表示 inverse(:redEndpointB):

:connectedToByRed owl:propertyChainAxiom (
  [ owl:inverseOf :redEndpointB ]
  :redEndpointA
) .

为逆关系声明命名属性,并将其加入属性链:

:redEndpointBInverse owl:inverseOf :redEndpointB .

:connectedToByRed owl:propertyChainAxiom (
  :redEndpointBInverse
  :redEndpointA
) .

蓝色连接也可以照此处理:

:blueEndpointBInverse owl:inverseOf :blueEndpointB .

:connectedToByBlue owl:propertyChainAxiom (
  :blueEndpointBInverse
  :blueEndpointA
) .

owl:inverseOf 声明命名属性与原属性互为逆属性。链的顺序不变:先沿 :redEndpointBInverse(或 :blueEndpointBInverse)关系,再沿对应的 A 端点属性。

验证预期关系

原始数据中,:conn1 有 :redEndpointA :nodeA1 和 :redEndpointB :nodeA2。按属性链的方向,预期推理结果为:

:nodeA2 :connectedToByRed :nodeA1 .

蓝色连接的预期关系同理:

:nodeB2 :connectedToByBlue :nodeB1 .

修改本体后,重新导入数据或触发 repository 的推理更新,再查询这些关系。如果关系仍未出现,检查属性链是否引用了命名逆属性、属性顺序是否正确,以及相关数据是否已载入当前 repository。

适用范围

这套方法是针对题述本体和 GraphDB 配置得出的实验性解决办法。现有信息不足以判断所有 GraphDB 版本和配置是否都支持这类属性链。如果命名逆属性仍未产生预期结果,可以根据具体版本、repository 配置和查询结果继续排查。

备注:内容仅供参考。