Я должен получить все экземпляры класса C и подклассы (прямые или косвенные) C, в SPARQL.SPARQL: получить все сущности подклассов определенного класса
я могу получить все прямые подклассы C таким образом:
SELECT ?entity
WHERE {
?subclass rdfs:subClassOf :C .
?entity rdf:type ?subclass .
}
Но я не могу получить экземпляры косвенного подкласса и ни любой экземпляр C.
Как я знаю (Я предварительно вычислил их) все подклассы (прямые и косвенные от C), и я могу построить динамический запрос, возможно ли построить запрос, например следующий?
SELECT ?entity
WHERE {
?entity rdf:type in <list>.
}
Спасибо всем.
EDIT:
Я просто решил его, даже если в не элегантно.
SELECT ?entity
WHERE {
{ ?entity rdf:type :C }
UNION { ?entity rdf:type :SubClass1 }
UNION { ?entity rdf:type :SubClass2 }
UNION { ?entity rdf:type :SubClass3 }
}
В зависимости от тройного магазина это может работать или не работать. Не все тройные хранилища реализуют выражения путей свойств. –
Спасибо, это сработало !! – auino
@msalvadores В качестве обновления, в то время как все еще могут быть более старые трехместные магазины, пути свойств превратились в SPARQL 1.1, поэтому любые тройные магазины, поддерживающие текущий стандарт, будут поддерживать пути свойств. –