我试图访问RDF中父类继承的属性。我使用rdfs属性 subClassOf 定义了我的子类的实例。
使用乌龟语法:
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:property 属性。我是否可以承认 ex:myClass2 是 ex:myClass1 并编写此SPARQL查询
SELECT ?instance ?value WHERE{
?instance ex:myClass1 ?value .
}
获取我定义的两个值?或者 rdfs:subClassOf 没有将子类定义为父类的更具体的版本?
答案 0 :(得分:0)
为了补充约书亚试图解释的内容,你正在混合模式和数据概念。
我认为您应该定义的是(在简化的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:属性推断ex:instance1和ex:instance23至少是ex:Class1的实例(如果你想使其中一个ex:Class2)您必须将三重ex:instance a ex:Class2
添加到商店