That's an interresting case you've got here and it looks to me like it's
probably the best way to model it in the meta model.

2010/3/25 Niels Hoogeveen <pd_aficion...@hotmail.com>

>
> For my application, I want to model an HTML template in Neo4J, using the
> MetaModel api.
>
> So I started setting up MetaModelClasses for the various HTML entities.
>
> e.g. (code in Scala)
>
> val classProp = namespace.getMetaProperty("class", true)
> val idProp =
> namespace.getMetaProperty("id", true)
> idProp.setCardinality(1)
>
>
> val body = namespace.getMetaClass("body", true)
> body.getDirectProperties(classProp)
> body.getDirectProperties(idProp)
>
>
> Which creates a class named "body" which has a property named "class"
> without a cardinality restriction and a property named "id" with a
> cardinality restriction of 1.
>
> Now I can create nodes of class "body" with various values for "class" and
> for "id".
>
> So far so good, but now I want to say that the class body has a property
> "tagname" which should get the value "body".
>
> The meta model itself doesn't allow classes to have properties, but it
> allows access to the underlying node of the class.
>
> So I created a separate namespace for the meta meta classes and added the
> following three definitions:
>
> val tagName = metaNamespace.getMetaProperty("tagname", true)
> tagName.setCardinality(1)
> val taggable = metaNamespace.getMetaClass("taggable", true)
>
> body.node.setProperty("tagname", "body")
>
> This creates a property "tagname" with the value "body" for the class named
> "body".
>
> Now comes the more ambiguous part, how to link "body" to "taggable".
>
> I can make body.node an instance of taggable. Once there is a validator,
> the existence of a "tagname" property with cardinality 1 should be checked,
> so it is reasonable to make body.node an instance of taggable.
>
> At the same time the class body is actually a subclass of taggable, so I am
> inclined to define that as well.
>
> So I end up doing the following:
>
> taggable.getDirectInstances.add(body.node)
> taggable.getDirectSubs.add(body)
>
> I would like to know if this is the correct approach to this situation, or
> whether there are better alternatives.
>
> Kind regards,
> Niels Hoogeveen
>
>
> _________________________________________________________________
> New Windows 7: Find the right PC for you. Learn more.
> http://windows.microsoft.com/shop
> _______________________________________________
> Neo mailing list
> User@lists.neo4j.org
> https://lists.neo4j.org/mailman/listinfo/user
>



-- 
Mattias Persson, [matt...@neotechnology.com]
Neo Technology, www.neotechnology.com
_______________________________________________
Neo mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to