Ontotext GraphDB中如何通过owl:sameAs检索显隐品牌实例?
解决GraphDB中owl:sameAs关联品牌的查询问题
方法一:修改SPARQL查询显式匹配等价品牌
直接在查询中加入owl:sameAs的路径匹配逻辑,就能同时获取显式声明和隐式关联的品牌。修改后的查询如下:
PREFIX : <http://www.example.org#> PREFIX owl: <http://www.w3.org/2002/07/owl#> SELECT ?brand WHERE { :strawberry :hasBrand ?directBrand . ?directBrand owl:sameAs* ?brand . }
这里的owl:sameAs*表示零或多步的等价关联,既会返回显式的:driscolls,也会返回通过owl:sameAs绑定的:ispc。
方法二:调整GraphDB推理规则集
如果想依赖GraphDB自动推理返回隐式结果,需要确保启用的规则集支持owl:sameAs的等价替换:
- 进入GraphDB仓库的配置页面,切换到推理选项卡
- 选择包含OWL推理能力的规则集,比如
OWL-RL或OWL-Horst(基础RDFS规则集不处理owl:sameAs的等价展开) - 保存配置后重新执行原查询,就能自动返回两个品牌
自定义规则集补充
如果使用自定义规则集,需要添加以下规则来支持owl:sameAs的对称性、传递性及替换逻辑:
Id: sameAsSymmetric a owl:sameAs b ------------------- b owl:sameAs a Id: sameAsTransitive a owl:sameAs b b owl:sameAs c ------------------- a owl:sameAs c Id: sameAsSubstituteSubject ?s ?p ?o ?s owl:sameAs ?s2 ------------------- ?s2 ?p ?o Id: sameAsSubstituteObject ?s ?p ?o ?o owl:sameAs ?o2 ------------------- ?s ?p ?o2
这些规则会让GraphDB自动将owl:sameAs关联的节点替换到三元组中,从而在查询时返回隐式结果。
内容的提问来源于stack exchange,提问作者Stratos K
相关产品推荐
相关产品推荐

