


From: John McClure <jmcclure@hypergrove.com>
Date: Mon, 14 Nov 2005 12:19:31 -0800
To: "Aldo Gangemi" <aldo.gangemi@istc.cnr.it>, "Dan Brickley" <danbri@w3.org>, <public-swbp-wg@w3.org>
Message-ID: <MGEEIEEKKOMOLNHJAHMKEEFIDPAA.jmcclure@hypergrove.com>

>On the other hand, SKOS domain is not similar to the Wine
>domain: it is about concepts, not wines, then one may claim
>that the usage of metadata concerns exactly the semantics
>of concepts. And here we are back to the same alternative
>found in th WN TF: are thesaurus (wordnet) concepts (synsets)
>to be treated as instances, or migrated to classes? SKOS does
>the same as the WN datamodel in OWL, and treats concepts as

Good question. For me, the universe of topics consist of two sets of instances.
The first set are those defined in an ontology, and the second set are those
defined by a user, simply because they are not defined within any ontology
available to the user. This suggests that a topic is but a user-defined class,
and is thus a metaclass.

In linguistics, a topic (or theme) is the part of a proposition that is being
talked about (predicated). [wikipedia] A topic is "some situation or event that
is thought about" [Wordnet]. My own analysis starts with the name that is
assigned to a topic: it is either (a) a plural-form of a common noun (b) a
common noun meant in the 'generic' sense (c) a proper noun or (d) a set of
instances of a proper noun. Examples: (a) Persons (b) Definition of a Person (c)
Person X (d) Person X-types. Layered on these noun sets are adjective and
past-participle qualifiers.

(a+b) Plural common nouns correspond to an rdfs:Class instance, because it
represents a set of instances of the concept defined by the rdfs:Class, that is,
a class extension. At the same time, a topic that is a generic instance of a
class also can correspond to an rdfs:Class definition, that is, those things
which one may want to say about a topic can be ascribed as the properties of a
class. Given this dual-use nature of an owl:Class (its class definition vs its
class extension), there is a need for a class property defining a label to be
used when the class is being referenced as an extension rather than as an
instance of an rdfs:Class. However there is a problem with this coding:

    <rdfs:Class rdf:ID="Person">

Of course, text blocks for example need to reference topic definitions so one
URI is needed to reference the rdfs:Class as a "plural common noun" and another
URI for references to the class as a "generic" or singular common noun. However,
a URI cannot be put on a predicate.... so an n-ary solution is proposed
providing a unique URI that can be referenced by text units, topic maps, and
other things.

   <rdfs:Class rdf:ID="Person">
               <ClassExtent rdf:ID='Persons'/>

(c) A topic that is a proper noun references an instance of an owl:Thing, for
example if the resource <Person rdf:ID="JohnNash'/> exists, then a text unit or
topic map can reference its URI directly to indicate that it is the topic.

(d) A topic that is the set of persons like JohnNash, treats the Thing
definition as a class, or said differently, as a template for other instances
bearing similar properties as JohnNash. I suggest this is another requirement of
a Topic class -- in addition to representing concepts that are not defined in an
ontology available to the user, it needs to represent concepts that reference a
Thing as a kind of metaclass ....

   <Topic rdf:ID='JohnNashLookalikes'>
               <TopicTemplate rdf:about='#JohnNash'/>

Sub-topics are not the same as subclasses, so therefore a standard OWL
representation (pattern) for subtopics must use the owl:unionOf predicate. Not
only is this consistent with a topic as a 'collection of thoughts' but also with
the accumulative nature of the owl:unionOf predicate, which is defined merely as
"an anonymous class for which the class extension contains those individuals
that occur in at least one of the class extensions of the class descriptions in
(its) list."

The owl:unionOf predicate works fine for topics defined as an instance of
owl:Class or of Topic, remembering that Topic is a metaclass, that is

   <owl:Class rdf:ID='Topic'>
         <rdfs:subClassOf rdf:resource='&owl;#Class'/>
                  <owl:Class rdf:about=''&owl;#Class'/>
                  <owl:Class rdf:about=''&owl;#Thing'/>

