This is an archive of an inactive wiki and cannot be modified.

SKOS (Simple Knowledge Organisation System) Semantics

Abstract

The Simple Knowledge Organisation System (SKOS) is a semi-formal language for exchanging and publishing knowledge organisation systems, such as thesauri, taxonomies, classification schemes and subject heading systems, via the World Wide Web.

SKOS has a formal syntax, based on the Resource Description Framework, which is specified in this document.

SKOS also has a flexible, semi-formal semantics. The precise, formal aspects of this semantics are specified in this document. The informal aspects of this semantics are defined in the ["/SKOS/Primer" SKOS Primer].

Status of this Document

This is a wiki draft, and is a work in progress. The content of this document may change without warning at any time. This document has no official status whatsoever within any W3C process.

Table of Contents


Section: SKOS/Semantics/Introduction

This section last edited on 2010-04-01 12:48:29 is part of the SKOS/Semantics wiki draft.

Introduction

@@TODO general introduction

Basis for the Semantics

In this document, semantic conditions on the interpretation of the SKOS Vocabulary may be given in one of two forms:

  • Wherever possible, semantic conditions are stated as a set of "axiomatic" RDF triples, using the RDF, RDFS and OWL Vocabularies.
  • Where this isn't possible, semantic conditions are stated using the mathematical definitions and conventions established in section 5 of [OWL Semantics], where I = < RI, PI, EXTI, SI, LI, LVI, > is an an interpretation of some vocabulary V with respect to a datatype map D.

This formulation of the SKOS semantics has been designed to allow applications to choose whether to view SKOS as a vocabulary extension of either RDF, RDFS or OWL Full.

Note that some aspects of the semantics of SKOS, which are deemed to be useful under certain circumstances, cannot be stated without violating the syntactic constraints imposed by the OWL DL language. This has been raised as an issue for the SWDWG, which has yet to be resolved.

As a temporary solution, this document marks a number of axiomatic triples as [OWL-Full]. Applications MAY then choose to view SKOS as a vocabulary extension of OWL DL, by ignoring any triples marked as such.

Guidance on how to use the SKOS Vocabulary within the constraints of the OWL DL language will be given in the SKOS/Primer.

URI Abbreviations

Throughout this document, URIs are presented in an abbreviated form, using the following table of abbreviations:

URI Abbreviation Table

skos:

http://www.w3.org/2004/02/skos/core#

@@TODO

...

Structure of this Document

The main body of this document is divided into a number of different "modules". This is entirely for the convenience of the reader, and no formal meaning is intended by the word "module".

The structure of each module is decribed below.

First, URIs from the SKOS Vocabulary are given, to which subsequent statements within the module apply. These are given as a list of abbreviated URIs, using abbreviations set out in section @@TODO. For example:

Vocabulary

ex:foo ex:bar

Second, semantic conditions on the interpretation of these elements are stated. As described in section @@TODO above, semantic conditions are either stated as a set of RDF triples using the same syntax as is used in [RDF Semantics] (i.e. N-Triples with URI abbreviations allowed), for example:

Axiomatic Triples

ex:foo rdfs:range rdfs:Literal.
ex:bar rdfs:range rdfs:Literal.
ex:foo rdfs:subPropertyOf rdfs:label. [OWL-Full]
ex:bar rdfs:subPropertyOf rdfs:label. [OWL-Full]

or as formal statements following the conventions and definitions established in section 5 of [OWL Semantics], for example:

Semantic Conditions

If <x,y> is in EXTI(SI(ex:foo)) then there exists some z such that <x,z> is in EXTI(SI(ex:bar)).

Third, informative examples may be given using the [Turtle] RDF syntax, which are consistent with the semantics, for example:

ex:a ex:foo "bar"@en.

Fourth, if applicable, informative examples may be given using the [Turtle] RDF syntax, which are not consistent with the semantics (i.e. give rise to a logical contradiction).

Fifth, any syntactic conditions which apply to the use of the vocabulary in RDF graphs are stated, using keywords MUST, SHOULD, MAY etc. as defined by [RFC 2199], for example:

Syntactic Conditions

An application MAY ignore any triple in an RDF graph where the predicate is either ex:foo or ex:bar and the object is NOT a plain literal.

Finally, any new entailment rules are stated, which follow from the semantic conditions given in the module. These rules are informative only, and are presented using the same conventions as used in section @@TODO of [RDF Semantics]. For example:

Entailment Rules (Informative)

If E contains

then add

uuu ex:foo xxx .

uuu ex:bar _:nnn .
where _:nnn identifies a new blank node in the graph.


Section: SKOS/Semantics/Labelling

This section last edited on 2010-04-01 12:48:29 is part of the SKOS/Semantics wiki draft. The following open issues are directly associated with this module: ISSUE-31. The following open issues may have a bearing on this module: ISSUE-26, ISSUE-27.

Module: Labelling

This module defines a semantics for the basic labelling properties available in SKOS.

Vocabulary

skos:prefLabel skos:altLabel skos:hiddenLabel

The triples below define semantic conditions on the interpretation of this vocabulary.

Axiomatic Triples

skos:prefLabel rdf:type owl:AnnotationProperty.
skos:altLabel rdf:type owl:AnnotationProperty.
skos:hiddenLabel rdf:type owl:AnnotationProperty.
skos:prefLabel rdfs:range rdfs:Literal. [OWL-Full]
skos:altLabel rdfs:range rdfs:Literal. [OWL-Full]
skos:hiddenLabel rdfs:range rdfs:Literal. [OWL-Full]
skos:prefLabel rdfs:subPropertyOf rdfs:label. [OWL-Full]
skos:altLabel rdfs:subPropertyOf rdfs:label. [OWL-Full]
skos:hiddenLabel rdfs:subPropertyOf rdfs:label. [OWL-Full]

