OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

topicmaps-comment message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Subject: Re: [xtm-wg] XTM syntax issues


Daniel,

I think that your solutions for issue 1):

> a) allow topicRef to point to an association element
> b) allow association to have a subjectIdentity subelement
> c) allow association to have all the subelements that topic has, plus
others

map to those discussed in Montreal
http://www.doctypes.org/xtm/syntax/reification-syntax.html
as follows:
a) <=> 6.
b) <=> 5.
c) <=> 1. (somewhat)

However I believe that  a) (or 6. ) is the selected way.
This is why "id" on association is a required attribute.

So you can address Association by topicRef.
This is written up somewhere in the spec.
Could not find exactly where, but remember reading it. :-))

Hope it makes things easier,

Nikita.

----- Original Message -----
From: Daniel Rivers-Moore <daniel.rivers-moore@rivcom.com>
To: <xtm-wg@egroups.com>
Sent: Friday, December 15, 2000 4:17 PM
Subject: RE: [xtm-wg] XTM syntax issues


> Correction to the last item in the message below:
>
> c) Allow all the subelements of topic to occur on association
> This would make the association content model into this:
> <!ELEMENT association (associationSpec? , subjectIdentity? ,  (baseName |
> occurrence )* , scope? , member+ )>
>
> should read as follows
>
> c) Allow all the subelements of topic to occur on association
> This would make the association content model into this:
> <!ELEMENT association (associationSpec? , InstanceOf* , subjectIdentity? ,
> (baseName | occurrence )* , scope? , member+ )>
>
>
>
> Daniel
>
> -----Original Message-----
> From: Daniel Rivers-Moore [mailto:daniel.rivers-moore@rivcom.com]
> Sent: 15 December 2000 18:29
> To: xtm-wg@egroups.com
> Subject: [xtm-wg] XTM syntax issues
>
>
> To illustrate and explain the issues I have with the current XTM syntax, I
> shall use the following scenario.
>
> I want to create a topic association between John, a man, and Mary, a
woman.
> The association is the marriage between John and Mary. In this
association,
> John is Mary's husband, and Mary is John's wife. The association is based
on
> an association template, called "marriage", which expresses the constraint
> that the husband in a marriage must be a man and the wife in a marriage
must
> be a woman.
>
> I shall build the topic map for this, and highlight problem issues as I
come
> upon them.
>
> Stage 1: Creating topics for the things I'll be dealing with:
>
> I create a topic for man, a topic for woman, a topic for John, who is an
> instance of man, and a topic for Mary, who is an instance of woman, a
topic
> for the role of husband, and a topic for the role of wife. No problems so
> far. Here is the resultant syntax:
>
> <topicMap>
> <topic id="topic.man">
> <baseName>
> <baseNameString>man</baseNameString>
> </baseName>
> </topic>
> <topic id="topic.woman">
> <baseName>
> <baseNameString>woman</baseNameString>
> </baseName>
> </topic>
> <topic id="topic.John">
> <instanceOf>
> <topicRef xlink:href="#topic.man"/>
> </instanceOf>
> <baseName>
> <baseNameString>John</baseNameString>
> </baseName>
> </topic>
> <topic id="topic.Mary">
> <instanceOf>
> <topicRef xlink:href="#topic.woman"/>
> </instanceOf>
> <baseName>
> <baseNameString>Mary</baseNameString>
> </baseName>
> </topic>
> <topic id="topic.husband">
> <baseName>
> <baseNameString>husband</baseNameString>
> </baseName>
> </topic>
> <topic id="topic.wife">
> <baseName>
> <baseNameString>wife</baseNameString>
> </baseName>
> </topic>
> </topicMap>
>
>
> Stage 2: Creating an association
>
> Now I want to create the association that is the marriage between John and
> Mary. This is a topic. Its baseName will be "marriage of John and Mary".
To
> do this I have to create two elements, a topic to contain the baseName,
and
> an association to contain the members, with roleSpecs pointing to the
roles
> those members play.
>
> <topic id="topic.marriage-of-John-and-Mary">
> <baseName>
> <baseNameString>marriage of John and Mary</baseNameString>
> </baseName>
> </topic>
> <association id="association.marriage-of-John-and-Mary">
> <member>
> <roleSpec>
> <topicRef xlink:href="#topic.husband"/>
> </roleSpec>
> <topicRef xlink:href="#topic.John"/>
> </member>
> <member>
> <roleSpec>
> <topicRef xlink:href="#topic.wife"/>
> </roleSpec>
> <topicRef xlink:href="#topic.Mary"/>
> </member>
> </association>
>
> So far so good. But now we  begin to encounter problems.
>
>
> ISSUE 1 - Making an association and a topic element become a single node
in
> the graph.
>
> How do I say that this topic and this association are the same thing (a
> single node in the graph), so that the name "marriage of John and Mary"
will
> apply to the association? The mechanism of subjectIdentity is the
requisite
> method. I'd like to put a subjectIdentity on the association and use it to
> point to the topic, but the DTD does not allow a subjectIdentity
subelement
> on association. I can put a subjectIdentity on the topic with a topicRef
to
> the association, but despite the fact that an association is a topic, I'm
> disallowed from doing this by the restriction that a topicRef can only
point
> to a topic element.
>
>
> Solutions:
>
> a) allow topicRef to point to an association element
> b) allow association to have a subjectIdentity subelement
> c) allow association to have all the subelements that topic has, plus
others
> that are peculiar to them.
>
> Solution a) would allow this:
>
> <topic id="topic.marriage-of-John-and-Mary">
> <subjectIdentity>
> <topicRef>#association.marriage-of-John-and-Mary</topicRef>
> </subjectIdentity>
> <baseName>
> <baseNameString>marriage of John and Mary</baseNameString>
> </baseName>
> </topic>
> <association id="association.marriage-of-John-and-Mary">
> <member>
> <roleSpec>
> <topicRef xlink:href="#topic.husband"/>
> </roleSpec>
> <topicRef xlink:href="#topic.John"/>
> </member>
> <member>
> <roleSpec>
> <topicRef xlink:href="#topic.wife"/>
> </roleSpec>
> <topicRef xlink:href="#topic.Mary"/>
> </member>
> </association>
>
> Solution b) would allow this (which is preferable because I can find the
> baseName of the association by following a pointer from within the
> association's subtree, rather than having to search my entire topic map
for
> a pointer from some topic element back to the association element in order
> to find its baseName):
>
> <topic id="topic.marriage-of-John-and-Mary">
> <baseName>
> <baseNameString>marriage of John and Mary</baseNameString>
> </baseName>
> </topic>
> <association id="association.marriage-of-John-and-Mary">
> <subjectIdentity>
> <topicRef>#topic.marriage-of-John-and-Mary</topicRef>
> </subjectIdentity>
> <member>
> <roleSpec>
> <topicRef xlink:href="#topic.husband"/>
> </roleSpec>
> <topicRef xlink:href="#topic.John"/>
> </member>
> <member>
> <roleSpec>
> <topicRef xlink:href="#topic.wife"/>
> </roleSpec>
> <topicRef xlink:href="#topic.Mary"/>
> </member>
> </association>
>
> Solution c) would allow this (which is yet more preferable because all
> information about the association is in one place, can be immediately
> processed, and the instance is more readable and intuitive, and less
> verbose):
>
> <association id="association.marriage-of-John-and-Mary">
> <baseName>
> <baseNameString>marriage of John and Mary</baseNameString>
> </baseName>
> <member>
> <roleSpec>
> <topicRef xlink:href="#topic.husband"/>
> </roleSpec>
> <topicRef xlink:href="#topic.John"/>
> </member>
> <member>
> <roleSpec>
> <topicRef xlink:href="#topic.wife"/>
> </roleSpec>
> <topicRef xlink:href="#topic.Mary"/>
> </member>
> </association>
>
>
>
> Stage 3: Deriving the association from an association template
>
> Now I want to state that the association that is the marriage of John and
> Mary is derived from the marriage association template.
>
> First, I create an association that serves as a template for all marriage
> associations, and which has, as members in each role, the classes of
things
> that can play that role in instance associations that conform to the
> template. I also create a topic in order to give this association template
> the baseName "marriage".
>
> <topic id="topic.marriage">
> <subjectIdentity>
> <topicRef>#association-template.marriage</topicRef>
> </subjectIdentity>
> <baseName>
> <baseNameString>marriage</baseNameString>
> </baseName>
> </topic>
> <association id="association-template.marriage">
> <member>
> <roleSpec>
> <topicRef xlink:href="#topic.husband"/>
> </roleSpec>
> <topicRef xlink:href="#topic.man"/>
> </member>
> <member>
> <roleSpec>
> <topicRef xlink:href="#topic.wife"/>
> </roleSpec>
> <topicRef xlink:href="#topic.woman"/>
> </member>
> </association>
>
>
> ISSUE 2: Stating that an association is derived from an association
> template?
>
> How do I now relate the instance association with this template? The only
> way I can to this with the current syntax is by using the instanceOf
> subelement on the association. However, when my document is processed, and
> the association and the topic have become a single node in the graph, this
> instanceOf and any instanceOfs in the topic element will be brought
> together.
>
> <topic id="topic.marriage-of-John-and-Mary">
> <instanceOf>
> <topicRef xlink:href="#sacred-union"/>
> </instanceOf>
> <instanceOf>
> <topicRef xlink:href="#contractual-relationship"/>
> </instanceOf>
> <baseName>
> <baseNameString>marriage of John and Mary</baseNameString>
> </baseName>
> </topic>
> <association id="association.marriage-of-John-and-Mary">
> <instanceOf>
> <topicRef xlink:href="#association-template.marriage"/>
> </instanceOf>
> <member>
> <roleSpec>
> <topicRef xlink:href="#topic.husband"/>
> </roleSpec>
> <topicRef xlink:href="#topic.John"/>
> </member>
> <member>
> <roleSpec>
> <topicRef xlink:href="#topic.wife"/>
> </roleSpec>
> <topicRef xlink:href="#topic.Mary"/>
> </member>
> </association>
>
> Once the above elements have been merged, the resultant topic map node
will
> have instanceOf relationships with association-template.marriage, with
> sacred-union and with contractual-relationship. Which of these is the
> relevant association template? There is no way of knowing. We need a
special
> subelement of association for this purpose. It would be logical to call it
> associationSpec. This will allow the following:
>
> <association id="association.marriage-of-John-and-Mary">
> <associationSpec>
> <topicRef xlink:href="#association-template.marriage"/>
> </associationSpec>
> <member>
> <roleSpec>
> <topicRef xlink:href="#topic.husband"/>
> </roleSpec>
> <topicRef xlink:href="#topic.John"/>
> </member>
> <member>
> <roleSpec>
> <topicRef xlink:href="#topic.wife"/>
> </roleSpec>
> <topicRef xlink:href="#topic.Mary"/>
> </member>
> </association>
>
> Now the pointer from association.marriage-of-John-and-Mary to the marriage
> template cannot be confused with any instanceOf pointers on the
> topic.marriage-of-John-and-Mary after they are merged in the graph.
>
>
> SUMMARY:
>
> The following DTD changes would meet my minimal concerns:
>
> i) Allow xlink:href attributes on topicRef elements to point to
association
> elements as well as topic elements.
> This requires no change to the formal declarations, but only a change to
the
> descriptive text.
>
> ii) Use associationSpec instead of instanceOf as first subelement of
> association
> This would require the following in the DTD
>
> <!ELEMENT association (associationSpec? , scope? , member+ )>
> <!ATTLIST association  id ID  #REQUIRED >
> <!ELEMENT associationSpec (topicRef | subjectIndicatorRef )>
> <!ATTLIST associationSpec id ID  #IMPLIED >
>
>
>
> The following additional DTD change would greatly facilitate processing
and
> readability
>
> b) Allow a subjectIdentity subelement on association
> This would make the association content model into this:
> <!ELEMENT association (associationSpec? , subjectIdentity? ,  scope? ,
> member+ )>
>
>
> The following additional DTD change would allow more compact and readable
> XTM instance documents
>
> c) Allow all the subelements of topic to occur on association
> This would make the association content model into this:
> <!ELEMENT association (associationSpec? , subjectIdentity? ,  (baseName |
> occurrence )* , scope? , member+ )>
>
>
>
> I hope what I have said above is sufficiently clear and concise. I'd be
> happy to clarify if it is not clear, and look forward to seeing what
others
> think about these issues. Specifically, if others have found ways of doing
> what I describe without changing the DTD, I'd love to see examples of
> instances (based on the John-Mary example or otherwise) that show how
> they've managed to do this.
>
> Best regards to all
>
> Daniel
>
> = = = = = = = = = = = = = = = = = =
> Daniel Rivers-Moore
> Director of New Technologies
> RivCom
> Tel: +44 (0) 1793 792004
> Email: daniel.rivers-moore@rivcom.com
>
>
>
>
> To Post a message, send it to:   xtm-wg@eGroups.com
>
> To Unsubscribe, send a blank message to: xtm-wg-unsubscribe@eGroups.com
>
>
> To Post a message, send it to:   xtm-wg@eGroups.com
>
> To Unsubscribe, send a blank message to: xtm-wg-unsubscribe@eGroups.com
>
>
>


-------------------------- eGroups Sponsor -------------------------~-~>
Big News - eGroups is becoming Yahoo! Groups
Click here for more details:
http://click.egroups.com/1/10801/0/_/337252/_/976941593/
---------------------------------------------------------------------_->

To Post a message, send it to:   xtm-wg@eGroups.com

To Unsubscribe, send a blank message to: xtm-wg-unsubscribe@eGroups.com



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Powered by eList eXpress LLC