SkosDev/SkosOwlDl
SKOS Core and OWL DL :: Issues
This is a page for writing up some of the SKOS Core and OWL-DL issues, with proposals.
Using SKOS Core Labelling Properties in OWL-DL Ontologies
SKOS Core has the properties skos:prefLabel, skos:altLabel and skos:hiddenLabel. These three properties are declared at http://www.w3.org/2004/02/skos/core with the following semantics:
skos:prefLabel a rdf:Property; rdfs:subPropertyOf rdfs:label. skos:altLabel a rdf:Property; rdfs:subPropertyOf rdfs:label. skos:hiddenLabel a rdf:Property; rdfs:subPropertyOf rdfs:label.
It would be nice if these properties could be used not only to label resources of type skos:Concept, but also Classes, Properties and Individuals of OWL-DL ontologies also.
However, these three properties are declared to be sub-properties of rdfs:label, which is declared to be an Annotation Property in OWL-DL, and OWL-DL does not allow Annotation Properties to be involved in property axioms such as (:x rdfs:subPropertyOf :y).
In order to be used in OWL-DL ontologies, these properties have to be declared as:
skos:prefLabel a owl:AnnotationProperty. skos:altLabel a owl:AnnotationProperty. skos:hiddenLabel a owl:AnnotationProperty.
(...Obviously without the rdfs:subPropertyOf statements.)
Options:
1. We maintain two parallel declarations of these properties, e.g at http://www.w3.org/2004/02/skos/core and at http://www.w3.org/2004/02/skos/core-dl. At the first, we optimise for RDFS inference, and declare:
skos:prefLabel a rdf:Property; rdfs:subPropertyOf rdfs:label. skos:altLabel a rdf:Property; rdfs:subPropertyOf rdfs:label. skos:hiddenLabel a rdf:Property; rdfs:subPropertyOf rdfs:label.
... and at the other, we optimise for OWL-DL inference, and declare:
skos:prefLabel a owl:AnnotationProperty. skos:altLabel a owl:AnnotationProperty. skos:hiddenLabel a owl:AnnotationProperty.
The upside is, we can still allow extension by refinement if we want (as long as the application knows to point itself at the RDFS-optimised declaration). The downside is, we have two separate versions of the SKOS Core declaration.
2. We replace the current declarations at http://www.w3.org/2004/02/skos/core with something like:
skos:LabellingProperty a owl:Class; rdfs:subClassOf owl:AnnotationProperty. rdfs:label a skos:LabellingProperty. skos:prefLabel a skos:LabellingProperty. skos:altLabel a skos:LabellingProperty. skos:hiddenLabel a skos:LabellingProperty.
So with this, we avoid maintaining two separate versions of the formal SKOS Core declaration. We have a generic mechanism by which applications can recognise 'labelling properties' declared by third parties. However, we can't allow extension by refinement (i.e. no property hierarchies), and therefore we can't have 'dumbing-down' of e.g. skos:prefLabel and skos:altLabel to rdfs:label.
Using SKOS Core Documentation Properties in OWL-DL Ontologies
SKOS Core has the properties skos:note, skos:definition, skos:example, skos:scopeNote, skos:editorialNote, skos:changeNote and skos:historyNote. These 7 properties are declared at http://www.w3.org/2004/02/skos/core with the following statements:
skos:note a rdf:Property. skos:definition a rdf:Property; rdfs:subPropertyOf skos:note. skos:example a rdf:Property; rdfs:subPropertyOf skos:note. skos:scopeNote a rdf:Property; rdfs:subPropertyOf skos:note. skos:editorialNote a rdf:Property; rdfs:subPropertyOf skos:note. skos:changeNote a rdf:Property; rdfs:subPropertyOf skos:note. skos:historyNote a rdf:Property; rdfs:subPropertyOf skos:note.
It would be nice if these properties could be used not only with SKOS Concepts, but also OWL Classes, Properties and Individuals.
However, to be used in OWL-DL ontologies in this way, they have to be declared as Annotation Properties, and cannot be involved in any property axioms. I.e.:
skos:note a owl:AnnotationProperty. skos:definition a owl:AnnotationProperty. skos:example a owl:AnnotationProperty. skos:scopeNote a owl:AnnotationProperty. skos:editorialNote a owl:AnnotationProperty. skos:changeNote a owl:AnnotationProperty. skos:historyNote a owl:AnnotationProperty.
(This issue is very similar to the issue with labelling properties.)
Options:
1. We maintain two parallel declarations of these properties, e.g at http://www.w3.org/2004/02/skos/core and at http://www.w3.org/2004/02/skos/core-dl. At the first, we optimise for RDFS inference, and declare:
skos:note a rdf:Property. skos:definition a rdf:Property; rdfs:subPropertyOf skos:note. skos:example a rdf:Property; rdfs:subPropertyOf skos:note. skos:scopeNote a rdf:Property; rdfs:subPropertyOf skos:note. skos:editorialNote a rdf:Property; rdfs:subPropertyOf skos:note. skos:changeNote a rdf:Property; rdfs:subPropertyOf skos:note. skos:historyNote a rdf:Property; rdfs:subPropertyOf skos:note.
... and at the second we optimise for OWL-DL inference and declare:
skos:note a owl:AnnotationProperty. skos:definition a owl:AnnotationProperty. skos:example a owl:AnnotationProperty. skos:scopeNote a owl:AnnotationProperty. skos:editorialNote a owl:AnnotationProperty. skos:changeNote a owl:AnnotationProperty. skos:historyNote a owl:AnnotationProperty.
The upside is, we can still allow extension by refinement if we want (as long as the application knows to point itself at the RDFS-optimised declaration). The downside is, we have two separate versions of the SKOS Core declaration.
N.B. Declaring e.g. (skos:definition a owl:[[AnnotationProperty]]) does not preclude us from allowing the three usage patterns described in the guide (i.e. 'documentation as literal', 'documentation as related resource description' and 'documentation as document reference').
2. We replace the current declarations at http://www.w3.org/2004/02/skos/core with something like:
skos:DocumentationProperty a owl:Class; rdfs:subClassOf owl:AnnotationProperty. skos:note a skos:DocumentationProperty. skos:definition a skos:DocumentationProperty. skos:example a skos:DocumentationProperty. skos:scopeNote a skos:DocumentationProperty. skos:editorialNote a skos:DocumentationProperty. skos:changeNote a skos:DocumentationProperty. skos:historyNote a skos:DocumentationProperty.
So with this, we avoid maintaining two separate versions of the formal SKOS Core declaration. We have a generic mechanism by which applications can recognise 'documentation properties' declared by third parties. However, we can't allow extension by refinement (i.e. no property hierarchies), and therefore we can't have 'dumbing-down' of e.g. skos:definition and skos:example to skos:note.
OWL-DL Ontologies with Classes of Concepts (Hybrid SKOS/OWL-DL Ontologies)
An ontology developer might want to build an OWL-DL ontology that has as a part a class of SKOS Concepts. For example, the ontology that the SWED portal (http://www.swed.org.uk/) uses describes a class of Environmental Organisations, which may have a topic of interest, an operational area, an activity, a project type and an organisation type. In fact each of these attributes is modelled as a property, with a class of SKOS concepts as the range.
Allowing parts of an OWL-DL ontology to consist of classes of SKOS Concepts allows the ontology developer to engineer with precision where it is required, and with fuzzier (and therefore cheaper) semantics where it is not.
In order for an OWL-DL ontology developer to use SKOS Core, s/he must be able to import SKOS Core into their ontology / ontology tool. However, SKOS Core requires the addition of some statements and the removal of others before it can be imported into an OWL-DL environment. These required modifications are described below: