I investigated this just recently, as I am working with an ontology-based 
object repository with a REST interface, and wanted to drive the domain model 
from the ontology. Dan hits on the main stumbling blocks below. I thought about 
generating pojo classes with javassist, but the post-initialization 
immutability precludes that. I ended up generating java classes, and compiling 
them "offline". This works, but does not track changes to the underlying 
metadata.

A better approach would be to create a programming model that bypasses pojos 
altogether, but that was more work than I had time for on this project. 
Unfortunately, since the domain deals with multiple repositories that are 
"discoverable" while the container is running (the domain is actually centered 
on managing the repositories and their contents), I would still have the 
immutability problem (not to mention dealing with potential naming and 
definition conflicts).

A more dynamic metamodel would be a very useful enhancement; particularly if it 
is accessible and manipulable through the REST interface. In fact, heading more 
toward REST almost dictates a more dynamic, resource-oriented metamodel (like 
RDF/OWL); in order to support a self-defining ecosystem of interoperating 
domains. This would take Isis beyond the rapid domain prototyping sweet spot, 
into a fully distributed, RESTful, platform for large, dynamic systems.

cppc


On May 24, 2012, at 1:27 AM, Dan Haywood wrote:

> Hi Sebastian,
> Thanks for letting us know how you are using/aiming to use Isis.
> 
> I must admit I don't think I completely grok what you are aiming to do, but
> let me do my best.
> 
> Isis, as you know, currently builds its metamodel from pojos, and this
> metamodel is built up using a registry of FacetFactory classes, all
> combined together in the ProgrammingModel (the default being
> org.apache.isis.progmodels.dflt.ProgrammingModelFacetsJava5).  All
> interactions through the UI are using this API, and most of the object
> stores do also.
> 
> I think it would be fairly easy to reflect upon something other than pojos
> - in your case RDF thingies - by providing a different ProgrammingModel
> implementation with a different set of FacetFactories.
> 
> One limitation is that the metamodel is deemed to be immutable after
> initialization.  So if you are inventing different RDF structures while the
> app is running, then Isis wouldn't be able to pick this up.  (I have
> thought of changing this actually, and providing a way to ask Isis to
> rebuild its metamodel.  It occurred to me that that would be a useful
> feature if using a tool such as JRebel.  However, I haven't done anything
> on this).
> 
> So, I dunno if the above is useful, but it might direct your investigations
> a little.  One other detail while I remember it: in the set of
> FacetFactorys in ProgrammingModel, you need to ensure that there is at
> least one that implements the
> special PropertyOrCollectionIdentifyingFacetFactory interface.  These are
> called first and - as their name suggests - are used to identify the
> properties and collections on which all the other FacetFactorys then act.
> (There isn't an ActionIdentifyingFacetFactory because any public methods
> that are not properties or collections are deemed to be actions).
> 
> HTH,
> Dan
> ~~~~~~~~
> 
> 
> On 24 May 2012 04:43, Sebastian Samaruga <[email protected]> wrote:
> 
>> Hi,
>> 
>> I'm currently developing some kind of knowledge management application
>> using RDF and such semantic web related technologies. I've found Isis
>> and thought it will be great to use it as a a front end while
>> developing and maybe I think it as a service layer given the REST
>> functionality that is provided.
>> 
>> The question is given that I have no previous knowledge of the object
>> types and the properties I should handle because the schema is
>> dynamic, I wonder if it will be worth doing try to develop some kind
>> of Dynamic Object Model adapter layer over my model and to provide it
>> to Isis so this model and its persistence leverages the benefits of
>> using the framework. I also should handle context/interaction/actions
>> which should be provided as operations but they are also modeled in an
>> ontological fashion so I should adapt this too.
>> 
>> I will continue with the examples and further investigating the
>> documentation so I can realize if this usage of Isis is convenient,
>> for me at least. Because I'm trying to develop a Knowledge Base with
>> some process management and governance ingredients I'm actually
>> needing some tool for minimal test and prototyping. Best,
>> Sebastian.
>> 

Reply via email to