SPARQL: Récupère toutes les entités des sous-classes d'une certaine classe
J'ai pour obtenir toutes les instances d'une classe C et sous-classes (directe ou indirecte) de C, en SPARQL.
Je peux obtenir tous les sous-classes directes de C de cette façon:
SELECT ?entity
WHERE {
?subclass rdfs:subClassOf :C .
?entity rdf:type ?subclass .
}
Mais je ne peux pas obtenir le cas d'un sous-sous-classe, et aucune instance de C.
Que je sais (j'ai pré-calculé) toutes les sous-classes (directs et indirects de C), et je peux construire une requête dynamique, est-il possible de créer une requête comme le suivant?
SELECT ?entity
WHERE {
?entity rdf:type in <list>.
}
Merci à tout le monde.
EDIT:
Je viens de résoudre, même si dans un pas de manière élégante.
SELECT ?entity
WHERE {
{ ?entity rdf:type :C }
UNION { ?entity rdf:type :SubClass1 }
UNION { ?entity rdf:type :SubClass2 }
UNION { ?entity rdf:type :SubClass3 }
}
source d'informationauteur auino
Vous devez vous connecter pour publier un commentaire.
Une meilleure solution est d'utiliser la propriété expressions de chemin d'accès SPARQL 1.1
Ce serait réécrit comme:
Basé sur la SPARQL 1.1 spécification la bonne façon de le faire serait:
Sans le support de la propriété des chemins il n'y a aucun moyen d'exprimer les hiérarchies de classe de longueur arbitraire.