2016-04-25 17 views
1

Ich schreibe eine Anwendung mit dem Apache Jena Framework. Damit kann ich alles machen (einfügen, aktualisieren, auswählen). Aber ich kann mir nicht vorstellen, wie man leere Knoten mit einer INSERT Abfrage richtig einfügt.Was ist der richtige universelle Weg zum Einfügen von leeren Knoten mit SPARQL

Gibt es dafür einen Ansatz (der mit jedem Endpunkt funktioniert)? Ich weiß, dass SPARQL 1.1 einige Funktionen eingeführt hat, aber dies scheint mit einem Virtuoso-Endpunkt nicht zu funktionieren.

+0

Es kann Helfen Sie dabei, an bNodes (leere Knoten, unbenannte Knoten) als Pronomen zu denken - zu verwenden, wenn Sie nicht den richtigen Namen einer Entität kennen, die existiert und auf die Sie verweisen müssen, ob Sie sie beschreiben oder beschreiben möchten ent ities. Wenn andere Sie beraten, hilft es zu wissen, was Sie versucht haben, welche Ergebnisse Sie erhalten haben und wie diese von dem abweichen, was Sie erwartet haben. – TallTed

+0

Wenn es tatsächlich einen Virtuoso-spezifischen Aspekt gibt, werden solche Fragen oft schneller und genauer durch Virtuoso-fokussierte Foren wie die [Virtuoso Users Mailingliste] beantwortet (https://lists.sourceforge.net/lists/listinfo/). Virtuose-Benutzer), das [OpenLink Support Forum] (http://boards.openlinksw.com/support/index.php) oder einen [OpenLink Support Case] ​​(http://support.openlinksw.com/support/online -support.vsp). (ObDisclaimer: Ich arbeite für OpenLink Software, Hersteller von Virtuoso.) – TallTed

Antwort

1

Es gibt ein paar Syntaxen zu verwenden. Angenommen, Sie möchten einen Bnode vom Typ :Person zu einer Objekteigenschaft namens child hinzufügen. Hier ist eine Möglichkeit:

?s :child [a :Person] . 

Und ein anderer:

?s :child [] . 
[] a :Person . 

Und die _:bn Notation ist ziemlich universell, und nützlich, wenn es mehr als eine bnode in einem Diagramm sind:

?s :child _:b0 . 
_:b0 a :Person . 
+0

"nützlich, wenn mehr als ein Bnode in einem Graphen vorhanden ist:" Ich denke, es ist am nützlichsten, wenn Sie mehrfach auf einen Bnode verweisen müssen. Z.B,. ': s1: p _: b0. : s2: p _: b0 '. –

+0

Vielen Dank für diese Antwort. Es machte meine Vision von bNodes klarer. Und ich habe auch festgestellt, dass es nicht möglich ist, bNodes aus einer Tabelle mit zeilenweisen INSERT DATA-Abfragen einzufügen. (Und die Verbindung zwischen den bNodes in der Tabelle beibehalten). Ich denke also, es wäre klüger, einen Weg zu finden, ein lokales Modell direkt in den entfernten Endpunkt einzufügen. – oole