【发布时间】:2015-04-13 11:33:57
【问题描述】:
我正在尝试访问继承自 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 没有将子类定义为父类的更具体的版本?
【问题讨论】:
-
当您编写
?instance ex:MyClass1 ?value时,您使用的是ex:myClass1作为属性。不应该是一堂课吗? RDF 属性和类不像(某些类型的)面向对象编程;属性不属于类,它们也不是继承的。我不确定您所说的ex:instance1 ex:myClass1 1是什么意思。如果你想让 ex:instance1 成为 ex:myClass1 的一个实例,你会说ex:instance1 rdf:type ex:myClass1。 -
@JoshuaTaylor 所以如果我真的明白,我应该写
ex:instance1 a ex:myClass1; rdfs:range 1.而不是ex:instance1 ex:myClass1 1 .?而且我不能声明ex:instance2 a ex:myClass2; rdfs:range 2.,因为使用 rdfs:range 的属性不属于 ex:myClass2? -
rdfs:range用于声明属性的范围。例如,您可能有:ex:Person a owl:Class . ex:hasMother a owl:ObjectProperty . ex:hasMother rdfs:range ex:Person。人是一个类。 hasMother是一个属性,hasMother的范围是Person;即,hasMother 属性的值应该是 Person 的实例。
标签: inheritance rdf sparql semantic-web rdfs