[JAVA] Erstellen Sie SPARQL-Endpunkte ohne AWS-Server (Apache Jena)

Dies ist der zweite Versuch, einen SPARQL-Endpunkt ohne AWS-Server zu erstellen. Der erste ist hier.

Ich habe versucht, einen SPARQL-Endpunkt in einer AWS-Umgebung ohne Server zu erstellen, aber es hat nicht funktioniert. https://qiita.com/uedayou/items/bdf7a802e27fe330044e

Beim letzten Mal hatte ich das Gefühl, dass die Suchgeschwindigkeit aufgrund der verwendeten Bibliothek schwierig war und für begrenzte Zwecke verwendet werden konnte. Dieses Mal habe ich Apache Jena verwendet, das sich als RDF-Store bewährt hat.

Umgebung

Wie beim letzten Mal hat es die Konfiguration von AWS Lambda + API Gateway. Apache Jena

mit. Sie können die RDF-Datei direkt zusätzlich zu der in TDB verwendeten Methode verwenden. Es wird jedoch empfohlen, sie in TDB zu konvertieren und basierend auf den folgenden Ergebnissen zu verwenden.

Der Quellcode ist unten verfügbar. https://github.com/uedayou/jena-sparql-server-aws-serverless

Messung der Suchzeit abfragen

Wie lange dauert die Suche?

Wir messen zwei Dinge. TDB wird nach der ZIP-Komprimierung bereitgestellt.

SPARQL-Abfrage

Die Abfrage ist dieselbe wie Letztes Mal. Der Datensatz ist derselbe wie Letztes Mal ["International Standard Identifier for Libraries and Related Organizations (ISIL)" - Testversion LOD](https: // www. ndl.go.jp/jp/dlib/standards/opendataset/index.html) wurde verwendet. Sie wird für jeden Datensatz gemessen, der durch einzelnes Hinzufügen geteilter Turtle-Dateien erstellt wird (RDF-Dateien sind nur solche, die alle Dateien integrieren).

(1) 100 Tripel erhalten

select * where {?s ?p ?o} limit 100

(2) Holen Sie sich alle Tripel

select (count(*) as ?count) where {?s ?p ?o}

(3) Verwenden Sie filter, um die Zeichenfolge einzugrenzen

prefix schema: <http://schema.org/>
prefix org:   <http://www.w3.org/ns/org#>
prefix dbpedia: <http://dbpedia.org/ontology/>

select * where {
  ?uri dbpedia:originalName ?name;
  org:hasSite/org:siteAddress/schema:addressRegion ?pref.
  filter( regex(?pref, "Tokio") )
}
limit 10

TDB-Ergebnisse

Ich konnte mit TDB ziemlich schnell suchen. AWS Lambda benötigt jedoch zusätzliche Zeit, um den ZIP-komprimierten TDB zu initialisieren und zu dekomprimieren, wenn ein Container erstellt wird (sobald er erstellt wurde, wird der Container für eine Weile wiederverwendet), also zu diesem Zeitpunkt (zum Beispiel). Die diesmal verwendete Datei dauerte ungefähr 4 Sekunden, da die Verarbeitung beim ersten Start lange dauerte (wenn sie eine Weile nicht ausgeführt wurde und der Container zerstört wurde). Unten ist der Zeitpunkt angegeben, zu dem der Container bereits erstellt wurde. Wenn der Container nicht erstellt wird, dauert es für die folgende Zeit +4 Sekunden. Letztes Mal dauerte bei einigen Abfragen mehr als 10 Sekunden, und selbst bei einfachen Abfragen trat manchmal eine Zeitüberschreitung auf und es wurden keine Suchergebnisse angezeigt. Selbst wenn die Erstellung eines TDB-Containers erforderlich ist, kann das Ergebnis innerhalb von 5 Sekunden abgerufen werden, und ich denke, dass es keine Zeitüberschreitung gibt, es sei denn, es handelt sich um eine sehr komplizierte Abfrage.

Anzahl der Tripel (1) (2) (3)
21,788 242ms 494ms 159ms
42,585 254ms 531ms 102ms
63,448 148ms 502ms 67ms
84,587 166ms 504ms 100ms
104,826 154ms 572ms 85ms
124,718 176ms 367ms 112ms
144,669 153ms 583ms 80ms
160,491 141ms 579ms 104ms

Ergebnisse der RDF-Datei

Die direkte Verwendung der RDF-Datei dauerte länger als die Verwendung von TDB. Im Folgenden wird der Container wie TDB erstellt, die Initialisierung dauerte jedoch länger als bei TDB (ca. 7 Sekunden). Obwohl TDB auch die ZIP-Dekomprimierungsverarbeitung enthält, ist erst klar, dass die Initialisierung mit einer RDF-Datei länger dauert. Ich dachte jedoch, dass es besser wäre, TDB auch nach dem Subtrahieren zu verwenden.

Anzahl der Tripel (1) (2) (3)
160,491 1587ms 1664ms 1215ms

Zusammenfassung

Ich persönlich denke, dass die AWS-Version ohne Server des SPARQL-Endpunkts, die Apache Jena verwendet, eine zufriedenstellende Leistung aufweist. Daher möchte ich sie in Zukunft auf verschiedene Arten verwenden.

Der SPARQL-Endpunkt der Website zur Bereitstellung offener Daten Railway Station LOD ist jetzt die Apache Jena-Version es hat sich geändert.

Wenn Sie es ausprobieren möchten, lesen Sie bitte den folgenden Artikel.

Experimentell freigegeben der SPARQL-Endpunkt des Bahnhofs LOD https://qiita.com/uedayou/items/3ba823c5d3bede12af9c

Recommended Posts

Erstellen Sie SPARQL-Endpunkte ohne AWS-Server (Apache Jena)
Erstellen Sie einen Minecraft-Server auf AWS