SPARQL: Holen Sie sich alle Personen der Unterklassen einer bestimmten Klasse
Habe ich um all die Instanzen einer Klasse C und Unterklassen (direkt oder indirekt) von C, in SPARQL.
Kann ich alles nur die direkten Unterklassen von C, die in dieser Weise:
SELECT ?entity
WHERE {
?subclass rdfs:subClassOf :C .
?entity rdf:type ?subclass .
}
Aber ich kann nicht Holen Sie sich die Instanzen von einem indirekten Unterklasse und weder eine Instanz von C.
Als ich weiß (hab ich berechnet) alle Unterklassen (direkte und indirekte C), und ich bauen kann, die eine dynamische Abfrage, ist es möglich, erstellen Sie eine Abfrage wie die folgende?
SELECT ?entity
WHERE {
?entity rdf:type in <list>.
}
Vielen Dank an alle.
EDIT:
Eben habe ich es gelöst, wenn auch auf eine nicht elegante Art und Weise.
SELECT ?entity
WHERE {
{ ?entity rdf:type :C }
UNION { ?entity rdf:type :SubClass1 }
UNION { ?entity rdf:type :SubClass2 }
UNION { ?entity rdf:type :SubClass3 }
}
InformationsquelleAutor auino | 2012-02-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine bessere Lösung ist die Verwendung der Eigenschaft der Pfad-Ausdrücken in SPARQL 1.1
Diese würde wie folgt umgeschrieben werden:
Vielen Dank, es hat funktioniert!!
Als ein update, während es noch in den älteren triple-stores, property-Pfade in SPARQL 1.1, so dass jede triple-stores, unterstützen den aktuellen standard unterstützen property-Pfade.
InformationsquelleAutor William Greenly
Basiert auf der SPARQL 1.1-Spezifikation der richtige Weg, es zu tun wäre:
Ohne Unterstützung der Eigenschaft Pfade es gibt keine Art und Weise auszudrücken, Klasse Hierarchien beliebiger Länge.
InformationsquelleAutor Robin Keskisarkka