Boolean prüft in SPARQL, überprüfen Sie für die Existenz einer Anweisung
Sagen wir, ich habe einen triple-store voll von video-Metadaten. Ein video kann eine beliebige Auswahl von vordefinierten tags, so wie hier:
v1 ex:hasTag A.
v2 ex:hasTag B.
v3 ex:hasTag A;
ex:hasTag B.
Also aus Gründen der diesem Beispiel, es sind nur die beiden vordefinierten tags A
und B
.
Nun möchte ich einen überblick zu bekommen, welches video hat die tags befestigt, die in eine matrix wie diese (oder ähnliche):
A B
v1 true false
v2 false true
v3 true true
Aber ich weiß nicht, wie Sie diese erreichen. Zunächst bräuchte ich ein boolean zu testen, z.B. so etwas wie isTrue(?video ex:hasTag A)
oder was auch immer es aussieht. Selbst dann, ich weiß nicht, wohin damit. Wenn ich die Vorherige Anweisung in der WHERE-Klausel das Ergebnis der Abfrage enthält nur die videos mit dem tag A
natürlich.
Kommen aus SQL kann ich mir vorstellen, ich brauche für die Verwendung von Unterabfragen in irgendeiner Weise, aber diese scheinen nicht standardisiert werden, im moment. Ich sah auch die - FILTER
Stichwort, aber ich habe nicht das Gefühl, dass ist das, was ich will.
Ich bin derzeit an einem Verlust, aber immer bereit zu lernen. Jede Hilfe ist willkommen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie, beginnend mit etwas wie dieses:
Wird Sie grob, was Sie wollen. Wenn Sie wirklich haben müssen, Boolesche Werte, sondern als einfache Prüfung für ungebundene vals verwenden:
P. S. Unterabfragen sind (sehr knapp, vorgeschlagen, die Empfehlung zum Zeitpunkt des Schreibens) standardisierte SPARQL 1.1.
Unterabfragen sind in SPARQL 1.1 und das ist jetzt eingefroren. Es gibt mehrere vollständige Implementierungen schon.
Sowie verschachtelte SELECT-Unterabfragen, SPARQL 1.1 wurde der EXISTS-und not EXISTS die Funktionen zum testen, ob ein Muster passt oder nicht. Es#'s eine form der Unterabfrage. Sie können es verwenden, in einem FILTER oder, wenn Sie wirklich wollen, um zurückzukehren true/false:
oder auch:
EXISTS(?video ex:hasTag ("A" || "B")}
EXISTS{ ?video ex:hasTag ?X . FILTER (?X IN ("A" , "B"))}