Filtering SPARQL Ergebnisse
-
22-07-2019 - |
Frage
Ich habe folgendes Beispiel verdreifacht
r1 -> property -> resourceA
r1 -> property -> resourceB
r1 -> property -> resourceC
resourceA -> name -> word1
resourceB -> name -> word2
resourceC -> name -> word4
r2 -> property -> resourceD
r2 -> property -> resourceE
r2 -> property -> resourceF
resourceD -> name -> word1
resourceE -> name -> word2
resourceF -> name -> word3
r3 -> property -> resourceG
r3 -> property -> resourceH
r3 -> property -> resourceI
resourceG -> name -> word5
resourceH -> name -> word6
resourceI -> name -> word7
Als Parameter verwenden i word1 und word2. Ich möchte inkl alle Wörter erhalten. word1 und word2, das Auftreten mit dem word1 und word2 zusammen.
Das Ergebnis aus diesem Beispiel muss sein:
word1
word2
word3
word4
Ich habe wirklich keine Ahnung, wie dies zu machen: (
Lösung
Unter der Annahme, das Prädikat name
ist das gleiche für alle word
s und es gibt keine anderen Tripel mit dem name
Prädikat:
SELECT DISTINCT ?w {
?s <name> ?w
}
ORDER BY ?w
Herausgegeben nach der Frage bearbeitet wurde:
SELECT DISTINCT ?w { # select each word only once
# match three properties under the same resource
?r <property> ?p1, ?p2, ?p3.
# two of the properties must have names "word1" and "word2"
?p1 <name> "word1" .
?p2 <name> "word2" .
# third property name may be anything, including "word1" and "word2"
?p3 <name> ?w .
}
ORDER BY ?w # return words in sorted order
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow