[sc34wg3] New syntax for (binary) associations

Dmitry db3000 at mac.com
Thu Feb 7 00:49:41 EST 2008


On 6-Feb-08, at 4:41 AM, Robert Barta wrote:

> On Sun, Feb 03, 2008 at 01:24:52PM -0500, Dmitry wrote:
>> I like the  idea of explicit "Property" definitions
>>
>> o:works-for
>>      isa Property;
>>      tm:subject_role o:Employee @  o:is-employed;
>>      tm:object_role o:Employer @  o:is-employed.
>>
>> Explicit properties allow to have a compact syntax for binary
>> associations + some new interesting possibilities:
>
> Woohie, you may have broken the world record on the number of semantic
> levels squeezed into 4 lines. I see instance data, modelling and
> meta-modelling here.
>
> Is the above meant as the RDF pendant to
>
>   o:works-for a rdfs:property;
>               owl:inverseOf o:is-employed .
>
>   o:works-for rdfs:domain ???? .
>   o:works-for rdfs:range ???? .
>
> ?
>

Not really. It means that we introduce  a new subject which is an  
"association from a perspective of one of the role players"

We can define the property "o:work-for" as:

o:works_for
     isa Property;
     tm:subject_role o:Employee @  o:is-employed;
     tm:object_role o:Employer @  o:is-employed.

And we also can define the property  "o:has_employee"

o:has_employee
     isa Property;
     tm:subject_role o:Employer @  o:is-employed;
     tm:object_role  o:Employee @  o:is-employed.


Now we can have a bidirectional (!)  mapping between CTM "block  
form"  and traditional TMDM-based form of representing associations.

We can assert things like:

john
     o:works_for   o:TheDreamWorldInc.


o:TheDreamWorldInc
     o:has_employee   john.


In both cases we will get the same association (after interpretation  
of the "block syntax"):

      o:is-employed(o:Employer : o:TheDreamWorldInc,  o:Employee : john)


When we need to go back from TMDM level representation to CTM "block  
syntax" (or Ruby, Python, Perl, C#, Java, ..... object), we can  
leverage the same property definitions.


>> john
>>      meta:unknown      o:works_for;
>
> I don't understand. This is supposed to say "john works for something
> unknown"? But how does the above scoping take care that the
> employer/employee stuff is correct? It could also say "something works
> for john"?
>


Property is "subject-centric".  We make a "function" out of  a  
"relationship" by anchoring one of the roles.


>>      meta:known_all    o:parent.
>
> 'meta' being on what meta-meta level? :-) What did you try to
> accomplish here?
>

We assert here that the set of values for property "o:parent" is  
"closed", we know "everything".

We also can assert something like this:

   john
       meta:number_of_values   2 @ o:parent, 1 @ o:sister.



Dmitry







More information about the sc34wg3 mailing list