[topicmapmail] Inheriting Scope

Steven Hammond shammond@northpub.com
Sun, 17 Apr 2005 12:08:11 -0400


This is a multi-part message in MIME format.
--------------040308000407060101030202
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit


Murray,

    Thanks for that answer, I was worried I wouldn't get enough of an 
answer...  I think I followed most of what you said, but I'm still 
thinking about "generalizes" vs. "is a" relationships.

>
> And just to clarify, when you state that one Association is an
> instance of another, do you mean to say:
>
>   * the typing Topic used to type Association B is either a
>     subclass of the typing Topic of Association A
>
> or
>
>   * the typing Topic of association A is being used as the
>     typing topic of association B.
>
> I ask because Associations themselves don't have instances. An
> Association type (i.e., a Topic used as a type for an Association)
> can be an instance of a given class, but the Association itself
> can't be considered a class (which would be required in order to
> have instances in the traditional concept of a class-instance
> relation).

In response to your question, let me be more specific about what I'm 
trying to do. The application is a tool for mapping characters, 
locations and events in a novel or series of novels. At the moment there 
are two broad categories of associations, social and geographic and 
there are a number of specific types of associations such as "lives-in", 
"is-in", and "is-friend-of". I want to scope those broad categories to 
define different perspectives on the map. Here is the XTM for the two 
associations.

        <association id="#lives-in">
            <scope>
                <topicRef xlink:href="#geographic-association"/>
            </scope>
            <member>
                <roleSpec><topicRef xlink:href="#character"/></roleSpec>
                <topicRef xlink:href="#character"/>
            </member>
            <member>
                <roleSpec><topicRef xlink:href="#location"/></roleSpec>
                <topicRef xlink:href="#location"/>               
            </member>           
        </association>

        <association>
            <instanceOf><topicRef xlink:href="#lives-in"/></instanceOf>
            <member>
                <roleSpec><topicRef xlink:href="#character"/></roleSpec>
                <topicRef xlink:href="#andrea_mellea"/>
            </member> 
            <member>
                <roleSpec><topicRef xlink:href="#location"/></roleSpec>
                <topicRef xlink:href="#boston"/>
            </member>
        </association>

This seems to validate with the xtm1.dtd, but your question leads me to 
believe that it is incorrect. Why?

Also, in reading the dtd's the XTM spec at 
http://www.topicmaps.org/xtm/index.html#elt-member it defines member as

  <!*ELEMENT* member
     ( roleSpec <http://www.topicmaps.org/xtm/index.html#elt-roleSpec>?, ( topicRef <http://www.topicmaps.org/xtm/index.html#elt-topicRef> | resourceRef <http://www.topicmaps.org/xtm/index.html#elt-resourceRef> | subjectIndicatorRef <http://www.topicmaps.org/xtm/index.html#elt-subjectIndicatorRef> )+ )
  >

while the dtd at http://www.topicmaps.org/xtm/1.0/xtm1.dtd defines 
member as

<!ELEMENT member
   ( roleSpec?, ( topicRef | resourceRef | subjectIndicatorRef )* )
>

Which is correct? If the second is correct, then I can define the 
general association without the topicRef's, which seems cleaner (i.e. 
more like a type definition).

        <association id="#lives-in">
            <scope>
                <topicRef xlink:href="#geographic-association"/>
            </scope>
            <member>
                <roleSpec><topicRef xlink:href="#character"/></roleSpec>
            </member>
            <member>
                <roleSpec><topicRef 
xlink:href="#location"/></roleSpec>       
            </member>           
        </association>


Hopefully this make some sense.

Thanks,
Steve


--------------040308000407060101030202
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
<br>
Murray,<br>
<br>
&nbsp;&nbsp;&nbsp; Thanks for that answer, I was worried I wouldn't get enough of an
answer...&nbsp; I think I followed most of what you said, but I'm still
thinking about "generalizes" vs. "is a" relationships.<br>
<blockquote cite="mid4261C81A.7020905@open.ac.uk" type="cite"><br>
And just to clarify, when you state that one Association is an <br>
instance of another, do you mean to say: <br>
  <br>
