Metadata retrieval and reuse is enhanced when metadata providers follow common or interconnected ontologies. Below, we propose a top-level ontology to ease and guide metadata representation and organization. It reuses the classes and properties declared in [RDFMS] and [RDFSchema] and adds about 80 new classes and 120 new relations (properties). Some classes come from the Frame Ontology of Ontolingua [FrameOntol] (not all the classes and relations of this ontology have been reused since many are not relevant to RDF, e.g. n-ary relations with n > 2). Most classes and properties were selected and adapted from works of John Sowa [Sowa84] and completed with classes and relations from various other top-level ontologies (e.g. to a small extent, the CYC top-level ontology and the Generalized Upper Model). Whereas the set of proposed relations can be seen as relatively complete for the representation of most natural language sentences, we have mainly limited the introduction of classes to those required for the signatures of the relations (i.e. to constrain their ranges and domains). The whole file of this top-level ontology is accessible in RDF format and in a more readable format (that is also parsable)
To complete that work on classes, we have also worked on the WordNet lexical database [WN]. First, we have inserted the WordNet top-level classes into our top-level ontology (cf. section 1.2). Second, we have translated this database (plus the top-level ontology) into a 24Mb RDF file (click here for a 4.2Mb gzipped version). A version of this file in also given in the more readable format (click here for a 3.7Mb gzipped version). Third, to search this ontology of 84,000 categories and navigate along the various kinds of relations between them, we have implemented a CGI script and an HTML+Javascript interface to use it. The results are given in RDF or simpler formats.
Following our
conventions, we have only used singular
nouns for class names and have not introduced inverse relations
(e.g. subClass and agentOf have not be introduced
since subClassOf and agent are have been declared).
We present our top-level ontology via subClassOf hierarchies (and one instanceOf hierarchy) preceded by some comments.
"(^...^)" are used for annotations "=" for equivalent resources, "~" for exclusive classes (i.e. that cannot have common subclasses or instances), "%" for classes with several superclasses, "(domain,range)" for signatures of relations, "ph:" for the terms introduced by this ontology, and "kif:" for their equivalent in the Frame Ontology of Ontolingua [FrameOntol] |
In the upper layers of this ontology (see the next 3 tables),
we integrated important distinctions from other top-level ontologies:
Concept/Relation [Sowa84] (see Thing/relation here),
Entity/Situation [Barwise83][Sowa84],
State/Process, SpatialEntity/NonSpatialEntity,
DivisibleEntity/UndivisibleEntity (a generalization of the distinction
IndividualThing/Collection of the
Frame Ontology of Ontolingua [FrameOntol]),
LivingEntity/DeadEntity. We added other distinctions, e.g.
EntityThatCanBeAlive/EntityThatCannotBeAlive (a refinement of the
classic distinction LivingThing/NonLivingThing),
Description/DescriptionContainer/Measure.
Such general distinctions permit an easier understanding of the ontology.
Furthermore, the conjunction of the exclusive links between the categories,
the specialization relations and the relation signatures permit some automatic
semantic checking on the ontology update and its use of its terms in statements.
For instance, if a class named Observation has been declared as a
subclass of DescriptionContent, an RDF engine can check that
(i) no statement specifies that an instance of Observation (or its
subclasses) is the source of a relation of class relationFromSituation,
and (ii) Observation is not subclassed with a class that
represents a process (e.g. the class RadioObservation indirect subclass
of Process; the exclusion link between Entity and
Situation forbids this).
Such constraints may also be exploited for automatic/semi-automatic metadata
classification or fusion.
We introduced the class ThingPlayingSomeRole to provide an anchor for
the classification of things according to some roles they play
(or in other words, according to some viewpoints). Thus, these classes can only be
specialized in the context of an application. This is also the case for some other
classes, e.g. Event.
Some (meta)classes from
[RDFSchema]
represent different kinds of classes: rdfs:Class,
rdf:Property and rdfs:ConstraintResource.
Since a class represents a collection of individual having some common features,
we have placed those (meta)classes under Collection
(and rdfs:Container too).
The class AttributeOrMeasure permits the classification of
attributes or characteristics (e.g. physical characteristics such as mass and color)
and measures (e.g. 2 kg, light_weight, red and all time measures such as 2 hours and
Precambrian_period). Some knowledge providers often use names of
attributes/characteristics (e.g. of physical characteristics such as mass and color)
as relation names. This practice would not be a problem if all attributes could be
represented as relations and organized into a specialization hierarchy.
Unfortunately, after exploring this option with WordNet [WN], we realized
that relatively few attributes can be used as relations.
To permit the classification of relation classes (i.e. rdf:Property
instances) via subClassOf relations (SubPropertyOf
relations in RDF terminology), we introduced the category relation
and specialized it with several subcategories:
relationFromProperty, relationFromClass,
relationFromCollection,
relationFromDescription, relationFromSituation,
relationFromTimeMeasure, relationFromSpatialEntity, etc.
These general relations should ease the retrieval/specialization of the
adequate class of relations by people and be useful to them whem building general queries
(especially relation). Note: we assume that if a relation class r1 specializes
a relation class r2, the domain and range of r1 are equal or specializations of the
domain and range of r2.
ph:Thing (^anything that is not a relation^) ~ ph:relation
ph:Situation (^thing "occuring" in some region of time and space^)
ph:State (^situation that is not changing and that does not make a change
during a given period of time^) ~ ph:Process
ph:Process (^situation that makes a change during some period of time^)
ph:Event (^process considered instantaneous from some viewpoint^)
ph:Phenomenon (^situation known through the senses rather than
by intuition or reasoning^)
%ph:SituationPlayingSomeRole (^e.g. a causal situation^)
ph:Entity (^thing that can be "involved" in a situation^) ~ ph:Situation
ph:SpatialEntity (^space region or thing occupying a space region^)
ph:Space (^a point or extent in space^)
ph:PhysicalEntity (^spatial entity made of matter^)
ph:EntityThatCanBeAlive (^e.g. animal, cell^)
%ph:LivingEntity (^entity that can and is alive^) ~ ph:DeadEntity
ph:EntityThatCannotBeAlive (^e.g. bottle^) ~ ph:EntityThatCanBeAlive
ph:DeadEntity
ph:NonspatialEntity (^e.g. knowledge, measure^) ~ ph:SpatialEntity
ph:PsychologicalEntity (^feature/product of mental activity^)
ph:InformationEntity (^content/element of a description^)
ph:Description (^description of a situation^)
ph:DescriptionContainer (^e.g. file, image (but not disk or paper)^)
ph:AttributeOrMeasure (^e.g. 1 kg, [2-3] hz, blue; measure units^)
%ph:Collection
ph:UndivisibleEntity (^from some viewpoints^) = kif:Individual-Thing
ph:DivisibleEntity ~ ph:UndivisibleEntity
ph:DivisibleEntityWithoutDiscreteParts ~ ph:CompositeEntity
ph:CompositeEntity (^divisible entity with discrete parts^)
%ph:Collection (^to gather separate things^)
rdfs:Container
rdfs:Class (^all classes are instance of rdfs:Class^)
rdf:Property (^all relation classes are instance of rdf:Property^)
%rdfs:ConstraintProperty
rdfs:ContainerMembershipProperty
ph:ConstrainedRelationClass
rdfs:ConstraintResource
%rdfs:ConstraintProperty
%ph:EntityPlayingSomeRole (^e.g. a causal entity, an agent, an owner^)
ph:ThingPlayingSomeRole (^to classify things according to roles/viewpoints^)
ph:CausalThing
ph:ImaginaryThing (^e.g. imaginary situation, fictional character^)
ph:ThingNeededForSomeProcess (^e.g. something needed for an application^)
%ph:SituationPlayingSomeRole (^e.g. causal situation^)
%ph:EntityPlayingSomeRole (^e.g. agent, owner^)
ph:relation (^superclass of relation classes; instance of rdf:Property^)
|
ph:relation (^superclass of relations classes; instance of rdf:Property^)
ph:relationFromProperty (rdf:Property,rdfs:Resource)
rdfs:range (rdf:Property,rdfs:Class)
rdfs:domain (rdf:Property,rdfs:Class)
rdfs:subPropertyOf (rdf:Property,rdf:Property)
ph:inverse (rdf:Property,rdf:Property) = kif:inverse
ph:relationFromClass (rdfs:Class,rdfs:Resource)
rdfs:subClassOf (rdfs:Class,rdfs:Class)
ph:exclusiveClass (rdfs:Class,rdfs:Class)
rdfs:comment (rdfs:Resource,rdfs:Literal) = kif:documentation
rdfs:isDefinedBy (rdfs:Resource,rdfs:Resource)
ph:definition (rdfs:Resource,ph:Description)
rdfs:label (rdfs:Resource,rdfs:Literal)
rdfs:seeAlso (rdfs:Resource,rdfs:Resource)
ph:different (rdfs:Resource,rdfs:Resource)
ph:relationFromCollection (ph:Collection,rdfs:Resource)
ph:relationToCollection (rdfs:Resource,ph:Collection)
ph:relationFromDescription (ph:Description,rdfs:Resource)
ph:relationFromSituation (ph:Situation,rdfs:Resource)
ph:relationFromTimeMeasure (ph:TimeMeasure,rdfs:Resource)
ph:relationFromSpatialEntity (ph:SpatialEntity,rdfs:Resource)
ph:attributiveRelation (rdfs:Resource,rdfs:Resource)
ph:orderingRelation (rdfs:Resource,rdfs:Resource) (^e.g. rdf:type,
rdfs:subClassOf, ph:part, ph:equal^)
|
rdfs:Class (^all classes are instance of that object^)
rdfs:Resource
rdfs:Literal
ph:Thing (^everything that can be in a class^)
ph:Collection (^bounded; can hold / be member of a collection^)
ph:IndividualThing (^not a bounded collection^)
ph:Situation (^thing that "occurs" in a region of time and space^)
ph:Entity (^thing that can be "involved" in a situation^)
ph:RelationClass (^tuples representing some relationship^)
rdfs:ConstraintResource
rdfs:ContainerMembershipProperty
rdfs:ConstraintProperty
rdfs:range (rdfs:Class,rdf:Property)
rdfs:domain (rdfs:Class,rdf:Property)
ph:ConstrainedRelationClass
rdf:Property (^all binary relation classes are instance of that object^)
ph:relation (^superclass of relation classes; instance of rdf:Property^)
|
ph:InformationEntity (^content/element of a description^)
ph:Description (^description of a situation^)
ph:DescriptionContent (^e.g. a narration, an hypothesis^)
ph:DescriptionMedium (^e.g. a syntax, a language, a script^)
ph:AbstractDataType (^atomic or structured^)
ph:AtomicADT
ph:Boolean (^two instances: True and False^)
ph:StructuredADT
ph:RDF (^the RDF model^)
rdf:Statement (^triple {predicate,subject,object}^)
ph:DescriptionContainer (^e.g. file, image (but not disk or paper)^)
ph:DocumentElement (^a part of a document^)
ph:Document (^the entire content of a document^)
ph:AttributeOrMeasure (^e.g. 1 kg, [2-3] hz, blue; measure units^)
ph:TimeMeasure (^measure of points or intervals in time^)
ph:SpatialAttributeAttributeOrMeasure (^e.g. length measure in meters^)
ph:PhysicalAttributeAttributeOrMeasure (^e.g. mass/length/color measure^)
ph:PsychologicalAttributeAttributeOrMeasure (^e.g. memory measure^)
ph:ProcessAttributeAttributeOrMeasure (^e.g. a speed measure in km/h^)
ph:ModalityMeasure (^e.g. "Never" might be declared as an instance^)
|
WordNet is a lexical database relating words (nouns, adjectives, verbs, adverbs) to categories (word meanings) and organizing these categories by various relations, e.g. specialization, exclusion, part, member, subtance. Each word may be related to various categories (one for each of its registered meanings) and conversely. We have inserted the WordNet top-level categories for the meanings of nouns into our top-level ontology. This gives about 66,000 specializations to our top-level classes. Conversely, our top-level ontology adds structuration and constraints to WordNet (e.g. exclusion relations between living entities and inanimate objects). This permits automating checks on statements using these categories or on further specializations. This may also help people to quickly find the meaning of a category in WordNet (this meaning may not be obvious just by looking at the name(s) of the category). We have built a tool for searching or comparing categories in WordNet and our top-level ontology. It is accessible at http://www-sop.inria.fr/acacia/personnel/phmartin/RDF/tsearch.html.
The next table shows how the top-level categories for nouns were inserted in
our top-level ontology. Each WordNet category is referred via its unique identifier
followed by its names (each prefixed by "__") and the WordNet name space prefix "wn"
is left implicit. However, in the RDF code, the names are stored via label
properties.
Seven out of the nine WordNet top-level categories for nouns were inserted:
wn16185__state, #wn17487__act, #wn17297__event,
#wn20461__phenomenon, #wn12865__psychological_feature,
#wn17954__group and #wn18376__possession.
The other two (wn13018__abstraction and wn1740__entity)
were not inserted but their twenty direct subclasses were inserted at various places in our
ontology.
ph:Situation
wn17297__event (^something that happens at a given place and time^)
ph:State
wn16185__state (^the way something is with respect to its main attributes^)
ph:Process
wn17487__act__human_action__human_activity
ph:Phenomenon (^situation known through the senses rather than by reasoning^)
wn20461__phenomenon (^state or process known through the senses^)
ph:Entity (^thing that can be "involved" in a situation^)
ph:Spatial_entity (^space region or thing occupying a space region^)
ph:Space (^point or extent in space^)
wn15975__space (^the unlimited 3-dimensional expanse^)
ph:Physical_entity (^spatial entity made of matter^)
ph:Entity_that_can_be_alive (^e.g. an animal, a cell^)
wn2086__life_form__organism__being__living_thing
wn3095__cell (^the basic structural unit of all organisms^)
ph:Entity_that_cannot_be_alive (^e.g. a bottle^)
wn9457__object__physical_object (^a physical entity^)
ph:Nonspatial_entity (^e.g. knowledge, motivation, language, measure^)
ph:Psychological_entity (^feature/product of mental activity^)
wn12865__psychological_feature (^a feature of the mental life^)
ph:InformationEntity (^content/element of a description^)
ph:Attribute_or_measure
wn20056__measure__quantity__amount__quantum
wn18604__attribute (^an abstraction belonging to an entity^)
ph:Time_measure
wn15594__time (^the continuum of experience^)
ph:Composite_entity (^divisible entity with discrete parts^)
wn3614902__whole__whole_thing__unit (^assemblage regarded as a unit^)
ph:Collection (^something gathering separated things^)
wn17954__group__grouping (^entities considered as a unit^)
wn5992373__set (^an abstract collection of numbers or symbols^)
ph:EntityPlayingSomeRole (^e.g. a causal entity, an agent, an owner^)
ph:Entity_part
wn6684175__part__piece (^a portion of a natural object^)
wn6683928__unit__building_block (^a single undivided natural entity^)
wn18376__possession (^anything owned or possessed^)
wn3435902__subject__content__depicted_object (^picture subject^)
wn3731__causal_agent__cause__causal_agency
wn6331805__imaginary_place (^a place said to exist in fictional writings^)
wn6847350__variable (^something that is likely to vary^)
wn6846327__necessity__essential__requirement__requisite__necessary
wn6847052__inessential__nonessential (^anything that is not essential^)
wn3495843__thing (^an entity that is not named specifically^)
wn6847525__anticipation (^some entity anticipating a later one^)
ph:Thing_playing_some_role
wn18916__relation (^an abstraction belonging to two entities^)
|
We introduce some additional classes of containers that are often needed for
knowledge representation (e.g. Set which is currently not in
[RDFMS]
"because the RDF core does not mandate an enforcement mechanism in the event
of violations of such constraints").
rdfs:Container
rdf:Bag (^duplicate elements are allowed^) ~ ph:Set
rdf:Seq (^ordered container^)
rdf:Alt (^are the alternatives exclusive or inclusive?^)
ph:OrBag (^bag of OR-ed elements^)
ph:XorBag (^bag of exclusive elements^)
ph:Set (^duplicate elements are not allowed^)
ph:OrSet (^set of OR-ed elements^)
ph:XorSet (^set of exclusive elements^)
ph:NumberContainer (^number collection^)
|
Here are represented some mathematical characteristics that relations may have.
We have used classes because this is the way it is done in
the Frame Ontology of Ontolingua [FrameOntol].
Hence, a property that has one of the listed characteristics
must be declared as instance of the relevant class.
Alternatively, a property ConstrainedRelation could have been declared
as a specialization of relation and further specialized. This is the option
we adopted for our ordering relations (Section 1.10).
ph:ConstrainedRelationClass
ph:AntisymmetricRelationClass = kif:Antisymmetric-Relation
%ph:AsymmetricRelationClass = kif:Asymmetric-Relation
%ph:PartialOrderRelationClass = kif:Partial-Order-Relation
ph:TotalOrderRelationClass = kif:Total-Order-Relation
ph:IrreflexiveRelationClass = kif:Irreflexive-Relation
%ph:AsymmetricRelationClass = kif:Asymmetric-Relation
ph:ReflexiveRelationClass = kif:Reflexive-Relation
%ph:EquivalenceRelationClass = kif:Equivalence-Relation
%ph:PartialOrderRelationClass = kif:Partial-Order-Relation
ph:SymmetricRelationClass = kif:Symmetric-Relation
%ph:EquivalenceRelationClass = kif:Equivalence-Relation
ph:TransitiveRelationClass = kif:Transitive-Relation
%ph:EquivalenceRelationClass = kif:Equivalence-Relation
%ph:PartialOrderRelationClass = kif:Partial-Order-Relation
ph:WeakTransitiveRelationClass = kif:Weak-Transitive-Relation
ph:ManyToManyRelationClass = kif:Many-To-Many-Relation
ph:ManyToOneRelationClass = kif:Many-To-One-Relation
ph:OneToManyRelationClass = kif:One-To-Many-Relation
|
Below, we declare some common relations from or to collections.
Some of them should have numbers for ranges but we use rdfs:Literal in their
signatures for lack of better data types. Subclasses of rdfs:Literal
are not recognized by current parsers.
The relations minimalSize and maximalSize have a lot of
applications. As an illustration, consider the representation in RDF/XML of the
sentence "Tom is the creator of 10 to 20 documents,
including http://www.foo.org/bar".
ph:relationFromCollection (ph:Collection,rdfs:Resource)
ph:member (ph:Collection,rdfs:Resource)
ph:size (ph:Collection,rdfs:Literal) (^number of elements^)
ph:minimalSize (ph:Collection,rdfs:Literal)
ph:maximalSize (ph:Collection,rdfs:Literal)
ph:percentage (ph:Collection,rdfs:Literal)
ph:average (ph:NumberContainer,rdfs:Literal) (^an average on the values^)
ph:subCollection (ph:Collection,ph:Collection)
ph:overlappingCollection (ph:Collection,ph:Collection)
ph:notOverlappingCollection (ph:Collection,ph:Collection)
ph:collectionComplement (ph:Collection,ph:Collection)
ph:relationToCollection (rdfs:Resource,ph:Collection)
ph:parts (rdfs:Resource,ph:Collection)
ph:instances (rdfs:Class,ph:Collection)
ph:subclasses (rdfs:Class,ph:Collection)
|
The concept of description (i.e. statement or "Proposition" in logic) is important since it permits to combine representations or specify when, how and by whom they have been made.
To specify such details about descriptions, we propose the relations authoring,
authoringTime, descriptionObject (for stating the object of
the description),
descriptionSupport (for stating the kind of "document" used),
descriptionInstrument (for stating the kind of language or model used).
These relations are similar to some of the Dublin Core except they have restricted
signatures, which is important for automatic checking/merging/classification.
When relating or combining descriptions, we propose logic relations and argumentation
relations. (No particular rhethorical relation is provided because rhethorical relations
are too general: the use of the other relations of this ontology lead to more precise
representations). Apart from and, logic relations are "contextualizing",
i.e. they specify a restricted context in which the descriptions they connect are true.
Other contextualizing relations are modality and believer.
It is important for an RDF engine to know whether relations on descriptions are
contextualizing or not, because contextualized descriptions cannot be used for inference
unless the engine knows the semantics of the contextualizing relation(s).
The logical relations or and xor are represented as
contextualizing relations. However, we do not think these two relations will be
used by the RDF users because the RDF/XML syntax makes it more natural to use
rdf:Alt containers (or for more precision,
XorBag/OrBag containers) to represent exclusive/inclusive OR
links between descriptions.
To express negation, we have introduced the relation truth
and declared two instances of the class Boolean: True
and False.
Tim Berners-Lee also
proposes such a relation but also a unary relation not.
However, it's use does not seem permitted by the current syntax of RDF/XML.
ph:relationFromDescription (ph:Description,rdfs:Resource)
ph:and (ph:Description,ph:Description)
ph:contextualizingRelation (ph:Description,rdfs:Resource)
ph:contextualizingLogicalRelation (ph:Description,rdfs:Resource)
ph:truth (ph:Description,ph:Boolean)
ph:or (ph:Description,ph:Description)
ph:xor (ph:Description,ph:Description)
ph:implication (ph:Description,ph:Description)
ph:equivalence (ph:Description,ph:Description)
ph:modality (ph:Description,ph:ModalityMeasure)
ph:believer (ph:Description,ph:CausalEntity)
ph:author (ph:Description,ph:CausalEntity)
ph:authoringTime (ph:Description,ph:TimeMeasure)
ph:descriptionObject (ph:Description,rdfs:Resource)
ph:descriptionInstrument (ph:Description,ph:DescriptionMedium)
ph:descriptionSupport (ph:Description,ph:DescriptionContainer)
ph:rhetoricalRelation (ph:Description,ph:Description)
ph:argumentationRelation (ph:Description,ph:Description)
ph:answer (ph:Description,ph:Description)
ph:contribution (ph:Description,ph:Description)
ph:replacement (ph:Description,ph:Description)
ph:confirmation (ph:Description,ph:Description)
ph:reference (ph:Description,ph:Description)
ph:argument (ph:Description,ph:Description)
ph:weakArgument (ph:Description,ph:Description)
ph:strongArgument (ph:Description,ph:Description)
ph:proof (ph:Description,ph:Description)
ph:contradiction (ph:Description,ph:Description)
|
Below is an example of the use for the proposed relations. According to
[RDFMS],
reified RDF statements are instances of rdf:Statement. Since we declared
this class as a subclass of ph:Description, this example should not violate
relation signatures.