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: [xtm-wg] Re: XTM syntax issues


--- In xtm-wg@egroups.com, Daniel Rivers-Moore
<daniel.rivers-moore@r...> wrote:

> 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+ )>

I personally would strongly favour this, because we could 
eventually drop the concept of a 'topic' as a whole. 

This would let us live in a highly _relativistic_ world in which 
there is nothing like "the tree in my garden" but only "what most
people see as tree in my garden", "what some birds may do with that
tree in my garden", "what the gardener sees in that tree".

A topic only becomes a 'topic' through the intersection/merging
of all the roles it plays in the 'universe'.

It is the same with (network) protocols. The 'sender' is a role,
the 'receiver' also. But while a HTTP client deals only with
(a) the protocol engine, it might also have (b) a user interface,
(c) an operating system interface, .... Only the combination
of all interactions/protocols makes up a particular browser.

So views are everywhere and the associations could carry the
whole weight.

My 0.02 EUR

\rho

> -----Original Message-----
> From: Daniel Rivers-Moore [mailto:daniel.rivers-moore@r...]
> 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@r...
> 
> 
> 
> 
> To Post a message, send it to:   xtm-wg@e...
> 
> To Unsubscribe, send a blank message to: xtm-wg-unsubscribe@e...


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