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?
Respuesta
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í:
- https://svn.apache.org/repos/asf/incubator/jena/Jena2/ARQ/tags/jena-arq-2.9.0-incubating/src/main/java/riotcmd/infer.java
- https://svn.apache.org/repos/asf/incubator/jena/Jena2/ARQ/tags/jena-arq-2.9.0-incubating/src/main/java/org/openjena/riot/pipeline/inf/InferenceProcessorRDFS.java
- https://svn.apache.org/repos/asf/incubator/jena/Jena2/ARQ/tags/jena-arq-2.9.0-incubating/src/main/java/org/openjena/riot/pipeline/inf/InferenceSetupRDFS.java
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):
¡Gracias por tu respuesta! –
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.
En realidad, los datos RDF son skos, no sé si pueden razonar por QL –
- 1. ¿Hay algún parámetro que pueda usar en Java que funcione con todos los bucles for-each?
- 2. BÚHO Individuo en java
- 3. ¿Hay algún Validator SQL que pueda verificar la sintaxis contra múltiples servidores de bases de datos?
- 4. ¿Hay algún programa que pueda ayudar a entender otro programa?
- 5. ¿Hay algún atributo similar a OutputCache que pueda usar en los métodos normales de C#?
- 6. ¿Hay algún tipo de firma que Haskell no pueda verificar?
- 7. ¿Hay algún módulo Perl que pueda automatizar ollydbg?
- 8. ¿Hay algún complemento de Rails que pueda generar modelos, vistas, etc. utilizando los escenarios de Cucumber?
- 9. ¿Hay algún complemento que pueda probar los selectores de CSS en Firefox?
- 10. C++: ¿Cómo es posible que la lectura de datos pueda afectar la memoria?
- 11. Cargar una base de datos innodb MySQL en la memoria
- 12. ¿Hay una biblioteca C-invocable que pueda generar PNG a partir de datos sin procesar?
- 13. ¿Hay algún patrón que pueda usar para editar listas desplegables en una aplicación MVC3?
- 14. libre() en la memoria de pila
- 15. ¿Hay algún complemento que permita cargar/usar dependencias no Maven?
- 16. ¿Hay algún IDE de Windows Perl libre con depuración?
- 17. ¿Algún buen algoritmo de clasificación para datos ordenados en su mayoría que no encajan todos en la memoria?
- 18. ¿Hay algo que la composición no pueda lograr que la herencia pueda?
- 19. ¿Hay algún método que pueda anular en un objeto JavaScript para controlar lo que muestra console.log?
- 20. ¿Hay algún recurso en la web que enumere todos los problemas de seguridad de ASP.Net (XSS, etc.) con medidas preventivas?
- 21. Sin memoria al cargar entidades Java
- 22. Obtenga espacio libre en la memoria interna
- 23. ¿Hay algún Descompilador de Java que pueda descompilar correctamente las llamadas a métodos sobrecargados?
- 24. ¿Hay algún repositorio en el que pueda descargar dispositivos virtuales de Android?
- 25. ¿Hay algún módulo Perl que me impida agregar `o morir` a cualquier cosa que pueda fallar?
- 26. accediendo a las propiedades de UIImage sin cargar en la memoria la imagen
- 27. puede sqlite cargar datos de 10M en la memoria
- 28. ¿Hay alguna forma en que pueda hacer dos lecturas atómicas?
- 29. ¿Hay algún método que pueda sobrecargar para manejar propiedades indefinidas en JavaScript?
- 30. ¿Hay algún problema canónico que no pueda ser ayudado con map/reduce?
¿Qué tan grande es sus datos? Simplemente curioso ... – castagna
Alrededor de 0.1 billones triples –