Devo ottenere tutte le istanze di una classe C e sottoclassi (diretta o indiretta) di C, in SPARQL.SPARQL: Ottieni tutte le entità di sottoclassi di una determinata classe
posso ottenere tutte le sottoclassi diretti di C in questo modo:
SELECT ?entity
WHERE {
?subclass rdfs:subClassOf :C .
?entity rdf:type ?subclass .
}
ma non riesco a ottenere le istanze di una sottoclasse indiretta e né qualsiasi istanza di C.
Come so (Li ho pre-calcolati) tutte le sottoclassi (dirette e indirette di C), e posso costruire una query dinamica, è possibile costruire una query come la seguente?
SELECT ?entity
WHERE {
?entity rdf:type in <list>.
}
Grazie a tutti.
EDIT:
Ho appena risolto, anche se in un modo non elegante.
SELECT ?entity
WHERE {
{ ?entity rdf:type :C }
UNION { ?entity rdf:type :SubClass1 }
UNION { ?entity rdf:type :SubClass2 }
UNION { ?entity rdf:type :SubClass3 }
}
A seconda del negozio triplo, questo potrebbe o potrebbe non funzionare. Non tutti i negozi tripli implementano le espressioni dei percorsi di proprietà. –
Grazie, ha funzionato !! – auino
@msalvadores Come aggiornamento, mentre potrebbero esserci ancora vecchi negozi tripli, i percorsi delle proprietà sono passati a SPARQL 1.1, quindi qualsiasi archivio triplo che supporta lo standard corrente supporterà i percorsi delle proprietà. –