本体之间的Sparql查询

时间:2014-10-07 20:20:49

标签: rdf sparql jena ontology triples

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

1 个答案:

答案 0 :(得分: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 .
}