logo
Application Specific Rules < AsTMa* Topic Map Engineering (Part II) < < Home 

PrevUpNext

Application Specific Rules

In this section we characterize our application domain by connecting the different concepts as it seems appropriate.

Authors and Editors

In general documents may have any number of authors (or editors alike), which includes also the case of no author. The only thing we can do here is to suggest an association linking the document to an author:

forall [ $d (document) ]
  => suggested exists [ (is-author-of)
                        opus : $d ]
     or
     suggested exists [ (is_editor-of)
                        opus : $d ] is-reified-by every-document-may-have-an-author-or-editor

Subclasses

For special documents also special requirements exists. For a standard, for instance, it is more relevant to capture the organisation publishing the standard than the particular authors or editors. For an article the author is more relevant, for books it can be authors or editors alike.

In the following we define these rules for particular document classes:

forall [ $d (standard | specification | white-paper) ]
  => exists [ (is-published-by)
              document : $d ] is-reified-by standards-and-specs-must-have-a-publisher
# this overrides document-may-have-a-publisher

forall $d [  (online-article) ]
  => exists $d [ oc : ?is_url ] is-reified-by online-article-must-have-url

forall [ $d (online-article) ]
  => exists [ (is-published-by)
              publisher : $p
              document  : $d ]
     and
     exists [ $p
              oc (homepage) : ?is_url ] is-reified-by online-article-must-have-online-publisher

forall [ $p (journal-paper) ]
  => exists [ (is-published-in)
              whole : $j
              part  : $p ]
     and
     exists [ $j (journal) ] is-reified-by journal-paper-must-be-published-in-journal
              
forall [ $c (conference-paper) ]
  => exists [ (is-published-in)
              whole : $p
              part  : $c ]
     and
     exists [ $p (proceedings) ] is-reified-by conference-paper-must-be-published-in-proceedings

forall [ $p (proceedings) ]
  => exists [ (is-published-by)
              document  : $p
              publisher : $c ]
     and
     exists [ $c (conference) ] is-reified-by proceedings-are-published-by-conference

Special cases also occur related to publishing: If, say, an article is published in a proceeding, then the article itself does not need a publisher, because the proceeding will have one. Still, we would like to have this information that the article is published implicit:

forall [ (is-published-in)
         part  : $d
         whole : $b ]
  => forall [ (is-published-by)
              document  : $b
              publisher : $p ]
     => derived exists [ (is-published-by)
                         document  : $d
                         publisher : $p ] is-reified-by document-is-implicitely-published-with-its-container
The keyword derived will signal every Topic Map processor that facts - in this case associations of type is-published-by - can be derived once the provided scenario is found in a map.

On a more commercial axis we might want to avoid to have two different publishers for one and the same document (although that is, of course, theoretically possible):

forall [ (is-published-by)
         document  : $b
         publisher : $p1 ]
  => not exists [ (is-published-by)
                  document  : $b
                  publisher : $p2 ] is-reified-by only-one-publisher

For all documents we must ensure that the cite code is unique within our map:

forall $t1 [ oc (cite-code): $cc1 ]
  => not exists $t2 [ oc (cite-code): $cc1 ]
According to the AsTMa! semantics different variables have to bind to different values which makes the above constraint work as intended. Leaving out the scope means that we do not care in this case.

Finally, once we mention a person it would be arguable also to have an affiliation for that person:

forall [ $a (person) ]
   => suggested exists [ (is-affiliated-with)
                         person : $a ] is-reified-with person-may-have-an-affiliation
The problem with that is that persons use to change affiliation whereas our intention is to use the affiliation at the time of a particular publication. To solve that cleanly we would have to record the affiliation together with a time interval; this is information difficult to acquire and maintain. Even if we had that, the retrieval process for one particular publication would have to search through all the author's affiliations and pick that which coincides with the publication date. That would have to be recorded much more precise.


PrevUpNext