N.B. This document series is now deprecated. Please see http://www.w3.org/2004/02/skos/core/guide/ for the latest version of the SKOS Core Guide.

Abstract:
This document describes modular extensible RDF vocabularies for monolingual thesauri, supporting the ISO 2788 standard.
Project name:
Semantic Web Advanced Development for Europe (SWAD-Europe)
Project Number:
IST-2001-34732
Workpackage name:
8. Thesaurus Research Prototype
Workpackage description:
http://www.w3.org/2001/sw/Europe/plan/workpackages/live/esw-wp-8.html 
Deliverable title:
8.1: thesaurus_schema_draft
This version:
http://www.w3.org/2001/sw/Europe/reports/thes/8.1/draft03.html
Latest version:
http://www.w3.org/2001/sw/Europe/reports/thes/8.1/
Previous version:
http://www.w3.org/2001/sw/Europe/reports/thes/8.1/draft02.html
Status:
Draft
Authors:
Alistair Miles, CCLRC, UK
Brian Matthews, CCLRC, UK

Status of this document

This section describes the status of this document at the time of its publication. This is a draft document and may be updated, replaced, or obsoleted by other documents at any time. The latest status of this document series is maintained at the W3C.

This document is a public DRAFT for discussion. This document is an output of the research work of the Semantic Web Advanced Development for Europe Project, which is associated with the W3C Semantic Web Activity. This document is made available by W3C for discussion only. Publication of this document by W3C does not imply endorsement by W3C, including the Team and Membership.

Comments on this document are welcome and should be sent to the authors or to the public-esw-thes@w3.org list. An archive of this list is available at http://lists.w3.org/Archives/Public/public-esw-thes/.


Contents

  1. Introduction
  2. Vocabulary Modules and Namespaces
    1. KOS-Core
    2. KOS-Thes
    3. KOS-ISO2788
  3. KOS-Core Vocabulary
  4. Defining Concepts Using KOS-Core
    1. Using Explicit URIs
    2. Reference By Description
  5. KOS-Thes Vocabulary
  6. Defining Thesaurus Concepts Using KOS-Thes
  7. KOS-ISO2788 Vocabulary
  8. Defining Semantic Relations Between Concepts
  9. Using Thesaurus Concepts for Subject Indexing and Classification
  10. Extensions for Non-Standard Thesauri
  11. Summary

References


1. Introduction   [back to contents]

This document describes RDF vocabularies for encoding data from monolingual thesauri and similar knowledge organisation systems (KOS).

2. Vocabulary Modules and Namespaces

Extensibility, re-usability and interoperability are design features demanded by the nature and environment of the intended use of these schema. Therefore, rather than designing a single, specialised vocabulary which can be used to encode most monolingual thesauri as is, we designed this system for maximum extensibility and re-usability, so different flavours of thesauri can be encoded ithout ocmpleteyl redesigning the whole thing. Interoperability in mind, thesauri will be used alongside OWL and other kinds of KOS.

2.1. KOS-Core

So we present here three vocabulary modules. The first module, which we will call kos-core, is designed to allow the fundamental features of all thesauri and similar KOS to be captured. This vocabulary uses the base namespace

http://www.w3c.rl.ac.uk/2003/10/31-kos-core#

2.2. KOS-Thes

The second module, which we will call kos-thes, is designed to allow the representation of features that are common to thesauri as a distinct type of KOS. This vocabulary uses the base namespace

http://www.w3c.rl.ac.uk/2003/10/31-kos-thes#

2.3. KOS-ISO2788

This module, kos-iso2788, contains components specific to thesauri, defined in relation to the thesaurus standard ISO 2788:1986. The reason for defining components in relation to a standard is explained in full in section [???]. As new standards for thesauri emerge, this module would be replaced by new modules defined in relation to the new standards. These components are defined in relation to the base namespace

http://www.w3c.rl.ac.uk/2003/10/31-kos-iso2788#

In all the code and examples that follow in this document, you may assume that they have all been defined using the document type declaration given by the following

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE rdfs [

	<!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#">

	<!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#">

	<!ENTITY xsd "http://www.w3.org/2000/10/XMLSchema#">

	<!ENTITY dc "http://purl.org/dc/elements/1.1/">

	<!ENTITY dct "http://purl.org/dc/terms/">

	<!ENTITY kos "http://www.w3c.rl.ac.uk/2003/10/31-kos-core#">

	<!ENTITY thes "http://www.w3c.rl.ac.uk/2003/10/31-kos-thes#">

	<!ENTITY iso2788 "http://www.w3c.rl.ac.uk/2003/10/31-kos-iso2788#">

]>

