Aktualisiere RDF im TripleStore

8

Ich experimentiere mit Sesam und Virtuoso Tripelstores. Im Moment benutze ich die Sesame Java API, um RDF Daten zu beiden Tripelstores hinzuzufügen.

Meine RDF-Daten repräsentieren verschiedene Dinge wie Videodaten, Benutzerdaten usw. Im Moment kann ich einen RDF eines Videos (Titel, Beschreibung, Ort usw.) zum TripleStore hinzufügen

Aber wie kann ich eine RDF im Laden aktualisieren?

Wenn ich zum Beispiel die REST-Schnittstelle von Sesam verwende und eine PUT-Anfrage mit der aktualisierten RDF-Datei mache, wird zuerst alles im Store entfernt.

Wenn ich POST mit den aktualisierten Daten verwende (zum Beispiel hat sich der Titel des Videos geändert), werden beide Titel (alt und neu) gespeichert.

Wie arbeitest du mit Tripelstores? Vielleicht vermisse ich hier etwas Wesentliches.

BEARBEITEN:

Ich verwende jetzt Context in Sesame und Graphs in Virtuoso für jeden RDF-Eintrag. Auf diese Weise kann ich den Kontext zuerst löschen und neu hinzufügen. Da ich die Sesame-API für beide Tripelstores verwende (wir wissen immer noch nicht, welche wir verwenden werden), sieht der Code genau gleich aus.

%Vor%

Danke für die Hilfe

    
superbly 20.06.2011, 11:54
quelle

2 Antworten

4

Ich gehe davon aus, dass Sie mit SPARQL arbeiten. Wenn Sie nicht, dann sollten Sie wahrscheinlich: -)

Viele Triple-Stores unterstützen das SPARQL-Update , eine Sprache zum Ändern von RDF-Tripeln in einem SPARQL-Store. Es ist wie SQL INSERT , UPDATE , DELETE und so weiter. Ich bin mir nicht sicher, ob Sesame es noch unterstützt - SPARQL Update ist immer noch eine sehr neue Spezifikation, die noch nicht ganz fertig ist.

Eine weitere nützliche Sache, die Sie beachten sollten, insbesondere wenn Sie auf REST-basierende Weise arbeiten möchten, ist Benannte Diagramme . Dies ermöglicht die Verwaltung von Tripel in verschiedenen Graphen, so dass Sie Daten getrennt halten können. Sie können beispielsweise die Tripel für jedes Video in einem separaten benannten Diagramm beibehalten und dann nur das benannte Diagramm für eine PUT-Anforderung aktualisieren. Sie können SPARQL weiterhin verwenden, um den gesamten Speicher über alle benannten Diagramme abzufragen. Wiederum bin ich mir nicht ganz sicher, ob Sesames REST-API Zugriff auf benannte Diagramme bietet. (Ich bin mir ziemlich sicher, dass das Java-API tut; ich denke, sie nennen es etwas anderes. Kontexte?)

    
cygri 20.06.2011, 12:10
quelle
2

Nehmen Sie also Ihr konkretes Beispiel für einen Titel, vorausgesetzt, Sie haben das Original-RDF so:

%Vor%

Und Sie möchten es so ändern, dass es so aussieht:

%Vor%

Wenn Sie POST von Sesame verwenden, werden nur neue Informationen zu einem benannten Diagramm hinzugefügt (Kontext in der Sesam-Terminologie), wichtig es entfernt keine vorhandenen Informationen .

In RDF-Begriffen repräsentieren diese zwei Tripel verschiedene Tatsachen. Sesam (oder irgendein anderer Tripelladen) weiß nicht, dass das 2. Tripel das 1. Triple ersetzen sollte. Dies unterscheidet sich ziemlich von dem traditionellen SQL / relationalen Modell, das Sie vielleicht gewohnt sind, wo Sie eine Eigenschaft aktualisieren würden, RDF hat keine richtige Vorstellung davon, da Sie ein Triple als solches nicht modifizieren können. Sie können entweder neue Tripel hinzufügen oder vorhandene Tripel entfernen.

Um das gewünschte Update-Verhalten zu erhalten, müssen Sie das alte Triple löschen (SESAMES REST API unterstützt HTTP DELETE dafür) und dann das neue Triple hinzufügen, das es ersetzt (verwenden Sie SESAMES POST-Operation wie Sie gerade tun).

Das gleiche gilt für so ziemlich jedes Triple-Geschäft, das Sie verwenden. Wenn Like Cyrgi vorschlägt, dass Sie einen unterstützenden SPARQL-Update-Speicher verwenden, können Sie Folgendes (vorausgesetzt Sie verwenden benannte Diagramme) für den Update-Endpunkt ausführen:

%Vor%     
RobV 20.06.2011 13:47
quelle

Tags und Links