1

我用两个本体加载 Jena。他们都定义了一个 Person 类。他们都有一个人名约翰。他们不是“同一个”约翰;不同的人,不同的前缀,不同的IRI。在不改变原始本体的情况下,是否有一个系统(比如向商店添加一个三元组),以便它们可以等效。一个 rdfs:subClassOf 内置?

4

1 回答 1

0

如评论中所述,一种解决方案是通过 owl:sameAs 将资源定义为等效并运行推理器。这将为每个资源定义正确的属性联合,这意味着每个资源将具有相同的属性和值。

如果运行推理器不是您想要的,那么您可以运行等效的 SPARQL 来插入数据:

CONSTRUCT {
   <person1> ?p2 ?o2
   <person2> ?p1 ?o1 .
}
WHERE {
   <person1> ?p1 ?o1 .
   <person2> ?p2 ?o2 .
}

这将返回构造的三元组集合,即那些不存在的三元组,因此为您提供与 OWL 推理器相同的联合。

如果您只需要在数据加载时执行此操作,则只需使用相同的查询模式插入该数据:

INSERT {
   GRAPH <graph-uri> {
      <person1> ?p2 ?o2
      <person2> ?p1 ?o1 .
   }
}
WHERE {
   <person1> ?p1 ?o1 .
   <person2> ?p2 ?o2 .
}
于 2016-03-17T16:03:19.837 回答