[topicmapmail] Dates and Published Subject Indicators

Robert McKinnon r.m.mckinnon@verizon.net
22 Sep 2002 03:28:05 -0400


I have begun an offline discussion with Lars Garshol about using Topic
Maps and Published Subject Indicators to represent genealogical data.

Arising from this discussion are some more general questions that I
thought would be bettered asked on this list. I'll begin by asking my
current questions first, and then go on to describe the problem I am
trying to solve.

Is there a definition for what should be at the end of a PSI URL?

Is there a behaviour defined for what a topic map processor should do
when a subjectIndicatorRef is parsed? It would be nice if the URI would
be invoked, and if the result is a topic then that topic be merged into
the parsed representation of the topic map. Is this the case?

My problem is to find a good way to represent dates in a genealogy topic
map. To me there seem to be three choices:


1) Use <occurrence> and <resourceData>

  <topic id="mary">
    <instanceOf>
      <topicRef xlink:href="#person"/>
    </instanceOf>
    <baseName>
      <scope>
        <topicRef xlink:href="#statutory-death-certificate-554--11--"/>
      </scope>
      <baseNameString>Mary Jamieson</baseNameString>
    </baseName>
    <occurrence>
      <scope>
        <topicRef xlink:href="#statutory-death-certificate-554--11--"/>
      </scope>
      <instanceOf>
        <topicRef xlink:href="#date-of-death"/>
      </instanceOf>
      <resourceData>1879-09-08</resourceData>
    </occurrence>
  </topic>

This results in a more concise format than the other two approaches I
consider below. However Mary's date of death is not really an occurrence
of the topic Mary, is it? Also I don't get the advantage of having the
date as a topic. I might what to query for all associations that involve
a specific date for example, is this possible if <resourceData> is used?


2) Use an <association> and a <topicRef>

  <!-- association type -->
  <topic id="death-date">
    <baseName>
      <scope>
        <topicRef xlink:href="#english"/>
      </scope>
      <baseNameString>death date</baseNameString>
    </baseName>
    <baseName>
      <scope>
        <topicRef xlink:href="#person"/>
      </scope>
      <baseNameString>died on</baseNameString>
    </baseName>
    <baseName>
      <scope>
        <topicRef xlink:href="#date"/>
      </scope>
      <baseNameString>date of death of</baseNameString>
    </baseName>
  </topic>

  <association id="death-date-mary">
    <instanceOf>
      <topicRef xlink:href="#death-date"/>
    </instanceOf>
    <scope>
      <topicRef xlink:href="#statutory-death-certificate-554--11--"/>
    </scope>
    <member>
      <roleSpec>
        <topicRef xlink:href="#person"/>
      </roleSpec>
      <topicRef xlink:href="#mary"/>
    </member>
    <member>
      <roleSpec>
        <topicRef xlink:href="#date"/>
      </roleSpec>
      <topicRef xlink:href="#date-1879-09-08"/>
    </member>
  </association>

  <topic id="date-1879-09-08">
    <instanceOf>
      <subjectIndicatorRef
xlink:href="http://psi.dates.org/gregorian-calendar/date"/>
    </instanceOf>
    <baseName>
      <scope>
        <topicRef xlink:href="iso-format"/>
      </scope>
      <baseNameString>1879-09-08</baseNameString>
    </baseName>
    <baseName>
      <scope>
        <topicRef xlink:href="#english"/>
        <topicRef xlink:href="#long-date-format"/>
      </scope>
      <baseNameString>8th September 1879</baseNameString>
    </baseName>
  </topic>


I like this option more than the first, as I think using an association
is a more appropriate way to represent the information than by using an
occurrence. Also the base name strings on the association type topic and
the date topic can be used for natural language generation in a
presentation of the data. However having a new topic for each date
within the topic map seems incredibly verbose.


3) Use an <association> and a <subjectIndicatorRef>

  <association id="death-date-mary">
    <instanceOf>
      <topicRef xlink:href="#death-date"/>
    </instanceOf>
    <scope>
      <topicRef xlink:href="#statutory-death-certificate-554--11--"/>
    </scope>
    <member>
      <roleSpec>
        <topicRef xlink:href="#person"/>
      </roleSpec>
      <topicRef xlink:href="#mary"/>
    </member>
    <member>
      <roleSpec>
        <topicRef xlink:href="#date"/>
      </roleSpec>
      <subjectIndicatorRef
xlink:href="http://psi.dates.org/gregorian-calendar/1879-09-08"/>
    </member>
  </association>

This is the approach I like the most. However I would like the date PSI
URL to resolve to a topic instance and for the topic map processor to
use allow access to the base name strings for natural language
generation in a presentation of the data.

My idea is that there be a process behind the date PSI URL that produces
the date topic XML representation for the specific date requested. So
http://psi.dates.org/gregorian-calendar/1879-09-08 could return:

  <topic id="date-1879-09-08">
    <instanceOf>
      <subjectIndicatorRef
xlink:href="http://psi.dates.org/gregorian-calendar/date"/>
    </instanceOf>
    <baseName>
      <scope>
        <topicRef xlink:href="iso-format"/>
      </scope>
      <baseNameString>1879-09-08</baseNameString>
    </baseName>
    <baseName>
      <scope>
        <topicRef xlink:href="#english"/>
        <topicRef xlink:href="#long-date-format"/>
      </scope>
      <baseNameString>8th September 1879</baseNameString>
    </baseName>
  </topic>

So now you have the context for the questions I posed earlier:
Is there a definition for what should be at the end of a PSI URL?
Is there a behaviour defined for what a topic map processor should do
when a subjectIndicatorRef is parsed?

Regards,
Robert McKinnon