15 Stimmen

Versionierter RDF-Speicher

Versuchen wir es anders zu formulieren:

Ich bin auf der Suche nach einem robusten RDF-Store oder einer Bibliothek mit den folgenden Funktionen:

  • Benannte Graphen oder eine andere Form der Reifizierung.
  • Versionstracking (wahrscheinlich auf der Ebene benannter Graphen).
  • Datenschutz zwischen Benutzergruppen, entweder auf der Ebene des benannten Graphen oder des Tripels.
  • Menschlich lesbare Daten Ein- und Ausgabe, z.B. TriG Parser und Serialisierer.

Ich habe mit Jena, Sesame, Boca, RDFLib, Redland und ein oder zwei anderen vor einiger Zeit gespielt, aber jedes hatte seine Probleme. Haben sich in den oben genannten Bereichen kürzlich Verbesserungen ergeben? Kann etwas anderes das tun, was ich will, oder ist RDF noch nicht bereit für den Einsatz?


Nach weiteren Recherchen zu diesem Thema habe ich festgestellt, dass:

  • Jena, keine weiteren Informationen
  • Sesame, keine weiteren Informationen
  • Boca scheint nicht mehr gewartet zu werden und scheint nur für DB2 wirklich entwickelt zu sein. OpenAnzo, ein Open-Source-Fork, scheint vielversprechender zu sein.
  • RDFLib, keine weiteren Informationen
  • Redland, keine weiteren Informationen
  • Talis Platform scheint Änderungssätze zu unterstützen (Wikiseite und Verweis in _Kniblet Tutorial Part 5_), aber es handelt sich um einen reinen Hosted-Service. Trotzdem könnte ich mir das noch näher ansehen.
  • SemVersion klang vielversprechend, scheint jedoch veraltet zu sein.

2voto

Simon Gibbs Punkte 4627

Talis ist die offensichtliche Wahl, aber Datenschutz könnte ein Problem sein oder zumindest als solches wahrgenommen werden, da es sich um ein SaaS-Angebot handelt. Ich sage offensichtlich, weil die drei fett gedruckten Funktionen in Ihrer Liste Kernfunktionen ihrer Plattform sind, soweit ich mich erinnere.

Sie haben keine Funktionenliste als solche - was es schwierig macht, diese Antwort zu unterstützen, aber sie sagen, dass Daten individuell gesichert werden können. Ich vermute, Sie könnten - notfalls - sich für jeden Ihrer eigenen Benutzer separat bei einem separaten Speicher anmelden.

Menscheneingaben sind oft am besten durch das Schreiben benutzerdefinierter Schnittstellen für jede Benutzeraufgabe unterstützt, also sollten Sie bereit sein, das zu tun, wenn die Erfordernisse es verlangen.

In Bezug auf die Einsatzbereitschaft zur Hauptsendezeit würde ich sagen ja für einige Anwendungen, aber ansonsten "nicht ganz". In erster Linie muss die Community sich mit vorhandenen Entwicklertools integrieren und gute Dokumentation für "normale" Entwickler schreiben - wahrscheinlich OOP-Entwickler, die Java, .NET und Ruby/Groovy verwenden - und dann wird es meiner Meinung nach ins Rollen kommen.

Siehe auch Temporal Scope für RDF-Tripel

2voto

castagna Punkte 21

Von: http://www.semanticoverflow.com/questions/453/how-to-implement-semantic-data-versioning/748#748


Persönlich mag ich den pragmatischen Ansatz, den Freebase gewählt hat.

Durchsuchen und Bearbeiten von Ansichten für Menschen:

Das hier offengelegte Datenmodell:

Genau genommen handelt es sich nicht um RDF (es ist wahrscheinlich ein Überbegriff davon), aber ein Teil davon kann als RDF dargestellt werden:

Da es sich um eine Community-Website handelt, müssen sie nicht nur verfolgen, wer was gesagt hat, wann... sondern wahrscheinlich auch die Geschichte aufzeichnen (nie etwas löschen):

Zusammenfassend würde ich das Problem ähnlich pragmatisch angehen. Soweit ich weiß, gibt es keine Lösung, die sofort funktioniert. Aber du könntest einen "Tuple"-Speicher verwenden (3 oder 4 sind nicht ausreichend, um die Geschichte bis zur feinsten Granularität aufzubewahren (d.h. Tripel|Quadrate)).

Ich würde den TDB-Code als Bibliothek verwenden (da er dir B+Bäume und viele nützliche Funktionen bietet, die du benötigst) und ich würde ein Datenmodell verwenden, das es mir erlaubt: Quadrate zu zählen, einem Quadrat eine Besitzrechten zuzuweisen, einen Zeitstempel und vorherige/nächste Quadrate (falls vorhanden) zuzuweisen:

[ id | g | s | p | o | Benutzer | Zeitstempel | vorherig | nächstes ]

Wo:

   id - lang (eindeutige Identifikator, gleich (g,s,p,o) haben verschiedene id...
        viel Platz, aber du kannst Quadrate zählen... und wenn du eine
        Community-Website hast (wie diese hier), dann ist das Zählen von Dingen wichtig.
    g - URI (oder Blankknoten?|abwesend (d.h. Standardgraph))
    s - URI|Blankknoten
    p - URI
    o - URI|Blankknoten|Literal
Benutzer - URI

Zeitstempel - wann das Quadrat erstellt wurde vorherig - id des vorherigen Quadrats (falls vorhanden) nächstes - id des nächsten Quadrats (falls vorhanden)

Dann musst du darüber nachdenken, welche Indizes du benötigst, und das hängt davon ab, wie du deine Daten öffentlich machen und darauf zugreifen möchtest.

Du brauchst nicht alle deine internen Strukturen/Indizes für externe Benutzer/Personen/Applikationen zu öffentlich zu machen. Und wenn RDF-Vokabulare oder Ontologien zur Darstellung von Versionierung usw. entstehen, kannst du deine Daten schnell damit öffentlich machen (wenn du willst).

Sei gewarnt, das ist keine gängige Praxis und wenn du es mit deinen "semantischen Web-Brillen" betrachtest, ist es wahrscheinlich falsch, schlecht usw. Aber ich teile die Idee, weil ich glaube, dass sie nicht schädlich ist und eine Lösung für deine Frage bietet (es wird langsamer sein und mehr Platz verbrauchen als ein Quad-Store), ein Teil davon kann im semantischen Web als RDF/LinkedData dargestellt werden.

Meine 2 (ketzerischen) Cent.

1voto

wikier Punkte 2385

LMF kommt mit einem Versionierungsmodul: http://code.google.com/p/lmf/wiki/ModuleVersioning

Das Linked Media Framework ist eine einfach einzurichtende Serveranwendung, die in JavaEE entwickelt wurde und Kern-Semantic-Web-Technologien bündelt, um viele fortschrittliche Dienste anzubieten.

0voto

Edd Punkte 166

Werfen Sie einen Blick darauf, ob die RDF-Unterstützung von Virtuoso Ihren Anforderungen entspricht. Es scheint, als ob es ziemlich weit gehen könnte und es spielt auch gut mit XML und Web-Services zusammen. Es gibt eine kommerzielle und eine unter GPL lizenzierte Version.

0voto

Stephen Punkte 1195

Mulgara/Fedora-Commons könnte passen. Ich glaube, dass Datenschutz derzeit ein wichtiges Projekt ist, und ich weiß, dass es die Versionierung unterstützt, aber es könnte zu viel sein, da es auch ein Objektspeicher ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X