changes to the biblio ontology

Tom Gruber <>
Message-id: <2923846746-12479278@KSL-Mac-69>
Date: Wed, 26 Aug 92  12:39:06 PDT
From: Tom Gruber <>
To: srkb@ISI.EDU
Subject: changes to the biblio ontology
In-reply-to: Msg of Mon, 24 Aug 92 18:28:06 edt from (Randall Davis) 
--- Excerpt from Tom Gruber (Fri, 21 Aug 92  14:01:09 PDT) ---

> If someone adds an author entry in some person database, and then
> asserts that the person is a of some book, then the
> constraints on documents say that the person must be an author.
>  [(*) see note below]
>   (*) Footnote. Analyzing this example uncovered some bugs in the biblio
>      ontology, which I'll report in a separate message.

--- Excerpt from Randy Davis (Mon, 24 Aug 92 18:28:06 edt) ---

> Stephen King and Samuel Clemens are both going to be problematic.
> And what about anonymous works (eg, the bible)?

> And committees?  How about committees with pseudonyms (eg, the
> Bourbaki, who wrote a well known set of elementary mathematics
> texts)?

> And individuals who publish?

> One manifestation of taking this complexity seriously might be the
> desire to be able to say something like ``the author(s) of a document
> are *typically* one or more humans,'' ``most authors have one name,''
> etc.


In light of these comments and the follow-on remarks, I went back to
the bibliography ontology to see if I could "fix" the definitions to
accomodate Randy's observations and strike a balance with what is
needed for anticipated bibliography agents and services.  Here are the
changes to the file.  The updated ontology, which is now labeled
version 2, can be gotten by anonymous ftp from the directory*

The latest frame ontology file can also be found there.

Attached are the changes I made to the biblio ontology.  I will refer
to them in a subsequent message addressing specific points raised on
the list.

----- MODIFIED ----- (just the doc string)

(define-function AGENT.NAME (?agent) :-> ?name
  "Function from an agent to the name by which it goes.  If an agent
has more than one complete name (not parts of the name, such as first
and last name), then the is the name used to identify that
agent in the shared world.  If the shared world is represented in a
database, then the name would be a `key field' for the agent.  Other
names can be related to the agent by some other relations."

  :def (and (agent ?agent)
            (biblio-name ?name)))

----- DELETED -----

(define-function PERSON.NAME (?person) :-> ?name
  "The name that people use as authors of publications.  One name per

  :def (and (person ?person)
            (biblio-name ?name)))

----- MODIFIED -----

(define-class AUTHOR (?x)
  "An author is an agent who writes things.  An author must have a
name, which is its real name as an agent.  The name as author
may or may not be the agent's name, but usually is."

  :def (and (agent ?x)
            (has-one ?x

  :default-constraints (have-same-values ?x

  :issues ((:see-also AUTHOR.NAME)))

----- MODIFIED -----

(define-relation AUTHOR.NAME  (?author ?name)
  "An author name is the name of an agent used to identify
it as an author.  It is not necessarily unique; authors may
go by pseudonyms."

  :def (and (author ?author)
            (biblio-name ?name)
            (or ( ?author ?name)
                (penname ?author ?name))))

----- ADDED -----

(define-relation PENNAME (?author ?name)
  "An author's pseudonym [Webster].  An author may use several
pseudonyms.  Which name is a function of the document."

  :def ( ?author ?name)
  :issues ((:see-also DOC.AUTHOR-NAME)))

----- ADDED -----

;;; note the naming convention: CLASS.SLOT versus HYPHENATED-CLASS

(define-class AUTHOR-NAME (?name)
  "A string that is used as the of some author.
Often databases of author names are kept separately from
databases of people or documents."

  :axiom-def (exact-range AUTHOR.NAME AUTHOR-NAME))

----- MODIFIED -----

(define-function ORGANIZATION.NAME (?organization) :-> ?name
  "The name by which organizations go by.  One name per place."

  :def (and (organization ?organization)
            (biblio-name ?name)
            ( ?organization ?name))) ; specialization of

----- MODIFIED -----

(define-class PUBLISHER (?x)
  "A publisher is an organization that publishes.  
The owner of a publishing company may be a person, 
and the name of the publisher may be the name of a person."

  :def (and (organization ?x)
            (has-one ?x PUBLISHER.NAME)))

----- MODIFIED -----

(define-function PUBLISHER.NAME (?publisher) :-> ?name
  "The name of a publisher; one per publisher."

  :def (and (publisher ?publisher)
            (biblio-name ?name)
            ( ?publisher ?name)))
----- MODIFIED ----- (just the doc string)

(define-class UNIVERSITY (?x)
  "A university is an institute of higher learning that offers a
graduate research program.  Of importance here is the fact that
universities sponsor the publication of dissertations.  Any organization
that has been accredited to grant graduate degrees and is recognized
in libraries to be a publisher of dissertations can be called a
university.  Some places that call themselves colleges fall under this

  :def (organization ?x)
  :issues (("Randy Davis: 
            Dartmouth College (and a famous Supreme Court case from 
            the mid 1800's) agree that the institution is a college, 
            not a University, yet it has a grad research program, 
            pubishes dissertations, etc."
           "Tom Gruber:
            In that case, maybe the definition of a university in this
            ontology should be something that publishes dissertations.")))

----- MODIFIED -----  (typo)

(define-relation DOC.AUTHOR (?doc ?author)
  "The creator(s) of a document.  Not necessarily the author of a
work published in the document, but often so.  The author is a real
agent, not a name of an agent."

  :def (and (document ?doc)
            (author ?author)))

----- MODIFIED -----  (bug)

(define-relation DOC.AUTHOR (?doc ?agent)
  "The creator(s) of a document.  Not necessarily the author of a
work published in the document, but often so.  The author is a real
agent, not a name of an agent."

  :def (and (document ?doc)
            (author ?agent)))

----- ADDED -----

(define-relation DOC.AUTHOR-NAME (?doc ?name)
  "Each author of a document is identified by an author-name.
Although an author can have several pennames, the author only
gets to use one of them for a particular document."
  :def (and (document ?doc)
            (author-name ?name)
            (exists ?author
               (and ( ?doc ?author)
                    ( ?doc ?author ?name)))))

----- ADDED -----

(define-function DOC.AUTHOR.NAME (?doc ?author) :-> ?name
  "The name used by an author is a function of the document and the author."
  :def (and (document ?doc)
            (author ?author)
            (author-name ?name)))
----- MODIFIED -----

(define-relation INHERITS-AUTHOR-FROM-DOCUMENT (?ref)
  "When a reference is a one-to-one account of a document, then the author
in the reference ( is the name of the author of the document.
This relation captures this relationship."

  :iff-def (and (publication-reference ?ref)
                (have-same-values ?ref
                                  (compose* ref.document))))