I was asked to comment on this thread and so as the developer for PA4RDF I
will.

PA4RDF was originally an interface only mapping: Annotated Interface
directly mapping onto the RDF structure with the Subject of the triples
being the instance of the interface and various properties of the subject
mapped to methods.  PA4RDF did all the mapping from RDF data types to Java
data types and back.  It also had a nomenclature to distinguish between
properties that should be single instance and those that can be multiple
instance.

The use of Interface only became to unwieldy so it has been extended to
handle abstract and concrete classes.  It still handles all the conversions
and ensuring that the property is single instance when required.

It was later extended again to handle triggers (of a sort) wherein specific
methods can be called after the getter, setter or remover methods.  This is
to assist the developer in maintaining internal consistency.

Now as to weather or not it works in the MVC environment.  My experience is
that it does.  That was primarily why I wrote it.  I started out by looking
at using the standard JPA annotations to read/write the graph but found
that the impedance mismatch was to great.

PA4RDF does not make copies of the data, it uses the Jena model interface
directly.  Since the Resources in the Model always have access to the
current state of the model the PA4RDF annotated beans always have access to
the current state of the model.  They are never disconnected. (Disconnected
operation is a planned feature).  The lack of disconnection has some impact
on program design as setting the bean properties should be performed inside
a transaction and the transaction committed when all the properties have
been updated.

