2012-04-25 24 views
5

Io uso Jena e TDB per archiviare RDF, e voglio fare qualche inferenza su di esso. Ma i dati RDF sono grandi, e il ragionatore di gufo di Jena deve caricare tutti i dati in memoria. Quindi voglio trovare un ragionatore in grado di ragionare senza caricare tutti i dati in memoria, c'è qualcuno?C'è qualche motivo per gufo libero che può ragionare senza caricare tutti i dati in memoria?

+0

Quanto è grande i vostri dati? Solo curioso ... – castagna

+0

Circa 0,1 miliardi di tripli –

risposta

2

Se si è pronti a utilizzare un sottoinsieme di OWL, ci sono cose che si possono fare in un processo di elaborazione del flusso senza caricare tutti i dati RDF in memoria e che materializzeranno tutte le triple dedotte.

A titolo di esempio, uno sguardo ai comandi inferire di RIOT:

Codice sorgente qui:

E 'banale di prendere inferire di RIOT ed eseguirlo in parallelo con qualcosa come MapReduce, ad esempio è qui:

Un altro approccio diverso che utilizza MapReduce per applicare la RDFS e OWL ter Horst regole e materializzare tutte le dichiarazioni derivate è qui:

Forse, è possibile guardare le parti di OWL siete interessati e verificare se è possibile farlo in modo streaming. Se è così, puoi prendere l'inferno di RIOT ed estenderlo, aggiungendo le parti di OWL che ti interessano. Questo sarebbe un bel contributo ad Apache Jena (rimettiti in contatto sulla mailing list di jena-dev se vuoi farlo) .

WebPIE è un progetto intelligente e interessante, ma come potete vedere, un po 'più complesso ed è un progetto di ricerca (con tutto ciò che implica un supporto a lungo termine e un punto di vista della manutenzione). Tuttavia, se si tratta di OWL o di Horst che vuoi/hai bisogno, WebPIE lo farebbe. Si potrebbe anche mettere lo sforzo, fork WebPIE e contribuire ad un progetto open source, se altri sono interessati a usarlo.

Potreste essere interessati a guardare anche Ymris (ma questo è attualmente dormendo ... zzzzz):

+0

Grazie per la tua risposta! –

3

Non proprio. Il ragionamento in DL è computazionalmente difficile anche su scala ridotta. Con lotti di dati, non funzionerà con gli approcci esistenti. Farlo sull'archiviazione secondaria è ancora un problema di ricerca aperto.

Tuttavia, i vari profili di OWL esistono per risolvere questo problema. Hanno tutti diverse complessità computazionali, che sono tutte 'più facili' di DL, rendendole molto più suscettibili di ragionamento su larga scala. In particolare, QL è progettato per il ragionamento del tempo di query che nella mia esperienza tende ad avere un ingombro di memoria molto piccolo e RL può essere implementato con un ragionatore standard delle regole.

Quindi, se non è necessario utilizzare DL, quindi vorrei andare con uno strumento che supporta uno dei profili e si dovrebbe ottenere abbastanza buon chilometro da questo.

Per riferimento, è possibile trovare questo document sulle complessità computazionali dei vari dialetti OWL interessanti.

+0

In realtà, i dati RDF sono skos, non so se può essere ragionato da QL –