2012-04-25 14 views
5

Uso Jena y TDB para almacenar RDF, y quiero hacer algunas inferencias sobre ello. Pero los datos de RDF son grandes, y el razonador de buho de Jena tiene que cargar todos los datos en la memoria. Así que quiero encontrar un razonador que pueda razonar sin cargar todos los datos en la memoria, ¿hay alguno?¿Hay algún razonador de búho libre que pueda razonar sin cargar todos los datos en la memoria?

+0

¿Qué tan grande es sus datos? Simplemente curioso ... – castagna

+0

Alrededor de 0.1 billones triples –

Respuesta

2

Si está preparado para tomar un subconjunto de OWL, hay cosas que puede hacer de forma automática sin cargar todos sus datos RDF en la memoria y que materializarán todas las tripletas inferidas.

A modo de ejemplo, echar un vistazo a inferir comando de RIOT:

El código fuente aquí:

Es trivial para tomar inferir de antidisturbios y ejecutarlo en paralelo con algo así como MapReduce, el ejemplo está aquí:

Otro enfoque diferente que utiliza MapReduce para aplicar el RDFS y OWL ter Horst reglas y materializar todas las declaraciones derivadas está aquí:

Tal vez, se puede ver en las partes del búho le interesa y comprobar si puede hacerlo de un modo streaming. Si es así, puede tomar la conclusión de RIOT y extenderla, agregando las partes de OWL que le interesan. Esa sería una buena contribución para Apache Jena (vuelva a estar en contacto con la lista de correo de jena-dev si quiere hacerlo) .

WebPIE es un proyecto inteligente e interesante, pero como puede ver, un poco más complejo y es un proyecto de investigación (con todo lo que esto implica desde un punto de vista de soporte y mantenimiento a largo plazo). Sin embargo, si es OWL ter Horst lo que quiere/necesita, WebPIE lo haría. Incluso podría poner el esfuerzo, inclinar WebPIE y contribuir a un proyecto de código abierto, si otros están interesados ​​en usarlo.

Usted puede estar interesado también mirar Ymris (pero esto está durmiendo ... zzzzz):

+0

¡Gracias por tu respuesta! –

3

No realmente. El razonamiento DL es computacionalmente difícil incluso a baja escala. Con lotes de datos, eso simplemente no va a funcionar con los enfoques existentes. Hacerlo a través del almacenamiento secundario sigue siendo un problema de investigación abierto afaik.

Sin embargo, existen varios perfiles de OWL para solucionar este problema. Todos ellos tienen diferentes complejidades computacionales, que son todos 'más fáciles' que DL, lo que los hace mucho más susceptibles de razonamiento a escala. En particular, QL está diseñado para el razonamiento del tiempo de consulta que, en mi experiencia, tiende a tener un espacio de memoria muy pequeño y RL se puede implementar con un razonador de regla estándar.

Así que si no necesitas usar DL, entonces yo iría con una herramienta que admita uno de los perfiles y deberías sacar bastante provecho de eso.

Como referencia, puede encontrar este document sobre las complejidades de compuación de los diversos dialectos de OWL interesantes.

+0

En realidad, los datos RDF son skos, no sé si pueden razonar por QL –

Cuestiones relacionadas