如何解决sparql的直接答案为graphdb选择等效类的查询?
我在Protege中将一个类 EquivClass 定义为(hasObjProp一些ClassA)和(has_data_prop恰好是1 rdfs:Literal)
是否有某种形式的GraphDB 9.4 SPARQL查询来获得对等价类选择查询的“直接”答案,而不必显式收集和遍历所有组成的空白节点?基本上,我正在寻找捷径。我不是要获得等效类的实例,而只是一次获得类定义本身。我已经尝试寻找答案,但是我不清楚有关答案的确切含义。
我想得到类似的东西
(hasObjProp一些ClassA)和(has_data_prop恰好是1 rdfs:Literal)
作为对 EquivClass 上SELECT查询的回答。如果答案是“不可能”,那就足够了。我可以自己编写具有必要属性的空白节点遍历。
谢谢!
文件是-
Ontology imported into GraphDB: tester.owl
-https://pastebin.com/92K7dKRZ
SELECT of all triples from GraphDB *excluding* inferred triples: tester-graphdb-sparql-select-all-excl-inferred.tsv
-https://pastebin.com/fYdG37v5
SELECT of all triples from GraphDB *including* inferred triples: tester-graphdb-sparql-select-all-incl-inferred.tsv
-https://pastebin.com/vvqPH1FZ
添加了示例查询以响应@UninformedUser。例如,我使用“ select *”,但实际上我对“最终结果”感兴趣,即?fp,?fo,?rop,?roo。本质上,我正在寻找比以下内容更简单,更简洁的内容。我发布的示例仅具有一个交集(“ and”子句)。在我的现实世界中,有多个带有不同数量的“和”子句的等价类。
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-Syntax-ns#>
PREFIX : <http://www.semanticweb.org/ontologies/2020/9/tester#>
select * where {
:EquivClass owl:equivalentClass ?bneq .
?bneq ?p ?bnhead .
?bnhead rdf:first ?first .
?first ?fp ?fo .
?bn3 rdf:rest ?rest .
?rest ?rp ?ro .
?ro ?rop ?roo .
filter(?bn3 != owl:Class && ?ro!=rdf:nil)
}
解决方法
您可以使用属性路径展开列表:
prefix : <http://www.semanticweb.org/ontologies/2020/9/tester#>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select * {
:EquivClass owl:equivalentClass/owl:intersectionOf/rdf:rest*/rdf:first ?restr.
?restr a owl:Restriction .
optional {?restr owl:onProperty ?prop}
optional {?restr owl:cardinality ?cardinality}
optional {?restr owl:someValuesFrom ?class}
}
返回:
| | restr | prop | cardinality | class |
| 1 | _:node3 | :hasObjProp | | :ClassA |
| 2 | _:node5 | :has_data_prop | "1" ^^xsd:nonNegativeInteger | |
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。