You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@isis.apache.org by Sebastian Samaruga <co...@gmail.com> on 2012/05/24 05:43:48 UTC

Isis Semantic Backend

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.

Re: Isis Semantic Backend

Posted by Kevin Meyer - KMZ <ke...@kmz.co.za>.
I had a similar problem a few years ago that I also did not get around 
to solving - and my thinking at the time was writing a POJO that was 
itself fixed, but could dynamically chang its contents.. 

I was thinking about creating member properties as a collection of 
"look-up by reference" abstract POJOs (or interfaces) that would 
implement one of a small set of supported value type implementations.

Thus the collection itself becomes the list of properties, which can 
grow or shrink as required.

The SQL-OS now supports collections of type interface / abstract 
classes, which it didn't when I first had the idea.

Scimpi would have been the only UI that could be made to handle it, 
though - to render the collection as a list of properties rather than a 
normal collection.

Regards,
Kevin


On 24 May 2012 at 3:32, Christopher Caserio wrote:

> 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). 


Re: Isis Semantic Backend

Posted by Christopher Caserio <cp...@objex.com>.
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 <co...@gmail.com> 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.
>> 


Re: Isis Semantic Backend

Posted by Dan Haywood <da...@haywood-associates.co.uk>.
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 <co...@gmail.com> 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.
>