3. KOS-Core Vocabulary

This section described the classes and properties of this schema module, and provides a description and examples of their intended usage. All snippets of rdf/xml in this section may be assumed to fall within the rdf root element as follows

<rdf:RDF 

	xmlns:rdf="&rdf;" 

	xmlns:rdfs="&rdfs;" 

	xmlns="http://www.w3c.rl.ac.uk/2003/10/31-kos-core#" 

	xml:base="http://www.w3c.rl.ac.uk/2003/10/31-kos-core">



</rdf:RDF>

<rdfs:Class rdf:ID="Concept">

	<rdfs:label>Concept</rdfs:label>

</rdfs:Class>

<rdf:Property rdf:ID="prefLabel">

	<rdfs:label>preferred-label</rdfs:label>

	<rdfs:subPropertyOf rdf:resource="&rdfs;label"/>

</rdf:Property>

<rdf:Property rdf:ID="altLabel">

	<rdfs:label>alternative-label</rdfs:label>

	<rdfs:subPropertyOf rdf:resource="&rdfs;label"/>

</rdf:Property>

<rdf:Property rdf:ID="descriptor">

	<rdfs:label>descriptor</rdfs:label>

	<rdfs:subPropertyOf rdf:resource="&rdf;value"/>

	<rdfs:subPropertyOf rdf:resource="#prefLabel"/>

	<rdfs:domain rdf:resource="#Concept"/>

</rdf:Property>

<rdf:Property rdf:ID="externalID">

	<rdfs:label>external-ID</rdfs:label>

	<rdfs:subPropertyOf rdf:resource="&rdf;value"/>

	<rdfs:domain rdf:resource="#Concept"/>

</rdf:Property>

<rdf:Property rdf:ID="semanticRelation">

	<rdfs:label>semantic-relation</rdfs:label>

	<rdfs:domain rdf:resource="#Concept"/>

	<rdfs:range rdf:resource="#Concept"/>

</rdf:Property>

4. Defining Concepts Using KOS-Core

This section gives examples of how to define concepts using kos-core alone. There are two ways that this can be done.

4.1. Explicit URIs

Every concept is assigned a globally unique URI. A concept definition might then look something like

<rdf:RDF xmlns:rdf="&rdf;" xmlns:rdfs="&rdfs;" xmlns:kos="&kos;">



	<kos:Concept rdf:about="http://www.w3c.rl.ac.uk/examples/thesaurus#001">

		<kos:prefLabel>Sausages<kos:descriptor>

		<kos:altLabel>Bangers</kos:altLabel>

	</kos:Concept>

	

</rdf:RDF>

4.2. Reference By Description

Concepts are defined by their properties. They are not assigned unique URIs. A concept declaration might then look like

<rdf:RDF xmlns:rdf="&rdf;" xmlns:rdfs="&rdfs;" xmlns:kos="&kos;">



	<kos:Concept>

		<kos:descriptor>Java programming language</kos:descriptor>

		<kos:altLabel>Java</kos:altLabel>

		<rdfs:isDefinedBy rdf:resource="http://www.w3c.rl.ac.uk/examples/thesaurus"/>

	</kos:Concept>

	

</rdf:RDF>

Because the kos:descriptor property uniquely identifies a concept within a KOS scheme, and the scheme itself has the unique gloablly identifying URI, the combination of these two properties constitutes a globally unique identifier for the concept.

Another example is

<rdf:RDF xmlns:rdf="&rdf;" xmlns:rdfs="&rdfs;" xmlns:kos="&kos;">



	<kos:Concept>

		<kos:prefLabel>Sausages<kos:descriptor>

		<kos:altLabel>Bangers</kos:altLabel>

		<kos:externalID>001</kos:externalID>

		<rdfs:isDefinedBy rdf:resource="http://www.w3c.rl.ac.uk/examples/thesaurus"/>

	</kos:Concept>

	

</rdf:RDF>

The kos:externalID property also uniqeuly identifies a concept within a scheme, so the property pair (kos:externalID rdfs:isDefinedBy) also globally uniquely identifies a concept.

Therefore, in order that reference by description may be used, a concept must be defined with a kos:descriptor and/or a kos:externalID.

5. KOS-Thes

The following code snippets have been defined in relation to the root element as follows

