Frage

Ich brauche meine lokalen Hibernate verwalteten Datenspeicher für beharrte Objekte basierend auf Kriterien abgefragt werden, wo die relevanten Daten für die WHERE-Klausel ist in der Linked Open Data Cloud.

Gibt es eine Möglichkeit, eine Hibernate Session als RDF zu lesen? Wenn ja, ich zumindest kann die kombinierte Dataset verwenden, um zu entscheiden, was aus dem Ruhezustand holen Objekte.

Vorzugsweise ist die Lösung würde die Hibernate Session als innen Jena freizulegen, wie ich mit ihm vertraut bin. Darüber hinaus muss ich werde Unterstützung für RDFS Inferenz und SPARQL für den Abruf.

War es hilfreich?

Lösung 2

Hier ist, was ich seit der Veröffentlichung auf die Frage gefunden haben:

Es gibt kein vorhandenes Werkzeug, das speziell die Hibernate Session triplify. Zur Implementierung eines selbst muss ich implementieren Graph vielleicht mit GraphBase als Basis oder StageGenerator. Die Antwort auf die Frage ist daher „nicht da ist“, so ging ich auf zu prüfen, wie es zu implementieren.

Ich muss entscheiden, ob sie triplify Objekte bereits in der Sitzung (das heißt bereits von einem früheren Abfrage zugegriffen wird), die sich auf die Datenbank zugreifen oder beides tun. Wenn ich dabei muß auch in die Datenbank entscheiden, ob ganze Objekte zu laden, die dann auf die Sitzung oder Verwendung Vorsprung angebracht werden, um zusätzliche Daten in die Haufen auf Kosten zusätzlicher Umläufe speichern zu bringen.

Mit Graph ist offensichtlich wesentlich für die Unterstützung Inferenz, obwohl sein langsamer als die Verwendung ARQs

  • Haben Sie HibernateGraph inspizieren die Hibernate PersistenceContext Objekt und Rück Tripel am Kopf eines benutzerdefinierte Iterator.
  • Wenn der Iterator laden Seiten abläuft von Daten aus der Datenbank unter Verwendung der Kriterien Schnittstellen.
  • Für Abfragen mit einem bekannten Prädikat URI Karte die URI auf eine Spalte und Verwendung ein tight Vorsprung, laden sonst die ganzes Objekt und iterieren Getter, Abbilden des Getter-Namen in einem URI.
  • In anderen Fällen Karte mithilfe eines einfachen Schema z.B. http: // root / url / instances / EntityName / id für jedes Subjekt usw.
  • Erstellen Sie ein Hilfsobjekt zu ermöglichen, SPARQL werden mit einem benutzerdefinierten ausgeführt StageGenerator.
  • Der StageGenerator sollte wickelt die gebaut in StageGenerator.
  • In dem benutzerdefinierten Stufe Generator Pass Abfragen auf Graphen andere als ein HibernateGraph die Kette in dem oberen gebaut in StageGenerator.
  • überspringen Auch eine beliebige Menge von Triple-Muster , für die es keine optimiert Lösung beispiels jeder Satz von einem Muster.
  • Wenn eine optimierte Abfrage sein kann laufen erreicht, die entsprechende Kriterien Funktionen und Karte der Ergebnisse Zelle-für-Zelle Tripel als vor.
  • Es gibt einen anderen SPI genannt OpExecutor die dazu beitragen FILTER Auflösung in die Datenbank drücken, damit die Leistung weiter zu verbessern.

    Im Moment habe ich das gemacht habe auf als Nebenprojekt, das ich auch LGPL-Software freigeben kann.

    Andere Tipps

    Da Sie verwenden Jena (und ARQ) Ihre SPARQL Abfrage auszuführen, können Sie eine benutzerdefinierte verwenden könnte? FileManager lösen die Hibernate-Objekte / Graphen (vorausgesetzt, Sie jedes Objekt durch einen Graphen dargestellt werden).

    Jena hat eine kurze HOWTO auf eine FileManager mit Hilfe von Modellen zu finden, und die ARQ RDF-Datensatz tutorial (siehe "Datensätze beschreiben" Abschnitt) können gibt einige Hinweise, wie eine kundenspezifische Zuordnung von graph-URIs (und den Inhalt dieser Graphen als RDF Datensätze) in Ihren bestehenden Hibernate-verwalteten Daten zu tun.

    Eine weitere Option könnte eine benutzerdefinierte werden Erstellen von SDB Layout , die Karten Ihre bestehende Hibernate-Schema. Ich weiß nicht, wie flexibel SDB in dieser Hinsicht ist.

    Lizenziert unter: CC-BY-SA mit Zuschreibung
    Nicht verbunden mit StackOverflow
    scroll top