2013-06-09 6 views
6

Ich möchte zwei oder mehr Datensätze auf meinem Rechner herunterladen und jeweils einen SPARQL-Endpunkt starten. Ich habe Fuseki ausprobiert, das Teil des Jena-Projekts ist. Es lädt jedoch das gesamte Dataset in den Speicher, was nicht sehr erwünscht ist, wenn ich große Datasets wie DBpedia abfragen möchte, da ich andere Dinge tun möchte (mehrere SPARQL-Endpunkte starten und ein föderiertes Abfragesystem über sie verwenden).Abfrage von großen RDF-Dateien mit nicht genügend Arbeitsspeicher

Nur um Ihnen einen Überblick zu geben, beabsichtige ich, mehrere Datensätze mit SILK zu verknüpfen und sie mit einem FEDX föderierten Abfragesystem abzufragen. Wenn Sie irgendeine Änderung der Systeme, die ich verwende, empfehlen, oder mir ein Trinkgeld geben können, wäre das großartig. Es ist auch eine große Hilfe, wenn Sie einen Datensatz vorschlagen, der in dieses Projekt passen kann.

Antwort

4

Jena Fuseki kann TDB als Speichermechanismus verwenden, und TDB speichert Dinge auf der Festplatte. Die TDB-Dokumentation unter caching on 32 and 64 bit Java systems beschreibt die Art und Weise, in der die Dateiinhalte dem Speicher zugeordnet werden. Ich glaube nicht, dass TDB/Fuseki den gesamten Datensatz in den Speicher lädt; Für große Datenmengen ist dies nicht möglich, aber TDB kann mit relativ großen Datenmengen umgehen. Ich denke, was Sie in Betracht ziehen sollten, ist die Verwendung tdbloader, um einen TDB-Speicher zu erstellen; dann kannst du Fuseki darauf hinweisen.

Es gibt ein Beispiel zum Einrichten eines TDB-Speichers in this answer. Dort wird die Abfrage mit tdbquery durchgeführt, sondern nach dem Running a Fuseki server Teil der Dokumentation, alles, was Sie tun müssen, um Fuseki mit dem gleichen TDB Speicher zu starten verwenden Sie die --loc=DIR Option:

  • --loc=DIR
    Verwenden Sie eine vorhandene TDB-Datenbank. Erstellen Sie ein leeres, wenn es nicht existiert.
2

As Joshua said, Jena Fuseki verwendet TDB so kann es speichern sehr große Ontologien, ohne viel Ressourcen. Zum Beispiel können Sie die Yago2 taxonomy hinein laden und nur etwa 600 MB RAM verwenden. Sie müssen Fuseki nicht in Ihr Java-Projekt laden, Sie können es einfach über die Befehlszeile ausführen und es in Ihrem Projekt abfragen.

laden es auf der Windows-Kommandozeile durch die folgenden:

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

Dann können Sie eine SPARQL-Abfrage mit jedem GET/POST-Anwendung (auch in Ihrem Browser) laufen:

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

Die Ergebnisse werden standardmäßig im XML-Format zurückgegeben.

<?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> 
    … 
Verwandte Themen