如何使用 sparql 在 rdf 中访问 child class 的 parent 属性?

How to access parent properties of a child class in rdf with sparql?

我正在尝试访问 RDF 中 parent class 的 属性 继承。我使用 rdfs 属性 subClassOf.

定义了我的 child class 的实例

使用海龟语法:

ex:myClass1 a owl:class;
           rdfs:range xsd:integer.

ex:myClass2 rdfs:subClassOf ex:myClass1.

# defining instance of my class

ex:instance1 ex:myClass1 1 .

ex:instance2 ex:myClass2 2 .

如果我想访问所有 ex:myClass1 的 属性 ex:属性 和他的 child。我可以承认 ex:myClass2ex:myClass1 并编写此 SPARQL 查询

SELECT ?instance ?value WHERE{
    ?instance ex:myClass1 ?value .
}

获取我定义的两个值?或者 rdfs:subClassOf 没有将 child class 定义为 parent class?[=15 的更具体版本=]

为了补充 Joshua 试图解释的内容,您混合了架构和数据概念。

我认为你应该定义的是(在简化的 RDFS 语法中):

ex:property rdfs:domain ex:myClass1 .
ex:property rdfs:range xsd:integer .

ex:myClass2 rdfs:subClassOf ex:myClass1.

#this may be optional depending on the entailment regime your SPARQL enpoint uses    
ex:myClass1 a owl:class .

# defining instance of my class

ex:instance1 ex:property 1 .
ex:instance2 ex:property 2 .

然后可以查询

SELECT ?instance ?value WHERE{
    ?instance ex:property ?value .
}

根据您的 SPARQL 端点的蕴含机制,通过 ex:property 推断 ex:instance1 和 ex:instance23 至少是 ex:Class1 的实例(如果您想要将其中一个设为 ex:Class2,您必须将三重 ex:instance a ex:Class2 添加到您的商店)