Ich habe eine Liste von Knoten und ich möchte die Tripel mit allen Beziehungen zwischen diesen Knoten abrufen.SPARQL Abfrage mit einer großen Anzahl von Werten innerhalb 'Werte' Block
Das ist, was ich bisher getan habe:
PREFIX myPrefix: <http://example.org/myPrefix/>
SELECT ?a ?relation ?b
WHERE{
values ?a { myPrefix:id_00083184 myPrefix:id_00083187
myPrefix:id_00083189 myPrefix:id_00083182
myPrefix:id_09463313 myPrefix:id_00000790
myPrefix:id_00073965 myPrefix:id_00073966
myPrefix:id_00016990 myPrefix:id_08380001
myPrefix:id_00019131 myPrefix:id_03739215
myPrefix:id_00019129 myPrefix:id_00034482
myPrefix:id_00098617
}
values ?b { myPrefix:id_00083184 myPrefix:id_00083187
myPrefix:id_00083189 myPrefix:id_00083182
myPrefix:id_09463313 myPrefix:id_00000790
myPrefix:id_00073965 myPrefix:id_00073966
myPrefix:id_00016990 myPrefix:id_08380001
myPrefix:id_00019131 myPrefix:id_03739215
myPrefix:id_00019129 myPrefix:id_00034482
myPrefix:id_00098617
}
?a ?relation ?b .
}
Damit bekomme ich, was ich will, das heißt, alle Beziehungen zwischen den Knoten auf meiner (extern) Liste; unter Verwendung von values
und Wiederholen der Knoten für ?a
und ?b
. Aber das Problem ist, meine Knotenliste kann sehr groß sein; manchmal kann es bis zu 1000 Knoten haben und das ist nur ein kleiner Fall; und diese Abfrage dauert zu lange, um ausgeführt zu werden.
Gibt es einen besseren Weg, um das zu tun, was ich brauche? Dies ist der einzige Ansatz, den ich gefunden habe, aber ich spreche nicht so gut mit SPARQL, wie kann ich das richtig machen?
PS: Ich bekomme die Knotenliste extern von einer Abfrage aus einer anderen Datenbank und mit Java konstruiere ich die Abfrage an jeden Knoten in der Liste anhängen.
Das klingt alles sehr nach Höhlenmenschen, aber wie gesagt, ich fange an, SPARQL zu benutzen.
Vielen Dank.
Ich dachte, dass Sie die Leistung der Abfrage verbessern können, da es eher eine sehr einfache Abfrage ist. Wenn du 'n' Knoten hast, ist die Komplexität einer naiven Lösung offensichtlich' O (n²) ' – AKSW
Wie denkst du kann ich die Leistung meiner Abfrage verbessern? Ich meine, das ist meine Frage @AKSW – antorqs
Ehm Entschuldigung, ich meinte "ich glaube nicht". Natürlich, wenn die Beziehung symmetrisch ist, könnten Sie versuchen, sowohl "a r b" als auch "b r a" zu vermeiden, aber das wäre Ihre Aufgabe während der Erstellung der Anfrage. – AKSW