I have done quite a bit around this. One possible solution is to follow suite with the Inconsequential approach. So essentially that encompasses a fully blown GORM for RDF with a SPARQL dialect for persistence related operations. The requirements for such a solution includes the following:
1. Aligning properties in domain classes with RDF properties in Ontologies and Vocabularies.
2. Providing a convention for binding those properties to a Jena Model (Not familiar with the Sesame Libraries, but pretty sure that Jena can plug in to most things)
3. Serialising to and from SPARQL queries read and write from a Triplestore
So in attempting to satisfy those needs, I have defined and developed the following:
1. A JDBC driver for SPARQL. This is completely conformant to the HTTP Based SPARQL 1.1 protocol (non vendor specific) so it should work with an SPARQL compliant triplestore. SPARUL operations are a best fit with the current Working Draft (it does not use SPARUL protocol). This is at beta release (probably a bit aspirational) and can be found below:
2. A Groovy to RDF binding. Originally, I didn't envisage having enough time to develop a fully blown GORM (obviously that would infer using Spring Datastore). So the most feasible solution was a pure POGO to RDF binding. This can be found below and is still in construction (75% through construction). Some of the key features include static variable definitions for property mappings, a convention for mappings that don't align gracefully (i.e the domain model differs greatly from the ontology), and a persistence manager for read/write operations. One aspect of its behvoiur is that the RDF model is built at object construction and updated during property changes, not at persistence time, so theoretically one can perform operations on the RDF model independent of the POGO.
I'm looking at implementing a spring-datastore-jena and grails-datastore-gorm-jena, following the examples of what I see in the various implementations. I've got the general datastore, session, persister down, but could use some further clarification on the surrounding infrastructure.
Are there any places where some of the key concepts are documented? Indexer, association, family, association,