Pregunta

necesito para consultar mi Hibernate locales gestionadas almacén de datos para objetos persistió en base a criterios donde los datos relevantes para la cláusula WHERE está en la nube Datos no vinculado.

¿Hay una manera de leer una sesión de Hibernate como RDF? Si es así, al menos puedo usar la combinación de datos para decidir qué objetos para recuperar de hibernación.

Preferiblemente, la solución sería exponer la sesión de Hibernate como en el interior de Jena como estoy familiarizado con él. Además necesitaré apoyo a RDFS inferencia y SPARQL para su recuperación.

¿Fue útil?

Solución 2

Esto es lo que he encontrado desde la publicación de la pregunta:

No hay ninguna herramienta existente para Triplify la sesión de Hibernate específicamente. Para implementar una yo necesito para implementar Graph GraphBase como base, o StageGenerator. Por lo tanto, la respuesta a la pregunta es "no hay una sola", por lo que pasó a considerar la manera de ponerla en práctica.

Tengo que decidir si Triplify objetos que ya están en la sesión (es decir, ya visitada por algunos consulta anterior), se basan en el acceso a la base de datos o hacer ambas cosas. Si va a la base de datos también necesito para decidir si se debe cargar objetos enteros que luego se unen a la sesión o el uso de proyección para guardar datos adicionales con lo que en el montón a expensas de-idas y vueltas adicionales.

Uso Graph es aparentemente esencial para apoyar la inferencia, aunque su lento que el uso CPIA StageGenerator ya que puede consultar un conjunto de patrones de triples, sin embargo, esto hace que sea esencial utilizar siempre SPARQL que parece un poco inflexible.

Hasta el momento, la solución óptima parece ser:

  • Implementar un (probablemente sólo lectura) Gráfico - decir "HibernateGraph"
  • Tienes HibernateGraph inspeccionar el Hibernate objeto PersistenceContext y volver triples a la cabeza de una iterador personalizado.
  • Cuando expira el iterador páginas de carga de datos de la base de datos utilizando la Criterios de interfaces.
  • Para las consultas con un predicado conocida URI mapa del URI a una columna y utilizar una proyección apretado, de otra manera cargar la todo el objeto y iterar sobre getters, la cartografía el nombre getter a una URI.
  • En otros casos mapa usando un esquema simple, por ejemplo, http: // root / url / instancias / EntityName / Identificación del para cada sujeto, etc.
  • Crear un objeto auxiliar para permitir SPARQL que se realiza con una costumbre StageGenerator.
  • El StageGenerator debe envolver el construida en StageGenerator.
  • En el paso generador de fase personalizada consultas en los gráficos que no sea una HibernateGraph arriba en la cadena a la construida en StageGenerator.
  • También omitir cualquier conjunto de patrones de triples para los que no hay está optimizado solución por ejemplo cualquier conjunto de un patrón.
  • Cuando una consulta puede ser optimizado logrado, ejecute el apropiado funciones de criterio y un mapa de la los resultados de celda por celda para triples como antes.

Hay otro SPI llamado OpExecutor que puede ayudar para impulsar la resolución del filtro en la base de datos, lo que mejora aún más el rendimiento.

En el momento en que he tomado esto como un proyecto paralelo, que bien puedo liberar como software LGPL.

Otros consejos

Dado que va a utilizar Jena (y ARQ) para ejecutar la consulta SPARQL, se puede usar una costumbre FileManager para resolver los Hibernate objetos / gráficos (asumiendo que usted quiere cada objeto a ser representado por un gráfico).

corto en el uso de un FileManager para localizar modelos, y la ARQ RDF conjunto de datos tutorial (ver la sección "Descripción de conjuntos de datos") podrá dar algunos consejos sobre cómo hacer un mapeo más personalizado de URIs gráfico (y el contenido de esos gráficos como RDF conjuntos de datos) a sus datos de Hibernate gestionados existentes.

Otra opción podría ser la creación de una costumbre SDB diseño que mapea a su Hibernate esquema existente. No sé cómo SDB flexible es en este sentido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top