SPARQL: Получить все сущности подклассов определенного класса

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

Спасибо всем.

РЕДАКТИРОВАТЬ:

Я только что решил это, хотя и не изящным способом.

SELECT ?entity
WHERE {
  { ?entity rdf:type :C }
  UNION { ?entity rdf:type :SubClass1 }
  UNION { ?entity rdf:type :SubClass2 }
  UNION { ?entity rdf:type :SubClass3 }
}
11
задан auino 9 February 2012 в 11:21
поделиться