Tags

SKOS (part 4): property chains

We consider following SKOS property definitions which were not expressible in OWL1:
  • S55: The property chain (skosxl:prefLabel, skosxl:literalForm) is a sub-property of skos:prefLabel.
  • S56: The property chain (skosxl:altLabel, skosxl:literalForm) is a sub-property of skos:altLabel.
  • S57: The property chain (skosxl:hiddenLabel, skosxl:literalForm) is a sub-property of skos:hiddenLabel.

OWL2


One of the new and exciting features of OWL2 is the facility that a property can be defined as the composition of several properties; called a property chain.
The traditional example here is that the property :hasUncle is a composition of the properties :hasParent and :hasBrother.
You will find an elaborate explanation of this example at the Semantic Web Programming site.

More formally we have the following axiom:
SubObjectPropertyOf( ObjectPropertyChain( OPE1 ... OPEn ) OPE ).
This axiom states that, if an individual x is connected with an individual y by a sequence of object property expressions OPE1, ..., OPEn ,
then x is also connected with y by the object property expression OPE.
Such axioms are also known as complex role inclusions [SROIQ].

Now let's move to SKOS where:
  • skosxl:prefLabel is an Object property.
  • skosxl:literalForm is a Data property.
  • skos:prefLabel is an Annotation property.
This mixture of property types is, as far as I understand OWL2, not allowed in property chain axioms.

But let's try anyhow.

skos:prefLabel rdf:type owl:AnnotationProperty.
xl:prefLabel rdf:type owl:ObjectProperty.
xl:literalForm rdf:type owl:DatatypeProperty.
skos:prefLabel owl:propertyChainAxiom (
xl:prefLabel
xl:literalForm
).
Pellet 2.1.0 throws as expected a warning:
WARNING: Unsupported axiom: Bnode in owl:propertyChainAxiom axiom is not a valid
property expression.
Conclusion: this type of property chaining cannot be done in OWL2.

SPIN


In SPIN once again implementing this constraint is fairly easy.

Adding following SPARQL CONSTRUCT as a spin:rule to e.g. the skos:Concept class does the work.

CONSTRUCT {
?this skos:prefLabel ?label .
}
WHERE {
?this xl:prefLabel ?prefLabel .
?prefLabel xl:literalForm ?label .
}
The result as shown in TopBraid Composer:

Property Chain

Conclusion


SPIN wins again.

Comments