Bottom-line, many 'topics' referenced by a topic map or text unit should be
ontology classes  because little seems gained by their re-definition as 'topics'
but also it risks being unduly confusing architecturally since the semantic
difference seems slight between a topic, an rdfs:Class, and a category. [In
fact, WN indicates that 'category' and 'class' are practically

Another approach in the Wine ontology has class WhiteThing represent all things
white, and which is subclassed by WhiteWine -- the need for restrictions goes
away.  A predicate like "hasColor" is cloudy in this context because it suggests
that a wine can miraculously change its color. Rather, it seems more robust
semantically to say that a Wine IS a WhiteWine, and that a WhiteWine is the
intersection of the set of Wines and the set of WhiteThings. Which is not to say
that there is no need for a hasColor type of property, but rather that it can
more efficiently point to an ontology definition of a WhiteThing than to an
instance of a Color. Anything one would say about a certain color could be
placed into a Class that defines the set of all things that are 'of' that color.

A WhiteThing is an example of defining "adjectives" in an ontology as a type of
qualified Thing (the same can be said for past-participles). For instance, a
TopicalThing might be defined as the set of all things that are about some
topic. In OWL-Full as I understand it, a given resource (such as text-unit) can
be by implication a TopicalThing whenever it indicates a topic that it is about,
that is, whenever it uses a property defined solely for (whose domain is only)
TopicalThing. In simple ontologies, one might see

   <owl:Class rdf:ID='TopicalThing'>
        <owl:ObjectProperty rdf:ID='hasTopic'>
           <rdfs:range rdf:resource='#Topic'/>

But a problem here is that there is no way to reference a topic about the topics
associated with a TopicalThing. This would not allow a consistent mechanism, for
instance, that constrains the kind of topics that can be chosen as subjects of,
say, a Meeting (a TopicalThing, for certain). Instead, I propose a metaclass
called DirectObject, which subclasses owl:ObjectProperty with owl:Class -- to
represent direct objects of simple predicate verbs like <has>. In other words, a
direct object is a predicate noun.

   <owl:Class rdf:ID='TopicalThing'>
        <owl:ObjectProperty rdf:ID='RelevantTopic'>
           <rdf:type rdf:resource='#DirectObject'/>
               <ClassExtent rdf:ID='RelevantTopics' en='Relevant Topics'/>

This construct can be applied to the issue of categories versus topics versus
classes. A Category sounds an awful lot like the definition for owl:unionOf,
doesn't it? So in some ontologically pure OWL-Full universe, the domain for
owl:unionOf could be

   <owl:Class rdf:ID='CategoricalThing'/>
   <owl:ObjectProperty rdf:about='&owl;unionOf'>
       <rdfs:domain rdf:resource='#CategoricalThing'/>
   <rdfs:Class rdf:about='&owl;Class'>
          <owl:Class rdf:about='Category'/>

Incidentally, http://www.hypergrove.com/OWL/NAICS/NAICS.owl contains several
hundred examples of owl:unionOf subtopic definitions (start with the definition
for an "Economy").

Lastly, it's good to look at the practical application of any proposed solution.
In particular (since most RDF-encoded information will likely occur in XHTML 2.0
documents), RDF/A strawmen are fundamental to fully understand the immediate
usefulness of any particular coding style (including that of SKOS and other BP
notes). Below, a document index implements a 2-level topic map of a sort, using
the XHTML 2.0 navigation list (the <nl> element).

   <h1 property='DocumentTitle'>Policy Manual</h1>
   <div property='DocumentPage'>
      <l property='PageNumber'>Page 2</l>
      <section id='Clause.1' property='DocumentClause'>
         <h3 property='ClauseTitle'>Lease Litigations</h3>
         <p id='Clause.1.Paragraph.1' property='ClauseParagraph'>
           <link property='RelevantTopic' href='#LitigatedLeasesTopic'/>
           Here is policy material whose topic is 'litigated leases'.</p>
   <h2>Subject Index</h2>
   <nl property='DocumentIndex'>
   <li><span id='LeasesTopic' property='RelevantTopic'
         <li><span id='LitigatedLeasesTopic' property='RelevantTopic'
                     <link property='rdf:type' href='ontology#LitigatedThing'/>
                      Litigating a lease
               <span property='IndexedItem'
Received on Monday, 14 November 2005 20:19:11 UTC
