Let us start with a simple example. Assume we have a Person
class, which models a person that has a name. Let us just think about what this means. If we think of our domain of interest and we list all the objects of the domain, some objects will belong to a set that is a subset of the domain of interest, which is called the Person
set, which is represented by our Person
class. Our Person
class also has a name
attribute of type String
, but it is likely that we will have other classes in our domain that may have a name
attribute of type String
. Thus, the Person
class represents objects that are a subset of all the objects in the domain that have a name
attribute of type String
. This is shown in the Venn diagram below.
Note that the Person
class is not necessarily a strict subset of the objects that have a name
attribute of type String
. It is possible that the Person
class is the only class in our domain that has a name
attribute of type String
, in which case these two sets are in fact equal.
The OWL 2 equivalent representation in Manchester syntax is given in the image below. Note that for the name
attribute in the UML class we have defined a related DataProperty
. Furthermore, a Person
class is also defined, which is defined as SubClassOf: name some xsd:string
. What this means is that individuals that belongs to the Person
class also belongs to the class of individuals that have a name
property of type xsd:string
. Thus, the Person
class is a subclass of the class representing individuals that have a name property of type
xsd:string
.
[…] states that a Course is a subclass of things that have some Subject. I explain this here and […]
[…] that enforces that the schema:Person class must have a schema:givenName attribute. I describe here, here and here how to define “attributes” for classes in a way that can be used by OWL […]
[…] to such that it will only allow a limited amount of links. I have written about this on my blog here, here and […]