Database Reference
In-Depth Information
significant differences; the implications of these differences are not always obvious,
so it is worth spending a little time explaining them by looking at how OWL
(and RDFS) classes differ from OO classes and properties.
In OWL, classes are regarded as sets of instances, which are known as “individuals”
in OWL terminology. In comparison, OO languages use classes to represent the
type of the instances. This means that it is often helpful to picture OWL statements
in terms of Venn diagrams of overlapping sets to understand where the groups of
individuals sit. To make the difference clear, in OWL a class is a collection or set of
individuals: The class Car would contain all the individuals considered to be cars.
By contrast, in OO language, a class defines the conceptual type, that is, the data
structure that can represent information about cars with their allowed behaviors
implemented by functions. OWL individuals can belong to multiple classes, whereas
in the OO paradigm, barring multiple inheritance, which is generally discouraged
or not supported in many OO languages, each instance can only have one class type.
In OWL, classes can be created and changed at run time, and OWL is based
on the open world assumption, whereas OO language is based on the closed world
assumption. Recall the explanation that we gave in Chapters 1 and 4 about the open
world assumption: Just because we have not said so does not mean an assertion is
not true. We cannot guarantee that we have discovered all information about the
system, and statements about knowledge that are not stated or inferred from state-
ments are considered unknown rather than false. In some ways, this can be thought
of as an assumption of “innocent until proven guilty”: Even if there is not enough
information to prove a statement true, it still cannot simply be assumed to be false.
So, an OWL class specifies the mandatory properties that describe the essence of
that class, whereas an OO class defines all the possible properties the class can have.
Furthermore, even if a property is mandatory in OWL, it is not mandatory to know
the value of that property for any individual. In OWL, properties are stand-alone
entities that exist without specific classes, unlike OO language, for which properties
are defined locally to a class.
Another major difference is related to their purpose. OO languages are designed
to implement processes; hence, OO classes encode their meaning and behavior
through functions and methods. In contrast, OWL is designed to provide description,
and there is no code to specify the actions of an object. Instead, classes make their
meaning explicit solely in terms of OWL statements: They are , but they do not do .
OWL classes and individuals can be linked to from anywhere on the Web, so
there is no encapsulation using public or private access as in OO languages. The
domain models for OO software, often encoded in UML, tend to be used internally
to the organization only and are decoupled from the actual code, whereas all OWL
domain models can be shared on the Web. Similarly for individuals, in OWL and
RDF individuals can be reused, whereas OO instances are internal to the executing
program and cannot be addressed from outside the runtime environment.
The main implication that can be drawn from these differences is that you can-
not think about an OWL class in the same way that you would an OO class; they are
very different beasts. OWL classes are sets of individuals, each sharing some common
properties but each also unique and varying from its companions. You will find that it
is easiest to understand OWL classes by thinking about the individuals in the class set.
Search WWH ::




Custom Search