The example cited above (
http://pa4rdf.sourceforge.net/examples/concreteClassSubject.html) handles
the case where there is no interface to annotate and the developer may be
plugging PA4RDF into an existing class.

For most projects with simple beans the annotated interface (
http://pa4rdf.sourceforge.net/examples/interface.html) is a better example.

If you have a requirement to process some of the properties before
returning them (in the PA4RDF examples returning a "cite" for a book, you
can annotate an abstract class.  You could also have the abstract class
extend an annotated interface and that would work as well).

Finally, the concrete example is also used in cases where you can not pass
an abstract class or an interface to some other class.  I don't recall the
specific case but I do remember encountering the case where I needed the
ability to create a concrete class as the tool I was using would not allow
an Abstract class or Interface to be used).

I think you will find that PA4RDF works well as a replacement for JPA and
has additional capabilities that exploit the underlying Model.  If it
doesn't I am more than willing to accept code fixes and ideas.  Also any
documentation would be gladly accepted.

Claude Warren





On Wed, Jan 7, 2015 at 6:29 AM, Ashish Nijhara <[email protected]>
wrote:

> Nicolas: It is important to understand why would you like RDF into
> JavaBeans. I mean in that case, a regular java application with RDBMS would
> also do the job or? So, if you consider for a second, you would have
> Javabeans being the objects updated by the application, internally you want
> to convert them to RDF and store them in a triple store. The architecture,
> however correct, sounds clunky unless there is a deep reason to have such
> an architecture and not intuitive.
>
> I agree with Martynas, RDF opens a lot more possibilities.
>
> To answer the questions
> 1) Are there good practice or some DAO to design  ?
> As mentioned above, what benefit do you get converting Javabeans to RDF? If
> no benefit, then stick to one paradigm and keep it simple!!
> 2) In term of performances, is it better to use ARQ (sparql) OR jena
> ontologie API ?
> For getting bulk information out, my experience has been SPARQL is better.
> (3) is it a good choice to store all in a triple store ? (versus
> traditional relational databases) )
> Storing things in a triple store is better, in RDBMS you may end up using
> Jena SDB to store triples in RDBMS which gets clunky and slow.
>
> On Wed, Jan 7, 2015 at 5:53 AM, Martynas Jusevičius <[email protected]
> >
> wrote:
>
> > Nicolas: fair enough. However you should know that by simply replacing
> > the relational DB with a triplestore while using the same
> > object-oriented programming approach you're not getting even half of
> > the advantages of semantic technologies. RDF opens possibilities for
> > new software design patterns.
> >
> > On Tue, Jan 6, 2015 at 9:37 PM, Nicolas Paris <[email protected]>
> wrote:
> > > Martynas : Thanks for the link. Maybe your solution is excellent, but
> > > I don't want to lose me  : classical MVC, is a security for me and the
> > > project.
> > >
> > > Olivier : The Elmo documentation is great. Do you think my application
> > > could be done with sesame ? I mean, sesame has a triple store, a
> > > reasoner, and looks like having a javabeans system much advanced than
> > > jena/PA4RDF have ?
> > > Anyway, jena/PA4RDF can actually do the job ; the documentation for
> > > PA4RDF is just really poor.
> > > Nicolas PARIS
> > >
> > >
> > > 2015-01-06 10:48 GMT+01:00 Olivier Rossel <[email protected]>:
> > >> Martynas,
> > >>
> > >> that is a bit off-topic but maybe you could organize a webinar so you
> > >> can show us some features of graphityhq.
> > >>
> > >> Nicolas:
> > >>
> > >> honestly, i know not very much about PA4RDF,
> > >> I use Elmo (rebranded as AliBaba) :
> > >>
> >
> http://sourceforge.net/projects/sesame/files/AliBabaElmo/1.5/openrdf-elmo-1.5.zip/download
> > >>
> > >> There is a nice user guide in the zip file, that gives a lot of
> details
> > >> about how to annotate beans so the persistence is transparent.
> > >> I think inheritance is explained too.
> > >>
> > >> On Tue, Jan 6, 2015 at 2:29 AM, Martynas Jusevičius
> > >> <[email protected]> wrote:
> > >>> Nicolas,
> > >>>
> > >>> I suggest you also take a look at Graphity Client:
> > >>> https://github.com/Graphity/graphity-client
> > >>>
> > >>> You don't really need an object layer representing your RDF classes
> > >>> above Jena, it is a bottleneck. You can express both the webapp
> > >>> structure and the instance data as RDF, and define a mapping from
> HTTP
> > >>> access to RDF state changes over SPARQL.
> > >>>
> > >>> Here's an example of how that structure (sitemap ontology) looks
> like:
> > >>>
> >
> http://lists.w3.org/Archives/Public/public-declarative-apps/2015Jan/0000.html
> > >>>
> > >>> Here's an example of an editing interface:
> > >>>
> >
> http://linkeddatahub.com/bibframe/instances?mode=http%3A%2F%2Fgraphity.org%2Fgc%23CreateMode
> > >>>
> > >>> Disclaimer: I'm the main developer.
> > >>>
> > >>>
> > >>> Martynas
> > >>> graphityhq.com
> > >>>
> > >>> On Mon, Jan 5, 2015 at 9:07 PM, Nicolas Paris <[email protected]>
> > wrote:
> > >>>> Thanks for answers !
> > >>>>
> > >>>> - About http://callimachusproject.org/ : interesting but I have to
> > >>>> create application from scratch, because very specific
> > >>>>
> > >>>> - About PA4RDF : It seems very interessant. Any other tutorial,
> > >>>> related post or tip ?
> > >>>> Olivier, what do you exactly mean by "a bean <-> graph mapper" ?
> > >>>> I generate an OWL ontology, that is my structure of data. I will
> > >>>> modelise beans inspiring this structure. Say owl properties will be
> > >>>> java class properties. And RDF class's inheritance will be mapped to
> > >>>> java inheritance. Do you agree ?
> > >>>> However, it appears that the POJO class of PA4RDF limits the
> > inheritance.
> > >>>> The example here
> > >>>> http://pa4rdf.sourceforge.net/examples/concreteClassSubject.html
> > >>>> could feet with user <- student  inheritance ? Or will I have to
> > >>>> duplicate code for Teacher & Student as they inherite from User ?
> > >>>>
> > >>>> Thanks again for this link Olivier !
> > >>>> Nicolas PARIS
> > >>>>
> > >>>>
> > >>>> 2015-01-05 15:44 GMT+01:00 Olivier Rossel <[email protected]
> >:
> > >>>>> There was a discussion some weeks ago about PA4RDF.
> > >>>>> It might be a good starting point, in you think a bean <-> graph
> > mapper
> > >>>>> could be useful in your case.
> > >>>>>
> > >>>>> Also http://callimachusproject.org/ could be another interesting
> > >>>>> project to investigate in your  case.
> > >>>>>
> > >>>>> On Mon, Jan 5, 2015 at 2:41 PM, Nicolas Paris <[email protected]
> >
> > wrote:
> > >>>>>> Hello,
> > >>>>>>
> > >>>>>> I am creating a web semantic application, were persistant data is
> > all
> > >>>>>> stored in triple store (TDB).
> > >>>>>> I mean, users(foaf), parameters etc.
> > >>>>>> This application is an e-learning application, with exercices
> > >>>>>> proposition based on reasonners.
> > >>>>>>
> > >>>>>> I want to use a classic MVC design pattern (jsp / servlets /
> > javabeans).
> > >>>>>> So a javabeans user, teacher, and student with heritage.
> > >>>>>> My naïve aproach would be to initialise jbeans from TDB, using
> jena
> > >>>>>> model getInstance etc. Or Sparql Querys with ARQ
> > >>>>>> and my setters will do both :
> > >>>>>> - set jbeans propertys
> > >>>>>> - modify triple (dataset jena setProperty ; dataset commit ,  OR
> > SPARQL querys)
> > >>>>>>
> > >>>>>> Example bad pseudo-code:
> > >>>>>> Class student extends user {
> > >>>>>> private Integer age;
> > >>>>>> private Ressource student = myModel.getIndividual(
> > >>>>>> "http://www.myexample.com/mySchema#student1"; );
> > >>>>>>
> > >>>>>> public void setAge(Integer age){
> > >>>>>> this.age = age; //modify jbeans property
> > >>>>>> student.setPropertyValue("http://www.myexample.com/mySchema#age
> > ","1^^integer")
> > >>>>>> # modify TDB valyue
> > >>>>>> }
> > >>>>>>
> > >>>>>> }
> > >>>>>>
> > >>>>>>
> > >>>>>> 1) Are there good practice or some DAO to design  ?
> > >>>>>> 2) In term of performances, is it better to use ARQ (sparql) OR
> jena
> > >>>>>> ontologie API ?
> > >>>>>> (3) is it a good choice to store all in a triple store ? (versus
> > >>>>>> traditional relational databases) )
> > >>>>>>
> > >>>>>> Thanks a lot
> > >>>>>>
> > >>>>>>
> > >>>>>>
> > >>>>>> Nicolas PARIS
> >
>



-- 
I like: Like Like - The likeliest place on the web
<http://like-like.xenei.com>
LinkedIn: http://www.linkedin.com/in/claudewarren

Reply via email to