- Michael DeBellis

# OWL Best Practices: Some Theoretical Basics

Updated: Oct 15, 2019

In this post, i want to go over some basics about OWL and how it relates to various paradigms in computer science.

### Set Theory and Description Logic

The theoretical paradigm that OWL uses is set theory and a subset of First Order Logic (FOL) called Description Logic (DL). I recommend that anyone who isn't familiar with set theory and logic study an introductory text on the basics. These are really essential to get the most out of OWL. A good text is this introductory __overview of set theory from a book on Linguistics__. The __OWL Reasoning Examples from the University of Manchester__ also provide a good overview.

A set is a class. A subset is a subclass and a superset is a superclass. The empty set is owl:Nothing and the set that contains all sets and individuals is owl:Thing. An OWL property is a relation. The same properties that apply to relations apply to OWL properties: functional, symmetric, transitive, etc.

Complete FOL is provably impossible to implement in a way that guarantees all formulas can be evaluated in finite time. Description Logic is a subset of FOL that is decidable. The DL statements that one uses to define classes is a subset of FOL that allows existential and universal quantification. SWRL rules also provide implicit universal quantification for all statements in the antecedent (the left hand side). All statements in the consequent (right hand side) are implicitly existentially quantified.

One of the consequences of basing OWL on a subset of FOL is that OWL does not support non-monotonic reasoning. With traditional programming languages the value of a variable can be updated at different times in the system. In a logical system truth is a matter of logical proof. Just as in a proof one can't have a variable take on two different values without a contradiction so in OWL values of variables can't be changed. As with the Open World Assumption described below this can be overcome by instantiating OWL objects in traditional programming languages such as Java. It can also be dealt with using a standard pattern from logic programming of associating facts with a specific time or state. I.e., one can't say in logic that foo is both true and false but one can say that foo is true at time T1 then false at time T2. This requires that one associates a specific time stamp with every fact which can be cumbersome and inefficient.

One important differences between OWL and other implementations of set theoretic languages is that OWL uses an __Open World Assumption rather that the Closed World Assumption__ that is common in most languages.

Entity-Relation Models

The mapping from OWL to ER models is straight forward. Entities are classes, relations are object properties, and attributes are data properties.

Object-Oriented Analysis and Design

OWL is very similar to standard object-oriented analysis/design, however that are some important differences. In most object-oriented design methodologies users are encouraged or restricted to use single inheritance. With OWL multiple inheritance is common. OWL has no concept of methods although OWL objects can be instantiated in programming languages, especially Java and methods can be defined in these programming languages. Object-oriented developers will probably find the __W3C Semantic Web primer for Object-Oriented Software Developers __ a useful read.