[topicmapmail] Re: Topic Map - scope

Kal Ahmed kal@techquila.com
14 Oct 2003 20:39:32 +0100


Hi Christo,

If I understand your model correctly you want to say that for some part
of a course (lets say a "module" as you don't mention what the units are
part of), unit-1 is a unit for the average student and unit-2 is a unit
for the good student, right ?

My first question is do you want to model your units using topics ? The
advantage to doing that is that you can then say more about the topics
in the topic map without having to go down the road of reification. On
the other hand, if there is nothing more to say about the units you
could use occurrences scoped by the ability level of the student:


<topic id="average">
  <instanceOf><topicRef xlink:href="#ability-level"/></instanceOf>
  <baseName><baseNameString>Average Ability</baseNameString></baseName>
</topic>

<topic id="good">
  <instanceOf><topicRef xlink:href="#ability-level"/></instanceOf>
  <baseName><baseNameString>Good Ability</baseNameString></baseName>
</topic>

<topic id="module-a">
  <instanceOf><topicRef xlink:href="#module"/></instanceOf>
  <baseName><baseNameString>Module A</baseNameString></baseName>
  <occurrence>
    <instanceOf><topicRef xlink:href="#unit"/></instanceOf>
    <scope><topicRef xlink:href="#average"/></scope>
    <resourceRef
xlink:href="http://wssu.edu/faculty/dichevc/ex/sect1.htm"/>
  </occurrence>
  <occurrence>
    <instanceOf><topicRef xlink:href="#unit"/></instanceOf>
    <scope><topicRef xlink:href="#good"/></scope>
    <resourceRef
xlink:href="http://wssu.edu/faculty/dichevc/ex/sect2.htm"/>
  </occurrence>
</topic>

If you *do* want to model your units as topics (perhaps to create
associations to the subjects covered in the modules or occurrences with
meta data about the modules), then your association should probably tie
the unit to the module and use the ability level as a scope. This means
that you would need one association for each statement:

<association>
  <instanceOf><topicRef xlink:href="#part-of"/></instanceOf>
  <scope><topicRef xlink:href="#average"/></scope>
  <member>
    <roleSpec><topicRef xlink:href="#part"/></roleSpec>
    <topicRef xlink:href="#unit1"/>
  </member>
  <member>
    <roleSpec><topicRef xlink:href="#whole"/></roleSpec>
    <topicRef xlink:href="#module-a"/>
  </member>
</association>

<association>
  <instanceOf><topicRef xlink:href="#part-of"/></instanceOf>
  <scope><topicRef xlink:href="#good"/></scope>
  <member>
    <roleSpec><topicRef xlink:href="#part"/></roleSpec>
    <topicRef xlink:href="#unit2"/>
  </member>
  <member>
    <roleSpec><topicRef xlink:href="#whole"/></roleSpec>
    <topicRef xlink:href="#module-a"/>
  </member>
</association>

In the above example I used a generic "part-of" association type, you
may want to use a more specific association type, especially if there is
more to record in the assertion than just the relationship between
"module" and unit.

Cheers,

Kal

