Tengo que obtener todas las instancias de una clase C y subclases (directas o indirectas) de C, en SPARQL.SPARQL: Obtenga todas las entidades de subclases de una cierta clase
yo puede conseguir todas las subclases directas de C de esta manera:
SELECT ?entity
WHERE {
?subclass rdfs:subClassOf :C .
?entity rdf:type ?subclass .
}
pero no puedo obtener las instancias de una subclase indirecta y tampoco ninguna instancia de C.
Como sé (He precalculado) todas las subclases (directas e indirectas de C), y puedo construir una consulta dinámica, ¿es posible crear una consulta como la siguiente?
SELECT ?entity
WHERE {
?entity rdf:type in <list>.
}
Gracias a todos.
EDIT:
acabo lo resolvió, aunque de manera no elegante.
SELECT ?entity
WHERE {
{ ?entity rdf:type :C }
UNION { ?entity rdf:type :SubClass1 }
UNION { ?entity rdf:type :SubClass2 }
UNION { ?entity rdf:type :SubClass3 }
}
Dependiendo de la triple tienda esto podría funcionar o no. No todas las tiendas triples implementan expresiones de rutas de propiedad. –
¡Gracias, funcionó! – auino
@msalvadores Como una actualización, aunque todavía pueden existir tiendas triples más antiguas, las rutas de acceso de propiedad se convirtieron en SPARQL 1.1, por lo que cualquier tienda triple que admita el estándar actual admitirá rutas de propiedad. –