- 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>
>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 >instances. 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"> <topicName>Persons</topicName> </rdfs:Class> 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"> <has> <ClassExtent rdf:ID='Persons'/> </has> </rdfs:Class> (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'> <has> <TopicTemplate rdf:about='#JohnNash'/> </has> </Topic> 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:unionOf> <owl:Class rdf:about=''&owl;#Class'/> <owl:Class rdf:about=''&owl;#Thing'/> </owl:unionOf> </owl:Class> 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 indistinguishable.] =================================== 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'/> </owl:ObjectProperty> </owl:Class> 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'/> <has> <ClassExtent rdf:ID='RelevantTopics' en='Relevant Topics'/> </has> </owl:ObjectProperty> </owl:Class> 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'/> </owl:ObjectProperty> <rdfs:Class rdf:about='&owl;Class'> <owl:equivalentClass> <owl:Class rdf:about='Category'/> </owl:equivalentClass> </rdfs:Class> 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> </section> </div> <h2>Subject Index</h2> <nl property='DocumentIndex'> <li><span id='LeasesTopic' property='RelevantTopic' href='ontology#Leases'>Leases</span> <nl> <li><span id='LitigatedLeasesTopic' property='RelevantTopic' href='ontology#Leases'> <link property='rdf:type' href='ontology#LitigatedThing'/> Litigating a lease </span> <span property='IndexedItem' href='#Clause.1.Paragraph.1'>2</span> </li> </nl> </li> </nl>
Received on Monday, 14 November 2005 20:19:11 UTC