On Tue, 2003-10-14 at 20:04, Dichev, Christo wrote:
> Thomas,
> 
> > It would be better if you explained what you want to achieve before 
> > writing some XTM.  
> 
> I'll try - I'll use some XTM again,  because this would enable me 
> to explain better the origin of my questions and probably the source 
> of my confusions and misconceptions. Apologies if my questions sound 
> too naive. 
> 
> The straightforward approach to differentiating the units for more 
> able and less able students  is to define to units (unit-1 and unit-2)
> and link them using an association  (intended-for) - somethinh like 
> the following:
> 
> <topic id="unit-1"> 
>   <instanceOf><topicRef xlink:href="#leson"/></instanceOf> 
>   <baseName> 
>     <baseNameString> First Unit</baseNameString> 
>   </baseName> 
>   <occurrence> 
>     <instanceOf><topicRef xlink:href="#webpage"/></instanceOf> 
>     <resourceRef
> xlink:href="http://wssu.edu/faculty/dichevc/ex/sect2.html"/> 
>   </occurrence> 
> </topic>
> 
> <topic id="unit-2"> 
>   <instanceOf><topicRef xlink:href="#leson"/></instanceOf> 
>   <baseName> 
>     <baseNameString> Second Unit</baseNameString> 
>   </baseName> 
>   <occurrence> 
>     <instanceOf><topicRef xlink:href="#webpage"/></instanceOf> 
>     <resourceRef
> xlink:href="http://wssu.edu/faculty/dichevc/ex/sect1.htm"/> 
>   </occurrence> 
> </topic> 
> 
> <association>
>     <instanceOf>
>       <topicRef xlink:href="#intended-for"/>
>     </instanceOf>
>     <member>
>       <roleSpec>
>         <topicRef xlink:href="#average-student"/>
>       </roleSpec>
>    <topicRef xlink:href="#unit-1"/>
>     </member>
>     <member>
>       <roleSpec>
>         <topicRef xlink:href="#good-student"/>
>       </roleSpec>
>    <topicRef xlink:href="#unit-2"/>
>     </member>
>   </association>
> 
> My first intention was to combine unit-1 and unit-2 into a single 
> unit and to achieve the same effect, using scope. That's where I 
> got stuck.
> 
> Please excuse me if I am asking something too trivial.
> Christo
> 
> 
> 
> 
> 
> What you present seems a bit confusing.  You seem to 
> want to assign occurrences to associations, which is not kosher.  You 
> would assign those occurrences to a topic, whose subject is the 
> association in question, not to the instanceOf topic.
> 
> In your example, you have said that the same topic (unit-1) is the
> type 
> of the association, and also is a role-playing topic in the
> association. 
>   Your roles are the same type as the occurrence types.  Neither of 
> these makes much sense to me.
> 
> Scopes work fine for interactive filtering, but you have to decide
> what 
> you want to accomplish.
> 
> How you represent your units depends on how you view them and how they
> all fit together.  If you want to express that a unit uses different
> web 
> pages for average and good students, you can do that using scopes as 
> youhave, without messing with an association.
> 
> Alternatively, you could decide to link the unit with the web pages 
> using an association - then the unit topic would not also have them as
> occurrences.
> 
> Or you could decide that there are really two units one for average
> and 
> one for good students, and link them using an association.
> 
> You cannot necessarily expect a general-purpose UI to display these 
> alternatives exactly the way you would like, though.  It might or
> might 
> not.  For example, one of my standard UIs can filter topic names or 
> associations by scope, but not occurrences.
> 
> Your phrse "to filter some information (ignore irrelevant occurrences,
> roles) based on the user interaction with a topic map" does not
> explain 
> enough about what you want.
> 
> Cheers,
> 
> Tom P
> 
> > <topic id="unit-1">
> >   <instanceOf><topicRef xlink:href="#leson"/></instanceOf>
> >   <baseName>
> >     <baseNameString> First Unit</baseNameString>
> >   </baseName>
> > <baseName>
> >       <scope>
> >         <topicRef xlink:href="#average-student"/>
> >       </scope>
> >       <baseNameString>Unit for average</baseNameString>
> >     </baseName>
> >   <occurrence>
> >    <scope><topicRef xlink:href="#average-student"/></scope>
> >     <instanceOf><topicRef xlink:href="#webpage"/></instanceOf>
> >     <resourceRef 
> > xlink:href="http://wssu.edu/faculty/dichevc/ex/sect1.htm"/>
> >   </occurrence>
> > <baseName>
> >       <scope>
> >         <topicRef xlink:href="#good-student"/>
> >       </scope>
> >       <baseNameString>Unit for good</baseNameString>
> >     </baseName>
> >   <occurrence>
> >     <scope><topicRef xlink:href="#good-student"/></scope>
> >     <instanceOf><topicRef xlink:href="#webpage"/></instanceOf>
> >     <resourceRef 
> > xlink:href="http://wssu.edu/faculty/dichevc/ex/sect2.html"/>
> >   </occurrence>
> > </topic>
> > 
> > Now given that topic to use it to type an association, i.e.
> > 
> > <association>
> >     <instanceOf>
> >       <topicRef xlink:href="#unit-1"/>
> >     </instanceOf>
> >     <member>
> >   <scope><topicRef xlink:href="#average-student"/></scope>
> >       <roleSpec>
> >         <topicRef xlink:href="#average-student"/>
> >       </roleSpec>
> >    <topicRef xlink:href="#unit-1"/>
> >     </member>
> >     <member>
> >   <scope><topicRef xlink:href="#good-student"/></scope>
> >       <roleSpec>
> >         <topicRef xlink:href="#good-student"/>
> >       </roleSpec>
> >    <topicRef xlink:href="#unit-1"/>
> >     </member>
> >   </association>
> > 
> > so that the Omnigator displays different occurrences depending on
> > the context, say based on the "current topic". May be this is a
> > wrong approach. My intention is construct an example that is able
> > to filter some information (ignore irrelevant occurrences, roles)
> > based on the user interaction with a topic map.
> > 
> > Any help in this direction will be appreciated.
> > 
> > Thank you,
> > Christo
> > 
> > 
> > Hi Christo,
> > 
> > * Christo Dichev
> > |
> > | However I can't generate simple and meaningful examples to start
> up.
> > | For instance, I can not figure out how can the resources in the
> > | following topic be displayed depending on the context
> > | ("average-student" or "good-student").
> > 
> > Not sure what you mean here. Your XTM snippets look perfectly OK
> with
> > me, so I'm not sure what the problem is.
> > 
> > If you want to try them out, just load the topic map in the
> Omnigator,
> > then click on the "Filter" link near the top. You can select your
> > preferred scope there, and the Omnigator will automatically start
> > filtering. Was that what you wanted to know, or did I completely
> > misunderstand your question?
> > 
> > -- 
> > Lars Marius Garshol, Ontopian         <URL: http://www.ontopia.net >
> > GSM: +47 98 21 55 50                  <URL:
> http://www.garshol.priv.no >
> > 
> > _______________________________________________
> > topicmapmail mailing list
> > topicmapmail@infoloom.com
> > http://www.infoloom.com/mailman/listinfo/topicmapmail
> > 
> 
> 
> _______________________________________________
> topicmapmail mailing list
> topicmapmail@infoloom.com
> http://www.infoloom.com/mailman/listinfo/topicmapmail
-- 
Kal Ahmed <kal@techquila.com>
techquila