There are no further semantic conditions on the interpretation of this vocabulary.

Intuitively, it doesn't make sense for a resource to have more than one "preferred" label in any given language, or for a label to be both "preferred" and "alternative", or for a label to be both "alternative" and "hidden", or for a label to be both "preferred" and "hidden". Note however that these intuitions are not handled within the semantics, but are handled instead at a syntactic level (see the syntactic conditions given below), which is perhaps easier to implement and allows error-tolerant strategies to be defined.

This means that, under the semantics given above, the examples below are logically consistent, even though they are intuitively inconsistent.

ex:a skos:prefLabel "foo"@en.
ex:a skos:prefLabel "bar"@en.

ex:a skos:prefLabel "foo"@en.
ex:a skos:altLabel "foo"@en.

ex:a skos:altLabel "foo"@en.
ex:a skos:hiddenLabel "foo"@en.

ex:a skos:prefLabel "foo"@en.
ex:a skos:hiddenLabel "foo"@en.

Syntactic conditions on the use of this vocabulary are given below.

Syntactic Conditions

An application MAY ignore any triple in an RDF graph where the predicate is either skos:prefLabel, skos:altLabel or skos:hiddenLabel and the object is NOT a plain literal.

Where an RDF graph contains more than one triple where the subject is the same, the predicate is skos:prefLabel, and the object is a plain literal with the same language tag, an application SHOULD ignore all but one of these triples.

An application SHOULD ignore a triple in an RDF graph where the predicate is skos:hiddenLabel and the graph contains another triple with the same subject and object, but with skos:altLabel or skos:prefLabel as predicate.

An application SHOULD ignore a triple in an RDF graph where the predicate is skos:altLabel and the graph contains another triple with the same subject and object, but with skos:prefLabel as predicate.

The first syntactic condition means that applications are only obliged to handle plain literals in the object position where these predicates are used. For example, an application MAY ignore the following triples:

ex:a skos:prefLabel ex:b.
ex:c skos:altLabel _:xxx.

The second syntactic condition specifies the recommended way for an application to handle more than one preferred label in any given language. For example, an application SHOULD ignore all but one of the following triples:

ex:a skos:prefLabel "foo"@en.
ex:a skos:prefLabel "bar"@en.
ex:a skos:prefLabel "baz"@en.

The third and fourth syntactic conditions specify the recommended way for an application to handle "clashes" between skos:prefLabel, skos:altLabel and skos:hiddenLabel. For example, an application SHOULD ignore the second triple in each of the three graphs below.

ex:a skos:prefLabel "foo"@en.
ex:a skos:altLabel "foo"@en.

ex:a skos:prefLabel "foo"@en.
ex:a skos:hiddenLabel "foo"@en.

ex:a skos:altLabel "foo"@en.
ex:a skos:hiddenLabel "foo"@en.

These syntactic conditions are intended to provide applications with an error-tolerant way of handling intuitively inconsistent data, which may easily arise where graphs are being merged from multiple sources. Nevertheless, producers of SKOS data are strongly advised to ensure that the graphs they produce do not contain any triples which trigger these syntactic conditions.


Section: SKOS/Semantics/Grouping

This section last edited on 2010-04-01 12:48:29 is part of the SKOS/Semantics wiki draft.

Module: Grouping Constructs

This module defines the grouping constructs available in SKOS, also known as "collections".

See also SKOS/Primer/Grouping.

Vocabulary

skos:Collection skos:OrderedCollection skos:member skos:memberList

The triples below define semantic conditions on the interpretation of this vocabulary.

Axiomatic Triples

skos:OrderedCollection rdfs:subClassOf skos:Collection.
skos:member rdf:type owl:ObjectProperty.
skos:member rdfs:domain skos:Collection.
skos:memberList rdf:type owl:FunctionalProperty.
skos:memberList rdfs:domain skos:OrderedCollection.
skos:memberList rdfs:range rdf:List.
skos:Collection owl:disjointWith skos:Concept.
skos:Collection owl:disjointWith skos:ConceptScheme.

There is also a logical relationship between the skos:memberList and skos:member properties, which is stated below (where "sequence" is defined as in section 5 of [OWL Semantics]).

Semantic Conditions

If <x,y> is in EXTI(SI(skos:memberList)) and y is a sequence of y1,...yn then <x,y1>...<x,yn> is in EXTI(SI(skos:member)).

I.e. informally, for ordered collections, every member given by the skos:memberList property can also be given by the skos:member property.

See SKOS/Primer/Grouping for examples of consistent and inconsistent usage of this vocabulary.

Note in particular that the use of a skos:Collection in either the subject or object position of a triple involving skos:broader, skos:narrower or skos:related as predicate will result in an inconsistency. This is because skos:Collection is disjoint with skos:Concept, and because skos:broader, skos:narrower and skos:related are sub-properties of skos:semanticRelation, which has both domain and range skos:Concept (see also SKOS/Semantics/ParadigmaticRelations).

See SKOS/Primer/Grouping for guidance on how to construct a systematic hierarchical display involving grouping constructs.

There are no syntactic conditions on the use of this vocabulary.

The following entailment rules follow from the logical relationship between the skos:memberList and skos:member properties stated above, where u v and x stand for any URI or blank node ID.

Entailment Rules (Informative)

If E contains

then add

u skos:memberList v .
v rdf:first x .

u skos:member x .

u skos:memberList v1 .
v1 rdf:rest v2 . ... vi-1 rdf:rest vi .
vi rdf:first x .

u skos:member x .