Dear all,
In recent work I have struck on a problematic interaction between SKOS and DC. These standards should strengthen each other. Using SKOS to publish value lists and then to use the skos:Concepts therein as the value of, for instance, dcterms:subject, offers significant benefits. However, there is a problem with dcterms:type, because it is declared with rdfs:Class as its range. This complicates the use of instances of skos:Concept as its value.
Instances of skos:Concept are individuals in OWL-terms, while resources occurring as the value of dcterms:type are, by definition of its range, classes. When a skos:Concept is used as the value of dcterms:type, it is both an individual and a class at the same time. The consequence is that the resulting ontology requires OWL Full semantics, so that OWL-reasoners will have trouble working with it.
To be honest, I am not completely clear about how bad the issue is from a formal semantics perspective. In OWL 1, matters were clear cut: OWL DL is available only when individuals and classes are disjoint. In OWL 2, OWL 2 DL semantics is also available for ontologies violating this constraint, through the mechanism of "punning".
Irene Polikoff of TopQuadrant effectively assures me that most products on the market (open source, commercial or otherwise) do not depend on OWL 2 DL for reasoning. Tools for reasoning used in practical settings most commonly take a rule based approach, for instance using SPARQL. The W3C Data Shapes initiative, SHACL, enables vendors to take this line further. As an aside, it seems that a shape constraint in terms of SHACL is often better suited than a range declaration to obtain intended restrictions --- this topic has been discussed recently on this forum.
In any case, the practical problem with the range of dcterms:type is not so much the formal semantics, but rather the confusion and concerns it causes. Public organizations in the Netherlands have to use this metadata-property in their publications. Recently, an initiative (in which I took part) lead to the adoption of SKOS on the comply-or-explain-list, so that SKOS has effectively become an obligatory standard in the Dutch public sector. One would like to say: use instances of skos:Concept as value of dcterms:type.
But my experience is that one is quickly caught up in discussions about punning. It complicates Dublin Core and works against the adoption of SKOS. Even though punning is allowed in OWL 2 DL, it is considered suboptimal modeling practice.
Further, by giving dcterms:type the range of rdfs:Class, one effectively duplicates rdf:type. If the objects of triples with dcterms:type as predicate must be classes, it is not clear how it is different from rdf:type and why and when one would use this property instead of rdf:type.
From the perspective of combining SKOS and DC, the ideal situation would be that dcterms:type would have skos:Concept as range. Dublin Core and SKOS would then positively stimulate each other.
Would it be desirable and if so, possible, to change the range of dcterms:type to skos:Concept? If not, then the next alternative is to remove and range information from its definition.
I would like to thank Irene Polikoff and Thomas Baker for valuable help so far. Regards, -Jan Voskuil
|