2013-06-09 4 views
6

Je souhaite télécharger deux ensembles de données ou plus sur mon ordinateur et pouvoir démarrer un point de terminaison SPARQL pour chacun d'entre eux. J'ai essayé Fuseki qui fait partie du projet Iéna. Cependant, il charge tout le jeu de données en mémoire, ce qui n'est pas vraiment souhaitable si j'ai l'intention d'interroger des jeux de données volumineux comme DBpedia étant donné que j'ai l'intention de faire d'autres choses (démarrage de plusieurs points d'extrémité SPARQL). Pour vous donner un avertissement, j'ai l'intention de lier plusieurs ensembles de données en utilisant SILK, en les interrogeant à l'aide d'un système de requête fédéré FEDX. Si vous recommandez un changement des systèmes que j'utilise, ou si vous pouvez me donner un conseil, ce serait génial. Ce sera également une aide précieuse si vous suggérez un ensemble de données pouvant s'intégrer dans ce projet.Interrogation de grands ensembles de données RDF sur la mémoire

Répondre

4

Le Fuseki de Jena peut utiliser TDB comme un mécanisme de stockage, et TDB stocke des choses sur le disque. La documentation TDB sur caching on 32 and 64 bit Java systems traite de la façon dont le contenu du fichier est mappé en mémoire. Je ne crois pas que TDB/Fuseki charge l'intégralité du jeu de données en mémoire; cela n'est tout simplement pas faisable pour les grands ensembles de données, pourtant TDB peut gérer des ensembles de données assez volumineux. Je pense que ce que vous devriez faire est d'utiliser tdbloader pour créer un magasin TDB; alors vous pouvez lui indiquer Fuseki.

Il existe un exemple de configuration d'un magasin TDB dans this answer. Là-dedans, la requête est effectuée avec tdbquery, mais selon la section Running a Fuseki server de la documentation, tout ce que vous devez faire pour commencer Fuseki avec le même magasin TDB est d'utiliser l'option --loc=DIR:

  • --loc=DIR
    Utilisez une base de données TDB existante. Crée un vide s'il n'existe pas.
2

As Joshua said, Fuseki de Jena utilise TDB il peut stocker ontologies très grand sans utiliser beaucoup de ressources. Par exemple, vous pouvez charger le Yago2 taxonomy dans celui-ci et utiliser seulement environ 600 Mo de RAM. Vous n'avez pas besoin de charger Fuseki dans votre projet Java, vous pouvez simplement l'exécuter à partir de la ligne de commande et l'interroger dans votre projet.

le charger à la ligne de commande Windows par ce qui suit:

java -jar c:\your_ontology_directory\fuseki-server.jar \ 
    --file=your_ontology.rdf /your_namespace 

Ensuite, vous pouvez exécuter une requête SPARQL contre toute application GET/POST (même dans votre navigateur):

http://localhost:3030/your_namespace/sparql?query=SELECT * { ?s ?p ?o } 

Les résultats sont, par défaut, renvoyés au format XML.

<?xml version="1.0"?> 
<sparql xmlns="http://www.w3.org/2005/sparql-results#"> 
    <head> 
    <variable name="s"/> 
    <variable name="p"/> 
    <variable name="o"/> 
    </head> 
    <results> 
    <result> 
     <binding name="s"> 
     <uri>http://yago-knowledge/resource/wordnet_gulag_103467887</uri> 
     </binding> 
     <binding name="p"> 
     <uri>http://www.w3.org/2000/01/rdf-schema#subClassOf</uri> 
     </binding> 
     <binding name="o"> 
     <uri>http://yago-knowledge/resource/wordnet_prison_camp_104005912</uri> 
     </binding> 
    </result> 
    … 
Questions connexes