2013-06-09 29 views
6

Desidero scaricare due o più set di dati sulla mia macchina ed essere in grado di avviare un endpoint SPARQL per ciascuno. Ho provato Fuseki che fa parte del progetto Jena. Tuttavia, carica l'intero set di dati in memoria, il che non è molto desiderato se intendo interrogare insiemi di dati di grandi dimensioni come DBpedia dato che intendo fare altre cose (avviare più endpoint SPARQL e utilizzare un sistema di query federato su di essi).Richiesta di memoria di grandi quantità di dati RDF

Solo per fornire un avviso, intendo collegare più set di dati utilizzando SILK, interrogandoli utilizzando un sistema di query federato FEDX. Se raccomandi un cambiamento dei sistemi che sto usando, o posso darmi un consiglio, sarebbe fantastico. Sarà anche di grande aiuto se suggerisci un set di dati che si adatti a questo progetto.

risposta

4

Juse's Fuseki può utilizzare TDB come meccanismo di archiviazione e TDB memorizza le cose su disco. La documentazione TDB su caching on 32 and 64 bit Java systems illustra il modo in cui i contenuti del file sono mappati in memoria. Non credo che TDB/Fuseki carichi l'intero set di dati in memoria; questo non è fattibile per dataset di grandi dimensioni, tuttavia TDB può gestire dataset piuttosto grandi. Penso che quello che dovresti prendere in considerazione è usare tdbloader per creare un negozio TDB; quindi puoi indicare Fuseki ad esso.

C'è un esempio di impostazione di un negozio TDB in this answer. Lì, la query viene eseguita con tdbquery, ma secondo la sezione Running a Fuseki server della documentazione, tutto ciò che sarà necessario fare per iniziare Fuseki con il negozio stesso TDB è utilizzare l'opzione --loc=DIR:

  • --loc=DIR
    Utilizzare un database TDB esistente. Crea uno vuoto se non esiste.
2

As Joshua said, Fuseki di Jena usa TDB in modo che possa memorizzare grandi ontologie senza l'utilizzo di un sacco di risorse. Ad esempio, è possibile caricare Yago2 taxonomy e utilizzare solo circa 600 MB di RAM. Non è necessario caricare Fuseki nel tuo progetto Java, puoi semplicemente eseguirlo dalla riga di comando e interrogarlo all'interno del tuo progetto.

carico alla linea di comando di Windows dal seguente:

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

Quindi è possibile eseguire una query SPARQL contro di essa con qualsiasi applicazione GET/POST (anche nel tuo browser):

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

I risultati sono, per impostazione predefinita, restituiti in formato 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> 
    …