<rdf:RDF 

		xmlns:rdf="&rdf;" 

		xmlns:rdfs="&rdfs;" 

		xmlns:kos="&kos;"

		xmlns="http://www.w3c.rl.ac.uk/2003/10/31-kos-thes#" 

		xml:base="http://www.w3c.rl.ac.uk/2003/10/31-kos-thes">



</rdf:RDF>

<rdfs:Class rdf:ID="Facet">

	<rdfs:label>Facet</rdfs:label>

	<rdfs:subClassOf rdf:resource="&kos;Concept"/>

</rdfs:Class>

<rdf:Property rdf:ID="inFacet">

	<rdfs:label>in-facet</rdfs:label>

	<rdfs:subPropertyOf rdf:resource="&kos;semanticRelation"/>

	<rdfs:range rdf:resource="#Facet"/>

</rdf:Property>

<rdf:Property rdf:ID="scopeNote">

	<rdfs:label>scope-note</rdfs:label>

	<rdfs:subPropertyOf rdf:resource="&rdfs;comment"/>

	<rdfs:domain rdf:resource="&kos;Concept"/>

</rdf:Property>

<rdf:Property rdf:ID="generalNote">

	<rdfs:label>general-note</rdfs:label>

	<rdfs:subPropertyOf rdf:resource="#scopeNote"/>

</rdf:Property>

<rdf:Property rdf:ID="hierarchyNote">

	<rdfs:label>hierarchy-note</rdfs:label>

	<rdfs:subPropertyOf rdf:resource="#scopeNote"/>

</rdf:Property>

<rdf:Property rdf:ID="editorNote">

	<rdfs:label>editor-note</rdfs:label>

	<rdfs:subPropertyOf rdf:resource="#scopeNote"/>

</rdf:Property>

<rdf:Property rdf:ID="historyNote">

	<rdfs:label>history-note</rdfs:label>

	<rdfs:subPropertyOf rdf:resource="#scopeNote"/>

</rdf:Property>

6. Defining Thesaurus Concepts Using KOS-Thes

Again there is the option to define concepts using uris or reference by description. Most of the concept definition reuses kos-core. Extension allows concepts to be places into facets, and scope notes to be defined. e.g.

If all the concepts have been defined with explicit URIs, then some example data is

<rdf:RDF xmlns:rdf="&rdf;" xmlns:rdfs="&rdfs;" xmlns:kos="&kos;" xmlns:thes="&thes;">



	<kos:Concept rdf:about="http://www.w3c.rl.ac.uk/examples/thesaurus#002">

		<kos:prefLabel>Mushy peas<kos:descriptor>

		<kos:altLabel>Mashed peas</kos:altLabel>

		<thes:inFacet rdf:resource="http://www.w3c.rl.ac.uk/examples/thesaurus#F01"/>

		<thes:scopeNote>An English speciality, commonly served in fish & chip shops.</thes:scopeNote>

	</kos:Concept>

	

</rdf:RDF>

In this example, the subject of the thes:inFacet is the Facet [???].

Another example employing reference by description...

<rdf:RDF xmlns:rdf="&rdf;" xmlns:rdfs="&rdfs;" xmlns:kos="&kos;" xmlns:thes="&thes;">



	<kos:Concept>

		<kos:descriptor>Python programming language<kos:descriptor>

		<kos:altLabel>Python</kos:altLabel>

		<thes:inFacet>

			<thes:Facet>

				<kos:descriptor>Languages</kos:descriptor>

				<rdfs:isDefinedBy rdf:resource="http://www.w3c.rl.ac.uk/examples/thesaurus"/>

			</thes:Facet>

		</thes:inFacet>

		<thes:scopeNote>Refers to all forms and versions of the Python programming language</thes:scopeNote>

		<rdfs:isDefinedBy rdf:resource="http://www.w3c.rl.ac.uk/examples/thesaurus"/>

	</kos:Concept>

	

</rdf:RDF>

7. KOS-ISO2788

The kos-iso2788 module allows the definition of semantic relations between concepts in a thesaurus. We have defined these properties in realtion to standards. This is because the exact meaning of 'broader' etc. does vary between thesauri. Therefore we strongly encourage the precise definition of the exact meaning of a semanticRelation. The best place for this should be in the standards. Although iso2788 has been criticised, we use it here to demonstrate the prinicpal of defining semnatic relations in relation to the current standards. These properties may be replaced when new standards emerge.

The snippets in this section may be assumed to reside within the root element defined as follows

