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