2013-06-09 33 views
6

Chcę pobrać dwa lub więcej zestawów danych na moim komputerze i móc uruchomić punkt końcowy SPARQL dla każdego z nich. Wypróbowałem Fuseki, który jest częścią projektu Jena. Jednak ładuje cały zbiór danych w pamięci, co nie jest bardzo pożądane, jeśli mam zamiar przesyłać zapytania do dużych zbiorów danych, takich jak DBpedia, ponieważ zamierzam robić inne rzeczy (rozpoczynać wiele punktów końcowych SPARQL i używać nad nimi systemu kwerend federacyjnych).Wywoływanie dużych zbiorów danych RDF z pamięci

Tylko po to, aby dać wam szansę, zamierzam połączyć wiele zestawów danych za pomocą SILK, wysyłając do nich zapytanie za pomocą stowarzyszonego systemu zapytań FEDX. Jeśli polecisz jakąkolwiek zmianę systemów, z których korzystam, lub mogę dać mi napiwek, to byłoby wspaniale. Będzie to również pomocne, jeśli zaproponujesz zestaw danych, który pasuje do tego projektu.

Odpowiedz

4

Fuseki Jeny mogą używać TDB jako mechanizmu przechowywania, a TDB przechowuje dane na dysku. Dokumentacja TDB na temat caching on 32 and 64 bit Java systems omawia sposób, w jaki zawartość pliku jest mapowana do pamięci. Nie wierzę, że TDB/Fuseki ładuje cały zestaw danych do pamięci; to po prostu nie jest możliwe w przypadku dużych zestawów danych, jednak baza TDB może obsługiwać raczej duże zbiory danych. Myślę, że powinieneś rozważyć, czy używasz tdbloader do utworzenia sklepu TDB; wtedy możesz wskazać Fuseki na to.

Istnieje przykład skonfigurowania sklepu TDB pod numerem this answer. Tam, kwerenda jest wykonywana z tdbquery, ale według sekcji Running a Fuseki server dokumentacji, wszystko trzeba zrobić, aby rozpocząć fuseki z tego samego sklepu TDB jest użyć opcji --loc=DIR:

  • --loc=DIR
    Użyj istniejącej bazy danych TDB. Utwórz pusty, jeśli nie istnieje.
2

As Joshua said, Jena fuseki wykorzystuje TDB więc może przechowywać bardzo duże ontologie bez użycia dużej ilości zasobów. Na przykład możesz załadować do niego kod Yago2 taxonomy i używać tylko około 600 MB pamięci RAM. Nie musisz ładować Fuseki do projektu Java, możesz po prostu uruchomić go z wiersza poleceń i wysłać zapytanie do niego w projekcie.

załadować go w wierszu polecenia systemu Windows brzmienie:

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

Następnie można uruchomić kwerendę sparql przeciwko nim z dowolnej aplikacji GET/POST (nawet w przeglądarce):

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

Wyniki są domyślnie zwracane w formacie 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> 
    …