Я пытаюсь получить доступ к свойству, унаследованному родительского класса в RDF. Я определяю экземпляр моего дочернего класса, используя свойство rdfs subClassOf.Как получить доступ к родительским свойствам дочернего класса в rdf с sparql?
С синтаксисом черепахи:
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 .
Если я хочу, чтобы получить доступ к свойству ех: недвижимость всех экс: MyClass1 и его ребенка. Могу ли я признать, что например: myClass2 является например: 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: диапазон 1.' вместо 'ex: instance1 ex: myClass1 1 .'? И я не могу объявить 'ex: instance2 a ex: myClass2; rdfs: диапазон 2.', потому что свойство, использующее _rdfs: range_, не принадлежит _ex: myClass2_? –
'rdfs: range' используется для объявления * диапазона * свойства. Например, у вас может быть: ex: Person a owl: Class. ex: hasMother aww: ObjectProperty. ex: hasMother rdfs: диапазон ex: Person'. Человек - это класс. hasMother - свойство, а диапазон hasMother - Person; то есть значения свойства hasMother должны быть экземплярами Person. –