<rdf:RDF 

		xmlns:rdf="&rdf;" 

		xmlns:rdfs="&rdfs;" 

		xmlns:kos="&kos;"

		xmlns="http://www.w3c.rl.ac.uk/2003/10/31-kos-iso2788#" 

		xml:base="http://www.w3c.rl.ac.uk/2003/10/31-kos-iso2788">



</rdf:RDF>

<rdf:Property rdf:ID="broader">

	<rdfs:label>has-broader-concept</rdfs:label>

	<rdfs:subPropertyOf rdf:resource="&kos;semanticRelation"/>

</rdf:Property>

<rdf:Property rdf:ID="narrower">

	<rdfs:label>has-narrower-concept</rdfs:label>

	<rdfs:subPropertyOf rdf:resource="&kos;semanticRelation"/>

</rdf:Property>

<rdf:Property rdf:ID="related">

	<rdfs:label>has-related-concept</rdfs:label>

	<rdfs:subPropertyOf rdf:resource="&kos;semanticRelation"/>

</rdf:Property>

8. Defining Semantic Relations Between Concepts

We may now employ these vocabs for the full definiion of thesaurus concepts

<rdf:RDF xmlns:rdf="&rdf;" xmlns:rdfs="&rdfs;" xmlns:kos="&kos;" xmlns:thes="&thes;" xmlns:iso2788="&iso2788;">



	<kos:Concept>

		<kos:descriptor>Cod (fish)<kos:descriptor>

		<kos:altLabel>Cod</kos:altLabel>

		<thes:scopeNote>The variety of fish</thes:scopeNote>

		<rdfs:isDefinedBy rdf:resource="http://www.w3c.rl.ac.uk/examples/thesaurus"/>

		<iso2788:broader>

			<kos:Concept>

				<kos:descriptor>Salt-water fish</kos:descriptor>

				<rdfs:isDefinedBy rdf:resource="http://www.w3c.rl.ac.uk/examples/thesaurus"/>

			</kos:Concept>

		</iso2788:broader>

		<iso2788:related>

			<kos:Concept>

				<kos:descriptor>Fish and chips (cuisine)</kos:descriptor>

				<rdfs:isDefinedBy rdf:resource="http://www.w3c.rl.ac.uk/examples/thesaurus"/>

			</kos:Concept>

		</iso2788:related>

		<iso2788:narrower>

			<kos:Concept>

				<kos:descriptor>North atlantic cod</kos:descriptor>

				<rdfs:isDefinedBy rdf:resource="http://www.w3c.rl.ac.uk/examples/thesaurus"/>

			</kos:Concept>

		</iso2788:narrower>

		<thes:inFacet>

			<thes:Facet>

				<kos:descriptor>Animals</kos:descriptor>

				<rdfs:isDefinedBy rdf:resource="http://www.w3c.rl.ac.uk/examples/thesaurus"/>

			</thes:Facet>

		</thes:inFacet>

	</kos:Concept>

	

</rdf:RDF>

Or where concepts have been given explicit URIs

<rdf:RDF xmlns:rdf="&rdf;" xmlns:rdfs="&rdfs;" xmlns:kos="&kos;" xmlns:thes="&thes;" xmlns:iso2788="&iso2788;">



	<kos:Concept rdf:about="http://www.w3c.rl.ac.uk/examples/thesaurus#002">

		<kos:descriptor>Java programming language<kos:descriptor>

		<kos:altLabel>Java</kos:altLabel>

		<thes:scopeNote>Refers to all forms and versions of the Java programming language</thes:scopeNote>

		<iso2788:broader rdf:resource="http://www.w3c.rl.ac.uk/examples/thesaurus#007"/>

		<iso2788:narrower rdf:resource="http://www.w3c.rl.ac.uk/examples/thesaurus#011"/>

		<iso2788:related rdf:resource="http://www.w3c.rl.ac.uk/examples/thesaurus#008"/>

		<thes:inFacet rdf:resource="http://www.w3c.rl.ac.uk/examples/thesaurus#F01"/>

	</kos:Concept>



</rdf:RDF>

9. Using Thesaurus Concepts for Subject Indexing and Classification

We recommend the use of qualified dublin core. If the Concepts of the thesaurus have been defined with explicit URIs, then a subject declaration would lok like

<rdf:RDF xmlns:rdf="&rdf;" xmlns:dc="&dc;">



	<rdf:Description rdf:about="http://www.w3c.rl.ac.uk/examples/web/page_java.html">

		<dc:subject rdf:resource="http://www.w3c.rl.ac.uk/examples/thesaurus#002"/>

	</rdf:Description>

	

</rdf:RDF>

