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 |         |

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...