&nbsp; * the typing Topic used to type Association B is either a <br>
&nbsp;&nbsp;&nbsp; subclass of the typing Topic of Association A <br>
  <br>
or <br>
  <br>
&nbsp; * the typing Topic of association A is being used as the <br>
&nbsp;&nbsp;&nbsp; typing topic of association B. <br>
  <br>
I ask because Associations themselves don't have instances. An <br>
Association type (i.e., a Topic used as a type for an Association) <br>
can be an instance of a given class, but the Association itself <br>
can't be considered a class (which would be required in order to <br>
have instances in the traditional concept of a class-instance <br>
relation). <br>
</blockquote>
In response to your question, let me be more specific about what I'm
trying to do. The application is a tool for mapping characters,
locations and events in a novel or series of novels. At the moment
there are two broad categories of associations, social and geographic
and there are a number of specific types of associations such as
"lives-in", "is-in", and "is-friend-of". I want to scope those broad
categories to define different perspectives on the map. Here is the XTM
for the two associations.<br>
<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;association id="#lives-in"&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;scope&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;topicRef xlink:href="#geographic-association"/&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/scope&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;member&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;roleSpec&gt;&lt;topicRef
xlink:href="#character"/&gt;&lt;/roleSpec&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;topicRef xlink:href="#character"/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/member&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;member&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;roleSpec&gt;&lt;topicRef
xlink:href="#location"/&gt;&lt;/roleSpec&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;topicRef xlink:href="#location"/&gt;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/member&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/association&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;association&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;instanceOf&gt;&lt;topicRef
xlink:href="#lives-in"/&gt;&lt;/instanceOf&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;member&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;roleSpec&gt;&lt;topicRef
xlink:href="#character"/&gt;&lt;/roleSpec&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;topicRef xlink:href="#andrea_mellea"/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/member&gt;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;member&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;roleSpec&gt;&lt;topicRef
xlink:href="#location"/&gt;&lt;/roleSpec&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;topicRef xlink:href="#boston"/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/member&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/association&gt; <br>
<br>
This seems to validate with the xtm1.dtd, but your question leads me to
believe that it is incorrect. Why?<br>
<br>
Also, in reading the dtd's the XTM spec at
<a class="moz-txt-link-freetext" href="http://www.topicmaps.org/xtm/index.html#elt-member">http://www.topicmaps.org/xtm/index.html#elt-member</a> it defines member as
<br>
<pre class="markup" id="e-member">  &lt;!<b>ELEMENT</b> member
     ( <a class="dref"
 href="http://www.topicmaps.org/xtm/index.html#elt-roleSpec">roleSpec</a>?, ( <a
 class="dref"
 href="http://www.topicmaps.org/xtm/index.html#elt-topicRef">topicRef</a> | <a
 class="dref"
 href="http://www.topicmaps.org/xtm/index.html#elt-resourceRef">resourceRef</a> | <a
 class="dref"
 href="http://www.topicmaps.org/xtm/index.html#elt-subjectIndicatorRef">subjectIndicatorRef</a> )+ )
  &gt;</pre>
while the dtd at <a class="moz-txt-link-freetext" href="http://www.topicmaps.org/xtm/1.0/xtm1.dtd">http://www.topicmaps.org/xtm/1.0/xtm1.dtd</a> defines
member as <br>
<pre>&lt;!ELEMENT member
   ( roleSpec?, ( topicRef | resourceRef | subjectIndicatorRef )* )
&gt;</pre>
Which is correct? If the second is correct, then I can define the
general association without the topicRef's, which seems cleaner (i.e.
more like a type definition).<br>
<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;association id="#lives-in"&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;scope&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;topicRef xlink:href="#geographic-association"/&gt;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/scope&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;member&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;roleSpec&gt;&lt;topicRef
xlink:href="#character"/&gt;&lt;/roleSpec&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/member&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;member&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;roleSpec&gt;&lt;topicRef
xlink:href="#location"/&gt;&lt;/roleSpec&gt;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/member&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/association&gt;<br>
<br>
<br>
Hopefully this make some sense.<br>
<br>
Thanks,<br>
Steve<br>
<br>
</body>
</html>

--------------040308000407060101030202--