[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Subject: RE: [xtm-wg] Re: XTM syntax issues
Thanks to "rho" for this response. I certainly like the "relativistic" approach he/she expounds. I believe it is in harmony with Murray's recent contribution about merging topic maps, and the fact that there are never any absolutes in the definition of topic boundaries. The scoping mechanism of Topic Maps recognises this. So does the notion of non-addressable subjects. The ability to model most properties of the world through associations, which themselves may be scoped, is another manifestation of this. The XTM Conceptual Model explicitly states that association is a subtype of topic. What is proposed in c below is simply the syntactic expression of this fact, and (as my original email aimed to show) it allows the XTM instance document to be more compact and (IMHO) much more readable by humans, which I do believe is useful in some cases (notwithstanding whatever has been said about the importance of user interfaces in the discussion between Patrick and Martin). As stated in an earlier email (about the proposed processing model) I believe we need to include in the spec a specific mapping from the syntax to the conceptual model. This is something that was originally part of the remit of the Conceptual Modelling Subgroup, but the subgroups were dissolved before we got to that stage, which can of course only be done once the syntax and conceptual model are both complete. I shall attempt to get a draft of such a mapping written in the next few days, so there is time for people to review it and respond before the Paris meetings. Best regards Daniel -----Original Message----- From: rho@bigpond.net.au [mailto:rho@bigpond.net.au] Sent: 03 January 2001 01:02 To: xtm-wg@egroups.com 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 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