What is the owl:Nothing class designed to do?
Asked Answered
L

1

10

If you look at the OWL ontology definition, you'll see a bunch of class definitions. One of them is the following:

owl:Nothing a owl:Class ;
     rdfs:label "Nothing" ;
     rdfs:comment "This is the empty class." ;
     rdfs:isDefinedBy <http://www.w3.org/2002/07/owl#> ;
     rdfs:subClassOf owl:Thing . 

Does this serve a purpose, if so, what is it?

Lyra answered 27/1, 2014 at 20:35 Comment(1)
Note that, as in jkbkot answer and comments, it is useful for reasoning, but the owl ontology itself is not imported by actual ontologies. This ontology defines the language itself, bit does not need to be imported by an actual ontology for it to use its classes.Seato
G
12

It has a purpose. The Web Ontology Language (OWL) corresponds to a Description Logic which is a logic (a subset of the First Order Logic) for defining concepts by means of doing intersections, unions, restrictions, etc. on concepts. Concepts are some kind of sets and you need the bottom concept (owl:Nothing, empty set) and the top concept (owl:Thing, the set of all individuals) for the theory to have nice properties.

Apart from the purely theoretical considerations, it also has a practical purpose, for example:

Person ⊓ ∀ hasChild:⊥.

which is the concept describing people without children.

is the bottom concept and is interpreted as the empty set . denotes intersection. ∀ hasChild:⊥ maps to OWL's allValuesFrom.

See Basic Description Logics by Franz Baader.

Glacis answered 27/1, 2014 at 21:10 Comment(4)
It's also used for consistency checking, along with owl:bottomObjectProperty and owl:bottomDataProperty. If some individual is an instance of owl:Nothing, or two individuals are related by owl:bottomObjectProperty, or some individual and some literal are related by owl:bottomDataProperty, then the ontology is inconsistent.Coop
Other practical uses: we can say that C and D are disjoint by C ⊓ D ⊑ ⊥.Coop
Also, is it ever practical to use owl:Nothing in an actual sparql query? i ask since we have MINUS, FILTER EXISTS, FILTER NOT EXISTSLyra
Sparql is a query language for RDF, not for OWL. Sparql evaluation does not deal even with the simplest RDF semantics, let alone RDFS or OWL semantics. For that you would have to use some form of inferencing which may be provided by a triple store but it is not inherent to Sparql. Sparql does graph pattern matching. OWL can be serialized as RDF, but it is not a very good match and I don't think you could use Sparql querying for owl:Nothing for anything really useful. It is useful with an actual reasoner as @JoshuaTaylor indicates in his comments.Glacis

© 2022 - 2024 — McMap. All rights reserved.