Мне нужно получить все экземпляры класса C и подклассов (прямых или косвенных) в C в 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 }
}