Arcs

Xuân Baldauf <xuan--2007--topicmapmail--infoloom.com-IBzAk7fUI6RAfugRpC6u6w@public.gmane.org>
Newsgroups gmane.text.xml.xtm.general
Message-ID <[email protected]>
Robert Cerny wrote:
> Hi,
>
> I am trying to improve Topincs forms in such a way that a small 
> explanation of the form field is offered. This becomes handy as soon 
> as the field (statement) becomes more complicated, e.g. as recently 
> shown in the newcomb number store [1].
>
> Now i am wondering where to put this information in the topic map in 
> such a way that it is possible to have a different explanation 
> depending on the perspective of an association.
>
> a. use tmcl:description occurrences on occurrence type and name type. 
> make a custom occurrence type perspective description (scoped by role 
> type and language) for association types
> b. use tmcl:description occurrences on the constraints ((is it 
> intended for this purpose?)
> c. use a custom occurrence type on  the constraints
d. use arcs
> [...] Any thoughts or experiences?
Yes.

Benjamin Bock has proposed arcs in Prague 2009 and I have used arcs 
without problems in a project. My definition of "arc" is as follows:

    An arc denotes an association perspective. An association
    perspective with respect to a particular association is a
    perspective as seen

       1. by a player of such an association
       2. though this association
       3. towards another player of this association.

    Arcs are independent of the particular association, hence they are
    independent of the particular players of an association. Hence, each
    particular arc is defined by

       1. ("from") the type of the role of the local player
       2. ("type") the type of the association
       3. ("to") the type of the role of the remote player

(This definition may be incomplete, as more-than-2-ary-associations may 
not be well-covered, but I haven't needed arcs for these types of 
associations so far.)

My CTM template for arcs is as follows:

    %prefix arc http://psi.baldauf.org/arc/

    def arc($type,$from,$to,$reifier)
         arc:arc(arc:from: $from,arc:type: $type,arc:to: $to) ~ $reifier
    end

and arcs can be used as

    arc:arc(arc:from: newcombumber:introducer, arc:type:
    newcombumber:introduced-to-tm, arc:to: newcombumber:introducee) ~ [
       - "introduced Topic Maps to"
    ]

    arc:arc(arc:from: newcombumber:introducee, arc:type:
    newcombumber:introduced-to-tm, arc:to: newcombumber:introducer) ~ [
       - "was introduced to Topic Maps by"
    ]

Note that arcs are not only useful

    * for human language synthesis, but also for human language analysis
      (typically, in a particular language, the same association can be
      expressed in different perspectives, where each perspective has
      its own rules about how to be parsed), as well as
    * for building bridges between TMDM and RDF: If a TMDM association
      encapsulates the essence of an RDF triple, then an arc
      encapsulates the essence of an RDF predicate. There are 2
      different directions of a binary association, and thus there are 2
      different arcs (and thus 2 different predicates), arcs and
      predicates can be mapped one-on-one to each other.
    * Arcs may be also useful storing query statistics. For example,

          arc:arc(arc:from: newcombumber:introducer, arc:type:
          newcombumber:introduced-to-tm, arc:to:
          newcombumber:introducee) ~ [
             query_count: 519
          ]

          arc:arc(arc:from: newcombumber:introducee, arc:type:
          newcombumber:introduced-to-tm, arc:to:
          newcombumber:introducer) ~ [
             query_count: 12
          ]

    would denote that it happened much more often that the "introducer
    introduced Topic Maps to introducee" direction was travelled than
    the other way around.


Note also that arcs keep the automatic merging feature of TMDM. Thus, if 
both of the examples above were merged, the result would be

    arc:arc(arc:from: newcombumber:introducer, arc:type:
    newcombumber:introduced-to-tm, arc:to: newcombumber:introducee) ~ [
       - "introduced Topic Maps to";
       query_count: 519;
    ]

    arc:arc(arc:from: newcombumber:introducee, arc:type:
    newcombumber:introduced-to-tm, arc:to: newcombumber:introducer) ~ [
       - "was introduced to Topic Maps by";
       query_count: 12;
    ]

(The reason is that the arc-associations themselves do merge, and if 
they merge, then their reifiers merge, too.)


So, what does the community think about arcs? I think it is time to 
create some community modeling standards, and something like arcs should 
be parts of these standards.

ciao,
Xuân.

_______________________________________________
topicmapmail mailing list
topicmapmail-Zo64W7twoUFWk0Htik3J/[email protected]
http://www.infoloom.com/mailman/listinfo/topicmapmail
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.