![]() |
![]() |
![]() |
||||||||||||||
| Application Specific Rules < AsTMa* Topic Map Engineering (Part II) < < Home | ||||||||||||||||
|
Application Specific RulesIn this section we characterize our application domain by connecting the different concepts as it seems appropriate. Authors and EditorsIn 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-editorSubclassesFor 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-conferenceSpecial 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-publisherFor 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.
|
|||||||||||||||