[Neo] DatatypeClassRange usage

Mattias Persson mattias at neotechnology.com
Thu Apr 8 12:35:39 CEST 2010


(I saw your newer patch you sent directly to me, but continuing discussion
here though). With reservation for sounding a bit negative, here's my answer
to your questions/issues.

The meta model is indenpendent of the rdf layer (although some method names
indicate otherwise :) ), so consider that it can be used separately.

2010/4/7 Niels Hoogeveen <pd_aficionado at hotmail.com>

>  Hi Mattias,
>
> Today I worked on a modification to the Meta Model component, which I would
> like to submit as a patch.
>
> Each MetaModelObject now has a "name", but no "uri", something the RDF
> module works with.
>
> To make this possible, I added IndexService as an argument to
> MetaModelImpl, so the "uri" property gets indexed, just like it is in the
> RDF module.
>

I don't like using the same index ("uri") as the rdf component. It could
potentially lead to unexpected/unwanted behaviour. Instead work was started
(but not completed) to integrate the meta model into the rdf layer so that
some statements, f.ex http://something,<rdf:type>,http://some-type could be
converted into operations on the meta model instead
(class.getDirectInstances().add(...)) where the "http://some-type" would
be(come) a meta model class which was created on demand, instead of a normal
RDF resource node.

Coming to think of it, the "uri" index in the rdf component could be called
"rdf_uri" or something like that instead to not conflict with other
keys/components (although it could as well anyways).


>
> Furthermore I changed in semantics of the "name" field for names that don't
> belong to the global namespace.
>
> Consider the following:
>
> namespace name: http://dash.org/ontology#
>
> class name: Toy
>
> property name: isMadeInChina
>
> class uri: http://dash.org/ontology#Toy
>
> property uri: http://dash.org/ontology#isMadeInChina
>
> For namespaces that use slash naming instead of dash naming, class uri's
> will have a trailing slash:
>
> namespace name: http://slash.org/ontology/
>
> class name: Toy
>
> property name: isMadeInChina
>
> class uri: http://slash.org/ontology/Toy/
>
> property uri: http://slash.org/ontology/isMadeInChina
>
> In the global namespace, name and uri are always the same, so the changes
> have no immediate impact on the meta model import, except for the creation
> of an extra "uri" property, which has a value equal to that of the name
> property.
>
> I think eventually it would be an improvement to load each ontology in its
> own name space, in which case some modifications should be made to the OWL
> and RDF importers to strip the name space prefix off the name.
>

We did this intentionally because we wanted to get away from all this
splitting/glue:ing of URIs which is just a hassle and is deemed to break
down in one or more cases (with the use of '/' and '#' and what not). The
namespace feature is really there to be able to support RDF-style   AND   an
OO-style layout where namespaces would be used to resolve conflicts in class
names (much like packages in java). The RDF-style layout needs no namespaces
since the URIs contain namespaces themselves.


> I supplied the patch in a zip attached to this email. I modified the tests
> of both meta-model and meta-model-import, since there is an extra argument
> for the index service, that needs to be provided. I have built both projects
> using maven and all tests passed.
>
>
Would you agree on any of my points made here, or am I missing your points
perhaps?


