[JAVA] Créer des points de terminaison SPARQL sans serveur AWS (Apache Jena)

Il s'agit du deuxième essai de création d'un point de terminaison SPARQL sans serveur AWS. Le premier est ici.

J'ai essayé de créer un point de terminaison SPARQL dans un environnement sans serveur AWS, mais cela n'a pas fonctionné. https://qiita.com/uedayou/items/bdf7a802e27fe330044e

La dernière fois, j'ai senti que la vitesse de recherche était difficile en raison de la bibliothèque utilisée et qu'elle pouvait être utilisée à des fins limitées. Cette fois, j'ai utilisé Apache Jena, qui a fait ses preuves en tant que magasin RDF.

environnement

Comme la dernière fois, il a la configuration d'AWS Lambda + API Gateway. Apache Jena

en utilisant. Vous pouvez utiliser le fichier RDF directement en plus de la méthode utilisée dans TDB, mais il est recommandé de le convertir en TDB et de l'utiliser en fonction des résultats suivants.

Le code source est disponible ci-dessous. https://github.com/uedayou/jena-sparql-server-aws-serverless

Mesure du temps de recherche des requêtes

Combien de temps faut-il pour rechercher

Nous mesurons environ deux choses. TDB se déploie une fois compressé au format ZIP.

Requête SPARQL

La requête est la même que Dernière fois. L'ensemble de données est le même que Dernière fois [«International Standard Identifier for Libraries and Related Organizations (ISIL)» Trial Version LOD](https: // www. ndl.go.jp/jp/dlib/standards/opendataset/index.html) a été utilisé. Il est mesuré pour chaque ensemble de données créé en ajoutant un par un les fichiers Turtle divisés (les fichiers RDF sont uniquement ceux qui intègrent tous les fichiers).

(1) Obtenu 100 triples

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

(2) Obtenez tous les triples

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

(3) Utilisez filter pour affiner la chaîne de caractères

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, "Tokyo") )
}
limit 10

Résultats TDB

J'ai pu rechercher assez rapidement en utilisant TDB. Cependant, AWS Lambda prend plus de temps pour initialiser et décompresser le TDB compressé au format ZIP lorsqu'un conteneur est créé (une fois qu'il est créé, le conteneur sera réutilisé pendant un certain temps), donc à ce moment-là (par exemple) Il a fallu environ 4 secondes pour le fichier utilisé cette fois, car il a fallu beaucoup de temps pour les traiter au premier démarrage (quand il n'a pas été exécuté pendant un certain temps et que le conteneur a été détruit). Vous trouverez ci-dessous l'heure à laquelle le conteneur a déjà été créé. Lorsque le conteneur n'est pas créé, cela prendra +4 secondes pour le temps suivant. La dernière fois a pris plus de 10 secondes pour certaines requêtes, et même des requêtes simples pouvaient parfois expirer et ne pas obtenir les résultats de la recherche. Même lorsque la création de conteneurs TDB est requise, le résultat peut être obtenu dans les 5 secondes, et je pense qu'il n'expirera pas à moins qu'il s'agisse d'une requête très compliquée.

Nombre de triples (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

Résultats du fichier RDF

L'utilisation directe du fichier RDF a pris plus de temps que TDB. Ce qui suit est l'heure à laquelle le conteneur est créé comme TDB, mais l'initialisation a pris plus de temps que TDB (environ 7 secondes). Bien que TDB inclut également le traitement de décompression ZIP, il n'est pas clair jusqu'à ce que j'étudie que l'utilisation d'un fichier RDF prend plus de temps à s'initialiser, mais j'ai pensé qu'il serait préférable d'utiliser TDB même après l'avoir soustrait.

Nombre de triples (1) (2) (3)
160,491 1587ms 1664ms 1215ms

Résumé

Je pense personnellement que la version sans serveur AWS du point de terminaison SPARQL qui utilise Apache Jena a des performances satisfaisantes, je voudrais donc l'utiliser de différentes manières à l'avenir.

Immédiatement, le point de terminaison SPARQL du site fournisseur de données ouvertes ferroviaires Railway Station LOD est converti en version Apache Jena. Cela a changé.

Si vous souhaitez l'essayer, veuillez vous référer à l'article suivant.

Expérimentation du point final SPARQL de la gare LOD https://qiita.com/uedayou/items/3ba823c5d3bede12af9c

Recommended Posts

Créer des points de terminaison SPARQL sans serveur AWS (Apache Jena)
Créer un serveur Minecraft sur AWS