Philosopher: an ontology is a theory of what is.
Aristotle stated that all things belong to one of ten categories.
Some of his contemporaries agreed with his theory, others disagreed.
Computer scientist: an ontology is
a specification
of
a conceptualization.
Computer scientist: an ontology is
e.g. a formal description
of
concepts and relationships.
SUMO, BFO or DOLCE are examples of ontologies aiming to capture all known concepts.
Ontology engineer: an ontology defines the vocabulary with which queries and assertions are exchanged among agents.
That is, ontologies are specifications of shared conceptualizations.
Agreement across all humans over a common ontology is not reachable, though.
Partial agreement over small sets of concepts is much more realistic.
Web researcher: a Web ontology is a consistent set of concepts exposed on the Web, such that others can (partially) reuse and align with these concepts.
Web ontologies are commonly layered as:
If anyone can publish their ontology on the Web, they must decide what to do with the unknown.
One cannot assert all what is true with a finite vocabulary.
The designer of an ontology must define its frame:
The two possible treatments for unknown statements are:
Constraint satisfaction
is typically done under the
Closed World assumption.
Whatever is valid in a closed world remains valid in an open world.
Inference
is typically done under the
Open World assumption.
Whatever is inferred in an open world remains inferred in a closed world.
Ontologies should be:
Ontology engineers should therefore design ontologies under the
open-world assumption.
The Web Ontology Language (OWL) is the reference language to define ontologies.
Declaration( Class( :Person ) )
Declaration( ObjectProperty( :knows ) )
Declaration( DataProperty( :familyName ) )
Declaration( DataProperty( :birthDate ) )
SubClassOf( :Person
ObjectAllValuesFrom( :knows :Person ))
SubClassOf( :Person
DataSomeValuesFrom( :familyName xsd:string ))
DataPropertyRange( :birthDate xsd:date )
:Person a owl:Class .
:knows a owl:ObjectProperty .
:familyName a owl:DatatypeProperty .
:birthDate a owl:DatatypeProperty .
:Person rdfs:subClassOf [
a owl:Restriction ;
owl:onProperty :knows ;
owl:allValuesFrom :Person
], [
a owl:Restriction ;
owl:onProperty :familyName ;
owl:someValuesFrom xsd:string
] .
:birthDate rdfs:range xsd:date .
Class: Person
SubClassOf: knows only Person
SubClassOf: familyName some string
ObjectProperty: knows
DataProperty: familyName
DataProperty: birthDate
Range: date
OWL includes:
OWL also includes so-called restrictions, including:
For an introduction to OWL, see the OWL quick reference document.
Reference documentation also includes the OWL 2 Primer and the Manchester syntax quick reference.
Class: foaf:Person
EquivalentTo: schema:Person
Class: foaf:Image
EquivalentTo: schema:ImageObject
Class: foaf:Document
SubClassOf: schema:CreativeWork
Ontology-based data access (OBDA) is a common approach to data integration. It generally requires inference from alignment axioms.
For practical use, several OWL profiles exist:
Yet, OWL is not a universal ontological language.
For instance, it is not possible to express such things as:
Rule languages, such as SWRL, can express ontological constraints that OWL cannot. And vice-versa.
Mixing arbirary OWL axioms and rules is powerful but inference is not guaranteed to terminate.
Predicate logic is (assumed to be) the most universal language.
Common logic is an international standard to define ontologies in predicate logic.
See Introduction to Common Logic by John F. Sowa.