> Kind regards,
> Niels Hoogeveen
>
>
> > Date: Tue, 6 Apr 2010 10:08:29 +0200
> > From: mattias at neotechnology.com
>
> > To: user at lists.neo4j.org
> > Subject: Re: [Neo] DatatypeClassRange usage
> >
> > Yep, the full class name is expected. The meta model has (as you can
> tell) a
> > long way to go to become really useful and I see that you're really
> testing
> > and using this component.
> >
> > Since we're not working on the meta model at the moment it'd be very nice
> if
> > you could fix/change/add stuff that doesn't work and supply patches or
> get
> > commit rights to that component or something like that!
> >
> > Cheers,
> > Mattias
> >
> > 2010/4/6 Niels Hoogeveen <pd_aficionado at hotmail.com>
> >
> > >
> > > Thanks.
> > >
> > > I was trying to use the MetaModel without using the RDF layer, but I
> see I
> > > end up duplicating a lot of functionality that way. Maybe time to move
> to
> > > the RDF side of things.
> > >
> > > Kind regards,
> > > Niels Hoogeveen
> > >
> > > > From: rick.bullotta at burningskysoftware.com
> > > > To: user at lists.neo4j.org
> > > > Date: Mon, 5 Apr 2010 12:38:51 -0400
> > > > Subject: Re: [Neo] DatatypeClassRange usage
> > > >
> > > > In "theory" the isAssignableFrom method on the underlying MetaModel &
> > > Range
> > > > classes should be able to test for a legal/automatic type conversion,
> but
> > > it
> > > > looks like that code is commented out in the current version of the
> > > > Validator class. In any case, it certainly seems that using the
> normal
> > > > reference classes for the primitive types should work fine.
> Nullability
> > > is
> > > > another benefit of using the reference classes.
> > > >
> > > > -----Original Message-----
> > > > From: user-bounces at lists.neo4j.org [mailto:
> user-bounces at lists.neo4j.org]
> > > On
> > > > Behalf Of Niels Hoogeveen
> > > > Sent: Monday, April 05, 2010 8:42 AM
> > > > To: user at lists.neo4j.org
> > > > Subject: Re: [Neo] DatatypeClassRange usage
> > > >
> > > >
> > > > If only reference classes can be added, what are appropriate types.
> > > Should I
> > > > use java.lang.Integer when the underlying property value is and "int"
> and
> > > > java.lang.Long when using a "long"?
> > > >
> > > > Kind regards,
> > > > Niels Hoogeveen
> > > >
> > > > > From: pd_aficionado at hotmail.com
> > > > > To: user at lists.neo4j.org
> > > > > Date: Sat, 3 Apr 2010 01:52:06 +0200
> > > > > Subject: [Neo] DatatypeClassRange usage
> > > > >
> > > > >
> > > > > To model the datatype of a property, I tried to use the
> > > > DatatypeClassRange. It seems this object only accepts reference
> classes,
> > > not
> > > > primitive classes.
> > > > >
> > > > > I would like to state that a certain MetaModelProperty has the
> datatype
> > > > "int". To do so, I thought I would have to provide the
> MetaModelProperty
> > > > with a PropertyRange. The DatatypeClassRange seemed the only suitable
> > > > option, but its fromStringRepresentation method loads the class
> through a
> > > > Class.forName, so class "int", is of course not found, and the load
> of
> > > the
> > > > PropertyRange results in a ClassNotFoundException.
> > > > >
> > > > > Is this a bug, is this a feature?
> > > > >
> > > > > Kind regards,
> > > > > Niels Hoogeveen
> > > > >
> > > > >
> > > > > _________________________________________________________________
> > > > > Express yourself instantly with MSN Messenger! Download today it's
> > > FREE!
> > > > > http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
> > > > > _______________________________________________
> > > > > Neo mailing list
> > > > > User at lists.neo4j.org
> > > > > https://lists.neo4j.org/mailman/listinfo/user
> > > >
> > > > _________________________________________________________________
> > > > Express yourself instantly with MSN Messenger! Download today it's
> FREE!
> > > > http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
> > > > _______________________________________________
> > > > Neo mailing list
> > > > User at lists.neo4j.org
> > > > https://lists.neo4j.org/mailman/listinfo/user
> > > >
> > > > _______________________________________________
> > > > Neo mailing list
> > > > User at lists.neo4j.org
> > > > https://lists.neo4j.org/mailman/listinfo/user
> > >
> > > _________________________________________________________________
> > > New Windows 7: Find the right PC for you. Learn more.
> > > http://windows.microsoft.com/shop
> > > _______________________________________________
> > > Neo mailing list
> > > User at lists.neo4j.org
> > > https://lists.neo4j.org/mailman/listinfo/user
> > >
> >
> >
> >
> > --
> > Mattias Persson, [mattias at neotechnology.com]
> > Hacker, Neo Technology
> > www.neotechnology.com
> > _______________________________________________
> > Neo mailing list
> > User at lists.neo4j.org
> > https://lists.neo4j.org/mailman/listinfo/user
>
> ------------------------------
> New Windows 7: Find the right PC for you. Learn more.<http://windows.microsoft.com/shop>
>



-- 
Mattias Persson, [mattias at neotechnology.com]
Hacker, Neo Technology
www.neotechnology.com


More information about the User mailing list