If the concepts have been defined by their properties, we use reference by description as follows

<rdf:RDF xmlns:rdf="&rdf;" xmlns:dc="&dc;" xmlns:rdfs="&rdfs;" xmlns:kos="&kos;">



	<rdf:Description rdf:about="http://www.w3c.rl.ac.uk/examples/web/page_cod.html">

		<dc:subject>

			<kos:Concept>

				<kos:descriptor>Cod (fish)</kos:descriptor>

				<rdfs:isDefinedBy rdf:resource"http://www.w3c.rl.ac.uk/examples/thesaurus"/>

			</kos:Concept>

		</dc:subject>

	</rdf:Description>

	

</rdf:RDF>

Because the domain of the kos:descriptor and kos:externalID properties is restricted to Concepts, it is also perfectly acceptable to use the shortened syntax:

<rdf:RDF xmlns:rdf="&rdf;" xmlns:dc="&dc;" xmlns:rdfs="&rdfs;" xmlns:kos="&kos;">



	<rdf:Description rdf:about="http://www.w3c.rl.ac.uk/examples/web/page_cod.html">

		<dc:subject rdf:parseType="resource">

			<kos:descriptor>Cod (fish)</kos:descriptor>

			<rdfs:isDefinedBy rdf:resource"http://www.w3c.rl.ac.uk/examples/thesaurus"/>

		</dc:subject>

	</rdf:Description>

	

</rdf:RDF>

Because the properties are subproperties of rdf:value, this is entirely consistent with dc standard usage for subject declarations, for example

<rdf:RDF xmlns:rdf="&rdf;" xmlns:dc="&dc;" xmlns:rdfs="&rdfs;">



<!-- Example taken from dc in rdf spec -->



	<rdf:Description rdf:about="http://www.w3c.rl.ac.uk/examples/web/page_cod.html">

		<dc:subject>

			<rdf:Description>

				<rdf:value>???</rdf:value>

				<rdfs:isDefinedBy rdf:resource"???"/>

			</rdf:Description>

		</dc:subject>

	</rdf:Description>

	

</rdf:RDF>

There are also other acceptable alternative usages. The first is that you may define a subclass of the kos:Concept class, to indicate the set of all concepts that are within a particular kos scheme. So in the examples above I could have defined the class swad:ExampleThesaurusConcept as a subclass of the kos:Concept class and typed all the concepts i defined using this. Then, because the rdf:type of the concept indicates the kos scheme from which the concept is defined, i can use this instead of the rdfs:isDefinedBy property. This allows subject declarations such as

<rdf:RDF xmlns:rdf="&rdf;" xmlns:dc="&dc;" xmlns:rdfs="&rdfs;" xmlns:kos="&kos;" xmlns:swad="http://www.w3c.rl.ac.uk/examples/thesaurus#">



	<rdf:Description rdf:about="http://www.w3c.rl.ac.uk/examples/web/page_cod.html">

		<dc:subject>

			<swad:ExampleThesaurusConcept>

				<kos:descriptor>Cod (fish)</kos:descriptor>

			</swad:ExampleThesaurusConcept>

		</dc:subject>

	</rdf:Description>

	

</rdf:RDF>

This kind of subject declaration is equivalent to the dublin core usage such as

<rdf:RDF xmlns:rdf="&rdf;" xmlns:dc="&dc;" xmlns:rdfs="&rdfs;">



<!-- Example taken from dc in rdf spec -->



	<rdf:Description rdf:about="http://www.w3c.rl.ac.uk/examples/web/page_cod.html">

		<dc:subject>

			<dct:MeSH>

				<rdf:value>???</rdf:value>

				<rdfs:label>???</rdfs:label>

			</dct:MeSH>

		</dc:subject>

	</rdf:Description>

	

</rdf:RDF>

In the above example, schematically, the MeSH class, and also ??? other classes from dct, are equivalent to subclasses of the kos:Concept class.

10. Extensions for Non-Standard Thesauri

Thesauri come in many flavours. Modules have bene designed for extensibility and adaptibility. If your thesaurus contains non-standard relations, you may define your own relations, extending the kos:semanticrelation property. However we strongly recommend that you provide a precise and complete description of the intended meaning of wuch a property.

Please also refer to subsequent deliverables referring to relation between OWL and thes vocabs. How to deal with more precise smeantic relations such as instantiation, class subsumption and part-of relations.

Summary

References   [back to contents]

ISO 2788

ISO 5964

Deliverable 8.2

ILRT schema

Limber schema