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.