XTech 2005: XML, the Web and beyond.
The paper presents an introduction to W3C's Simple Knowledge Organisation System (SKOS) , an RDF Schema designed to represent and share controlled vocabularies, such as classifications, glossaries, and thesauri, more simply than ontology languages.
Textual content-based search engines for the web have a number of limitations. Firstly, many web resources have little or no textual content (images, audio or video streams etc.) Secondly, precision is low where natural language terms have overloaded meaning (e.g. 'bank', 'watch', 'chip' etc.) Thirdly, recall is incomplete where the search does not take account of synonyms or quasi-synonyms. Fourthly, there is no basis for assisting a user in modifying (expanding, refining, translating) a search based on the meaning of the original search. Fifthly, there is no basis for searching across natural languages, or framing search queries in terms of symbolic languages.
The Semantic Web is a framework for creating, managing, publishing and searching semantically rich metadata for web resources. Annotating web resources with precise and meaningful statements about conceptual aspects of their content provides a basis for overcoming all of the limitations of textual content-based search engines listed above.
Creating this type of metadata requires that metadata generators are able to refer to shared repositories of meaning: 'vocabularies' of concepts that are common to a community, and describe the domain of interest for that community.
This type of effort is common in the digital library community, where a group of experts will interact with a user community to create a thesaurus for a specific domain (e.g. the Art & Architecture Thesaurus AAT AAT) or an overarching classification scheme (e.g. the Dewey Decimal Classification). A similar type of activity is being undertaken more recently in a less centralised manner by web communities, producing for example the DMOZ web directory DMOZ, or the Topic Exchange for weblog topics Topic Exchange.
The web, including the semantic web, provides a medium within which communities can interact and collaboratively build and use vocabularies of concepts. A simple language is required that allows these communities to express the structure and content of their vocabularies in a machine-understandable way, enabling exchange and reuse.
The Resource Description Framework (RDF) is an ideal language for making statements about web resources and publishing metadata. However, RDF provides only the low level semantics required to form metadata statements. RDF vocabularies must be built on top of RDF to support the expression of more specific types of information within metadata.
Ontology languages such as OWL OWL add a layer of expressive power to RDF, and provide powerful tools for defining complex conceptual structures, which can be used to generate rich metadata. However, the class-oriented, logically precise modelling required to construct useful web ontologies is demanding in terms of expertise, effort, and therefore cost. In many cases this type of modelling may be superfluous or unsuited to requirements.
Therefore there is a need for a language for expressing vocabularies of concepts for use in semantically rich metadata, that is powerful enough to support semantically enhanced search, but simple enough to be undemanding in terms of the cost and expertise required to use it.
SKOS stands for Simple Knowledge Organisation System. The name SKOS was chosen to emphasise the goal of providing a simple yet powerful framework for expressing knowledge structures in a machine-understandable way, for use on the semantic web.
This paper focuses on SKOS Core, which provides the core model for expressing the basic structure and content of a concept scheme MilesBric05. The SKOS Core Vocabulary is a set of RDF properties and RDFS classes, that can be used to express the content and structure of a concept scheme as an RDF graph MilesBric05a. The origins and development history of SKOS Core are discussed in this section.
Classifications and thesauri have been used by the library community for many years, with best practice captured in two ISO standards from the mid 1980s (ISO2788 ISO2788, ISO5964 ISO5964). Within a Web context, there have been several formats proposed for representing particular thesauri using XML and RDF; for a survey of such formats see MattMiles03. A generic RDF schema for thesauri was initially produced by the DESIRE project Cross et. al. 01, and further developed in the Limber project Matthews et. al 01. This work formed the basis of SKOS Core.
SKOS Core was initially developed within the scope of the Semantic Web Advanced Development for Europe (SWAD-E) project, an EU IST project in the 5th Framework Programme SWAD. SKOS Core was developed as draft of an RDF Schema for thesauri compatible with relevant ISO standards. Further work extended it to multilingual thesauri, and mappings between thesauri, and developed some pilot tools; see SWAD Reports for the deliverables on Thesauri.
The development of SKOS Core was led by the SWAD-E project team, and was carried out in an open-source manner via wikis and public mailing lists. Various experts from the thesaurus development and digital library communities participated in development discussions.
The name SKOS was chosen to emphasise that:
After initial publication within SWAD-E, SKOS Core continued to be developed in response to feedback from the open-source developer community that had built up around the initial SWAD-E effort. In November 2004, responsibility for continued development of SKOS Core was assumed by the W3C Semantic Web Best Practices and Deployment Working Group (SWBPD-WG), with the aim of publishing SKOS Core as a W3C Working Group Note. As of March 2005, the first public working drafts of the SKOS Core Guide and SKOS Core Vocabulary Specifiation are being prepared for publication.
During the development of SKOS Core, it has always been an objective that the design should be compatible with the ISO 2788 and 5964 standards, both highly influential to the development of thesauri. However, these standards were developed in a traditional paper-based environment, and do not take into account the impact of digital media. The British Standards Institute working group BS8723 is working to revise these standards, and its members have been directly involved with SKOS Core development to ensure that the two initiatives do not diverge.
However, there has also been a strong motivation behind SKOS Core of ensuring that the large variation found in the implementation of thesauri, classification schemes etc. can be accommodated within a consistent, extensible framework, achieving the maximum degree of interoperability. Therefore SKOS Core has been designed with extensibility in mind. Additionally, SKOS Core has always been seen as a bridge between the more traditional, library/museum/archive-oriented knowledge organisation systems such as thesauri and classification systems, and web-based structures such as the open directory, blog topic exchange etc. It attempts to allow the capture of the essential conceptual features of all of these things, but without compromising specificity.
This section illustrates the basic features and usage of the SKOS Core Vocabulary, for representing some common types of controlled vocabulary in RDF. Three examples are presented, the first an extract from a glossary, the second an extract from a taxonomy used as a categorisation scheme for weblog entries, the third a well-engineered thesaurus used for subject-based indexing.
For each example, the RDF representation is given as a visualisation of the RDF graph. RDF is an extension of the directed labelled graph data formalism, and so this type of visualisation gives the most natural rendering of RDF data. For eaxh example an encoding of the RDF graph is also given, using the RDF/XML serialisation syntax. Note that RDF/XML is one of three supported encoding formats for RDF data, the others being N3/Turtle and N-Triples.
The prefix 'skos:' is used in prose below as an abbreviation
for the string 'http://www.w3.org/2004/02/skos/core#'. Thus, for
example, 'skos:prefLabel' is used as a convenient shortened form
of 'http://www.w3.org/2004/02/skos/core#prefLabel'.
The following is an extract from the glossary in the RDF Semantics recommendation HayesMcBri04:
Assertion: (i) Any expression which is claimed to be true. (ii) The act of claiming something to be true.
Class: A general concept, category or classification. Something used primarily to classify or categorize other things. Formally, in RDF, a resource of type
rdfs:Classwith an associated set of resources all of which have the class as a value of therdf:typeproperty.
Resource: (as used in RDF) (i) An entity; anything in the universe. (ii) As a class name: the class of everything; the most inclusive category possible.
Creating an RDF expression of this glossary requires the use of the
skos:Conceptclass, theskos:prefLabelandskos:definitionproperties. Figure 1 illustrates an RDF graph for this glossary extract.

The encoding of this RDF graph using the RDF/XML serialisation syntax is below:
<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:skos="http://www.w3.org/2004/02/skos/core#">
<skos:Concept rdf:about="http://www.w3.org/2003/03/glossary-project/data/glossaries/rdf-mt#assertion">
<skos:prefLabel>assertion</skos:prefLabel>
<skos:definition> (i) Any expression which is claimed to be true.
(ii) The act of claiming something to be true.</skos:definition>
</skos:Concept>
<skos:Concept rdf:about="http://www.w3.org/2003/03/glossary-project/data/glossaries/rdf-mt#class">
<skos:prefLabel>class</skos:prefLabel>
<skos:definition>A general concept, category or classification. Something used primarily to classify
or categorize other things. Formally, in RDF, a resource of type rdfs:Class with an associated
set of resources all of which have the class as a value of the rdf:type property.</skos:definition>
</skos:Concept>
<skos:Concept rdf:about="http://www.w3.org/2003/03/glossary-project/data/glossaries/rdf-mt#resource">
<skos:prefLabel>resource</skos:prefLabel>
<skos:definition>(as used in RDF) (i) An entity; anything in the universe.
(ii) As a class name: the class of everything; the most inclusive category possible.
</skos:definition>
</skos:Concept>
</rdf:RDF>
The RDF description above is in fact a simplified version of the full
published RDF description of these glossary terms from the RDF semantics
glossary. The full published version uses an additional predicate
(rdfs:isDefinedBy) and two features from the RDF/XML syntax: (1)
the xml:lang attributed is used to specify the language of plain
literals, (2) the rdf:parseType="Literal" atttribute is used to
allow XML literals as objects of the skos:definition property.
Below is the full published RDF description of the 'class' term from the RDF
semantics glossary, illustrating these features:
<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF
xmlns="http://www.w3.org/1999/xhtml"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:skos="http://www.w3.org/2004/02/skos/core#">
<skos:Concept rdf:about="http://www.w3.org/2003/03/glossary-project/data/glossaries/rdf-mt#class">
<skos:prefLabel xml:lang="en">class</skos:prefLabel>
<skos:definition xml:lang="en" rdf:parseType="Literal">
(n.) A general concept, category or classification. Something used
primarily to classify or categorize other things. Formally, in RDF, a resource
of type rdfs:Class with an associated set of resources all of
which have the class as a value of the rdf:type property. Classes
are often called 'predicates' in the formal logical literature.
</skos:definition>
<rdfs:isDefinedBy rdf:resource="http://www.w3.org/TR/2004/REC-rdf-mt-20040210/"/>
</skos:Concept>
</rdf:RDF>
Below is an extract from a simple subject taxonomy, used to categorise weblog entries Fred 05:
General Travelling Politics SemWeb RDF OWL
The RDF expression of this taxonomy makes use of the skos:broader
and skos:narrower semantic relation properties for
asserting relationships of meaning between concepts. The
skos:broader and skos:narrower properties allow you
to define a generalisation/specialisation hierarchy for a set of concepts,
without requiring that the hierarchy implies anything more specific such as
class subsumption. The RDF graph is visualised in Figure 2.

In the image each ellipse depicts a resource of type
skos:Concept, although the rdf:type assertions have
been left out to improve the readability of the image.
The encoding of this RDF graph using the RDF/XML syntax is as follows:
<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:skos="http://www.w3.org/2004/02/skos/core#"
xml:base="http://www.wasab.dk/morten/blog/archives/author/mortenf/skos.rdf">
<skos:Concept rdf:about="#c1">
<skos:prefLabel>General</skos:prefLabel>
<skos:narrower rdf:resource="#c23"/>
<skos:narrower rdf:resource="#c30"/>
</skos:Concept>
<skos:Concept rdf:about="#c23">
<skos:prefLabel>Travelling</skos:prefLabel>
<skos:broader rdf:resource="#c1"/>
</skos:Concept>
<skos:Concept rdf:about="#c30">
<skos:prefLabel>Politics</skos:prefLabel>
<skos:broader rdf:resource="#c1"/>
</skos:Concept>
<skos:Concept rdf:about="#c2">
<skos:prefLabel>SemWeb</skos:prefLabel>
<skos:narrower rdf:resource="#c15"/>
</skos:Concept>
<skos:Concept rdf:about="#c15">
<skos:prefLabel>RDF</skos:prefLabel>
<skos:broader rdf:resource="#c2"/>
<skos:narrower rdf:resource="#c24"/>
</skos:Concept>
<skos:Concept rdf:about="#c24">
<skos:prefLabel>OWL</skos:prefLabel>
<skos:broader rdf:resource="#c15"/>
</skos:Concept>
</rdf:RDF>
Note the use of the xml:base attribute to define a base URI
for the document, which allows relative URIs to be used throughout.
Thesauri are controlled vocabularies, where concepts are described indirectly via 'descriptor terms' (aka 'preferred terms'). Concepts may also have non-preferred terms, and may be related to each other via a specialisation/generalisation semantic relation, and via the associative semantic relation. For example, below is an extract from the UK Archival Thesaurus (UKAT) UKAT presented as thesauri have been traditionally rendered for print media:
Term: Economic cooperation Used For: Economic co-operation Broader terms: Economic policy Narrower terms: Economic integration European economic cooperation European industrial cooperation Industrial cooperation Related terms: Interdependence Scope Note: Includes cooperative measures in banking, trade, industry etc., between and among countries.
The properties skos:prefLabel and skos:altLabel
allow the assignment of preferred and alternative lexical labels to a concept.
The property skos:scopeNote is one of a family of 'documentation
properties' that also includes skos:definition (seen in the
glossary example). The property skos:related is a semantic
relation property that allows the assertion of associative semantic
relationships between two concepts. Using these properties, and RDF graph
expressing the above extract can be generated, and is visualised in Figure
3.

In the image above, each blue circle represents a resource of type
skos:Concept (the rdf:type assertions are left out
for readability of the image). Also, as will be seen below, each of these
concepts has an assigned URI, however these have been left out of the image
also to improve readability of the image. Below is the RDF/XML serialisation of
the RDF description of the 'economic co-operation' concept from the
UKAT:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:skos="http://www.w3.org/2004/02/skos/core#">
<skos:Concept rdf:about="http://www.ukat.org.uk/thesaurus/concept/1750">
<skos:prefLabel>Economic cooperation</skos:prefLabel>
<skos:altLabel>Economic co-operation</skos:altLabel>
<skos:scopeNote> Includes cooperative measures in banking, trade, industry etc.,
between and among countries.
</skos:scopeNote>
<skos:inScheme rdf:resource="http://www.ukat.org.uk/thesaurus"/>
<skos:broader rdf:resource="http://www.ukat.org.uk/thesaurus/concept/4382"/>
<skos:narrower rdf:resource="http://www.ukat.org.uk/thesaurus/concept/2108"/>
<skos:narrower rdf:resource="http://www.ukat.org.uk/thesaurus/concept/9505"/>
<skos:narrower rdf:resource="http://www.ukat.org.uk/thesaurus/concept/15053"/>
<skos:narrower rdf:resource="http://www.ukat.org.uk/thesaurus/concept/18987"/>
<skos:related rdf:resource="http://www.ukat.org.uk/thesaurus/concept/3250"/>
</skos:Concept>
</rdf:RDF>
This section describes some more advanced usage scenarios. The goal is to illustrate the extensibility and flexibility of employing and RDF-based standard vocabulary such as SKOS Core for the representation of information structures such as controlled vocabularies etc.
The first example below illustrates how SKOS Core may be used in combination with other semantic web vocabularies to create richer descriptions of the information in question. The underlying graph data model makes it especially easy to combine multiple standards in a meaningful way. The second example illustrates how features of the SKOS Core vocabulary may be directly 'extended', so allowing the expression of more specific meaning without compromising basic interoperability. The RDF Vocabulary Description Language (RDFS) via its sub-class and sub-property constructs, provides a powerful yet simple mechanism for basic extensibility of RDF vocabularies. The third example also illustrates the extension of SKOS Core features, and also demonstrates the use of the Web Ontology Language in combination with SKOS Core to create a more powerful expressive base, and support specific validation features.
A virtue of RDF lies in the ease with which multiple RDF vocabularies can be used in combination. For example, this means that, where a published RDF vocabulary does not completely satisfy requirements, it may be used in combination with another more specialised one. This encourages re-use and maximises interoperability.
The example in this section illustrates how the SKOS Core Vocabulary may be used in combination with the Friend of a Friend (FOAF FOAF) and Dublin Core Terms Vocabularies Dublin Core to create semantically rich documentation for a conceptual resource.
In the examples in the previous section, two of the 'SKOS Core
documentation properties' (skos:definition and
skos:scopeNote) were introduced. In these examples the values of
these properties where RDF plain literals - i.e. simple textual content, with
an optional language tag. It is however possible to use the SKOS Core
documentation properties with more complex RDF constructs. For example, an item
of documentation may be structured to include other meta-information such as a
creation data and a creator. Figure 4 illustrates just such a graph.

The RDF/XML serialisation of this example is below:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:skos="http://www.w3.org/2004/02/skos/core#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:foaf="http://xmlns.com/foaf/0.1/">
<skos:Concept rdf:about="http://www.example.org/concepts#laptops">
<skos:prefLabel>notebook computers</skos:prefLabel>
<skos:changeNote rdf:parseType="Resource">
<rdf:value>The preferred label for this concept changed from 'laptop computers' to
'notebook computers' on 23 Jan 1999.</rdf:value>
<dc:creator>
<foaf:Person>
<foaf:name>John Smith</foaf:name>
<foaf:mbox rdf:resource="mailto:jsmith@example.org"/>
</foaf:Person>
</dc:creator>
<dc:date>1999-01-23</dc:date>
</skos:changeNote>
</skos:Concept>
</rdf:RDF>
Note the usage of the rdf:parseType="Resource" attribute -
this provides a syntactic shortcut for representing 'blank nodes' in the
RDF/XML syntax. In principle, any RDF vocabulary could be employed in the
description of an item of documentation, and that item could be an arbitrarily
complex RDF graph.
Any property of the SKOS Core Vocabulary may be 'extended' or 'refined' by defining a new RDF property and declaring at as a sub-property of the former. The new property may carry more specific meaning, but the super-property may be inferred by simple property subsumption reasoning to generate the base representation. In practical terms, this means that properties of a vocabulary may be extended to satisfy specific local requirements, without sacrificing any of the benefits to interoperability offered by employing a standard, globally recognised vocabulary.
This example illustrates the extension of a SKOS Core semantic relation property. To create a property extension, first a new property must be declared:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:owl="http://www.w3.org/2002/07/owl#">
<rdf:Property rdf:about="http://www.example.com/skos-core-extensions#isPhysicalPartOf">
<rdfs:comment>Expresses a physical has-part relationship between two concepts.</rdfs:comment>
<rdfs:subPropertyOf rdf:resource="http://www.w3.org/2004/02/skos/core#broader"/>
<owl:inverseOf rdf:resource="http://www.example.com/skos-core-extensions#hasPhysicalPart"/>
</rdf:Property>
<rdf:Property rdf:about="http://www.example.com/skos-core-extensions#hasPhysicalPart">
<rdfs:comment>Expresses a physical is-part-of relationship between two concepts.</rdfs:comment>
<rdfs:subPropertyOf rdf:resource="http://www.w3.org/2004/02/skos/core#narrower"/>
<owl:inverseOf rdf:resource="http://www.example.com/skos-core-extensions#isPhysicalPartOf"/>
</rdf:Property>
</rdf:RDF>
In fact above a new property pair is declared, being an extension of the
skos:broader/skos:narrower inverse property pair.
These new properties may now be used as in e.g.
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:skos="http://www.w3.org/2004/02/skos/core#"
xmlns:ext="http://www.example.com/skos-core-extensions#">
<skos:Concept rdf:about="http://www.example.com/geography#UK">
<skos:prefLabel>United Kingdom of Great Britain and Northern Ireland</skos:prefLabel>
<ext:isPhysicalPartOf rdf:resource="http://www.example.com/geography#Europe"/>
</skos:Concept>
<skos:Concept rdf:about="http://www.example.com/geography#Europe">
<skos:prefLabel>Europe</skos:prefLabel>
<ext:hasPhysicalPart rdf:resource="http://www.example.com/geography#UK"/>
</skos:Concept>
</rdf:RDF>
From this set of statements it may be inferred that, via RDFS inference:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:skos="http://www.w3.org/2004/02/skos/core#"
xmlns:ext="http://www.example.com/skos-core-extensions#">
<rdf:Description rdf:about="http://www.example.com/geography#UK">
<skos:broader rdf:resource="http://www.example.com/geography#Europe"/>
</rdf:Description>
<rdf:Description rdf:about="http://www.example.com/geography#Europe">
<skos:narrower rdf:resource="http://www.example.com/geography#UK"/>
</rdf:Description>
</rdf:RDF>
Any of the properties of a semantic web vocabulary may be 'extended' in this way.
RDFS classes in an RDF vocabulary may also be 'extended' or 'refined' by defining more specific classes as sub-classes of the former. This provides the same benefits, without any compromise, as property extension.
This example illustrates the use of class extension to represent 'fundamental facets' within a concept scheme. In a concept scheme ordered according to fundamental facets, each fundamental facet contains a homogeneous class of concepts, the members of which share characteristics that distinguish them from members of other classes. So, for example, the Art & Architecture Thesaurus AAT the following fundamental facets:
ASSOCIATED CONCEPTS, PHYSICAL ATTRIBUTES, STYLES AND PERIODS, AGENTS, ACTIVITIES, MATERIALS, OBJECTS
To represent fundamental facets in RDF, declare an extension of
skos:Concept for each facet, for example:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<rdfs:Class rdf:about="http://www.example.com/skos-core-extensions#AssociatedConcept">
<rdfs:subClassOf rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>
</rdfs:Class>
<rdfs:Class rdf:about="http://www.example.com/skos-core-extensions#PhysicalAttributesConcept">
<rdfs:subClassOf rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>
</rdfs:Class>
<rdfs:Class rdf:about="http://www.example.com/skos-core-extensions#StylesAndPeriodsConcept">
<rdfs:subClassOf rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>
</rdfs:Class>
<rdfs:Class rdf:about="http://www.example.com/skos-core-extensions#AgentsConcept">
<rdfs:subClassOf rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>
</rdfs:Class>
<rdfs:Class rdf:about="http://www.example.com/skos-core-extensions#ActivitiesConcept">
<rdfs:subClassOf rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>
</rdfs:Class>
<rdfs:Class rdf:about="http://www.example.com/skos-core-extensions#MaterialsConcept">
<rdfs:subClassOf rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>
</rdfs:Class>
<rdfs:Class rdf:about="http://www.example.com/skos-core-extensions#ObjectsConcept">
<rdfs:subClassOf rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>
</rdfs:Class>
</rdf:RDF>
Each of these new classes can be used to declare concepts, for example:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:ext="http://www.example.com/skos-core-extensions#">
<ext:StylesAndPeriodsConcept rdf:about="http://my.example.org/prehistoric#concept">
<skos:prefLabel>Prehistoric</skos:prefLabel>
<skos:scopeNote>Refers to the period antecedent to the first contemporary written accounts of
a people. The time span for this period varies according to specific local habitation patterns
and in different scholarly disciplines.</skos:scopeNote>
</ext:StylesAndPeriodsConcept>
</rdf:RDF>
To support stronger validation of your faceted concept scheme, you could also use OWL to explicitly declare that a concept may not be a member of more than one fundamental facet, for example:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:owl="http://www.w3.org/2002/07/owl#">
<rdfs:Class rdf:about="http://www.example.com/skos-core-extensions#AssociatedConcept">
<owl:disjointWith rdf:resource="http://www.example.com/skos-core-extensions#PhysicalAttributesConcept"/>
<owl:disjointWith rdf:resource="http://www.example.com/skos-core-extensions#StylesAndPeriodsConcept"/>
<owl:disjointWith rdf:resource="http://www.example.com/skos-core-extensions#AgentsConcept"/>
<owl:disjointWith rdf:resource="http://www.example.com/skos-core-extensions#ActivitiesConcept"/>
<owl:disjointWith rdf:resource="http://www.example.com/skos-core-extensions#MaterialsConcept"/>
<owl:disjointWith rdf:resource="http://www.example.com/skos-core-extensions#ObjectsConcept"/>
</rdfs:Class>
</rdf:RDF>
A similar declaration must be made for each of the concept classes you intend to use as a fundamental facet.
The GEneral Multilingual Environmental Thesaurus (GEMET) is a multilingual thesaurus, publicly available as an XML download GEMET. There is one XML file for each of the 16 languages in which GEMET is available. These XML files share the same markup structure and element names; only the element contents change with the language.
In GEMET, conventional thesaurus entries, with broader and narrower relationships, are supplemented with some additional constructs. For example, terms can be collected into groups, and these groups into super-groups. Futher, terms can be associated with themes, providing another dimension by which terms can be accessed. Because the 'group' 'super-group' and 'theme' constructs are non-standard thesaurus constructs, in order to express theme in RDF a schema extension must be defined for GEMET. Part of the GEMET schema extension is below:
<!DOCTYPE skos [ <!ENTITY skos "http://www.w3.org/2004/02/skos/core#"> ]>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://www.eionet.eu.int/GEMET/skos-ext">
<!-- This is the extension of SKOS-Core for the GEMET Thesaurus -->
<rdfs:Class rdf:ID="SuperGroup">
<rdfs:label>Super Group</rdfs:label>
<rdfs:subClassOf rdf:resource="&skos;TopConcept"/>
</rdfs:Class>
<rdfs:Class rdf:ID="Group">
<rdfs:label>Group</rdfs:label>
<rdfs:subClassOf rdf:resource="&skos;Concept"/>
</rdfs:Class>
<rdfs:Class rdf:ID="Theme">
<rdfs:label>Theme</rdfs:label>
<rdfs:subClassOf rdf:resource="&skos;TopConcept"/>
</rdfs:Class>
<rdf:Property rdf:ID="acronymLabel">
<rdfs:label>acronym label</rdfs:label>
<rdfs:subPropertyOf rdf:resource="&skos;altLabel"/>
</rdf:Property>
<rdf:Property rdf:ID="broaderTheme">
<rdfs:label>broader theme</rdfs:label>
<rdfs:subPropertyOf rdf:resource="&skos;broader"/>
<rdfs:range rdf:resource="#Theme"/>
</rdf:Property>
<rdf:Property rdf:ID="broaderGroup">
<rdfs:label>broader group</rdfs:label>
<rdfs:subPropertyOf rdf:resource="&skos;broader"/>
<rdfs:range rdf:resource="#Group"/>
</rdf:Property>
<rdf:Property rdf:ID="subGroupOf">
<rdfs:label>sub-group of</rdfs:label>
<rdfs:subPropertyOf rdf:resource="&skos;broader"/>
<rdfs:domain rdf:resource="#Group"/>
<rdfs:range rdf:resource="#SuperGroup"/>
</rdf:Property>
</rdf:RDF>
Because GEMET is a multilingual thesaurus, generation of an RDF encoding is done in two parts. The conceptual backbone of GEMET in RDF, containing the concept identifiers is generated. Then the labels for each of the concepts themes and groups were generated, for each language. Thus the common structure does not need to be repeated for each language, but can be reconstructed when the RDF is processed.
An extract from the GEMET conceptual backbone in RDF is as follows:
<rdf:RDF
xmlns:gemet="http://www.eionet.eu.int/GEMET/skos-ext#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:skos="http://www.w3.org/2004/02/skos/core#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xml:base="http://www.eionet.eu.int/GEMET/" >
<rdf:Description rdf:about="c_204">
<skos:inScheme rdf:resource="../GEMET"/>
<rdf:type rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>
<skos:narrower rdf:resource="c_10217"/>
<gemet:broaderTheme rdf:resource="t_23"/>
<skos:broader rdf:resource="c_4648"/>
<gemet:broaderTheme rdf:resource="t_2"/>
</rdf:Description>
<rdf:Description rdf:about="c_11786">
<skos:broader rdf:resource="c_11124"/>
<skos:inScheme rdf:resource="../GEMET"/>
<gemet:broaderTheme rdf:resource="t_4"/>
<rdf:type rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>
</rdf:Description>
<rdf:Description rdf:about="c_7962">
<skos:related rdf:resource="c_7969"/>
<skos:inScheme rdf:resource="../GEMET"/>
<gemet:broaderTheme rdf:resource="t_36"/>
<rdf:type rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>
<skos:narrower rdf:resource="c_7452"/>
<gemet:broaderGroup rdf:resource="g_7956"/>
<skos:related rdf:resource="c_7970"/>
</rdf:Description>
<rdf:Description rdf:about="g_14979">
<gemet:subGroupOf rdf:resource="sg_5499"/>
<rdf:type rdf:resource="skos-ext#Group"/>
<skos:inScheme rdf:resource="../GEMET"/>
</rdf:Description>
<rdf:Description rdf:about="t_34">
<rdf:type rdf:resource="skos-ext#Theme"/>
<skos:inScheme rdf:resource="../GEMET"/>
</rdf:Description>
</rdf:RDF>
Note the use of the GEMET specific properties to capture the GEMET extensions within the same descriptions. This illustrates one of the advantages of using RDF for SKOS; these extensions can be added seemlessly without compromising the syntax or semantics of the underlying SKOS structure.
An extract from the GEMET Portuguese labels in RDF is below:
<rdf:RDF
xmlns:gemet="http://www.eionet.eu.int/GEMET/skos-ext#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:skos="http://www.w3.org/2004/02/skos/core#"
xml:base="http://www.eionet.eu.int/GEMET/" >
<rdf:Description rdf:about="c_204">
<skos:prefLabel xml:lang="pt">paisagens agrícolas</skos:prefLabel>
</rdf:Description>
<rdf:Description rdf:about="c_11786">
<skos:prefLabel xml:lang="pt">índices bióticos</skos:prefLabel>
</rdf:Description>
<rdf:Description rdf:about="c_4657">
<skos:prefLabel xml:lang="pt">ecologia paisagística</skos:prefLabel>
</rdf:Description>
<rdf:Description rdf:about="g_8575">
<skos:prefLabel xml:lang="pt">COMÉRCIO, SERVIÇOS</skos:prefLabel>
</rdf:Description>
<rdf:Description rdf:about="t_29">
<gemet:acronymLabel>REC</gemet:acronymLabel>
<skos:prefLabel xml:lang="pt">turismo</skos:prefLabel>
</rdf:Description>
</rdf:RDF>
The full output of the GEMET transformations is at the following reference GEMET in SKOS.
SKOS is being used within the Semantic Web Environmental Directory (SWED) SWED. The focus is to create a directory of UK based environmental organisations via a web portal, collecting together information on environmental, natural history and community organisations, to support the wider environment related community in the UK. Figure 5 shows the front page of the portal.

The vocabularies used to organize the data into different topic hierarchies are published as a mixture of OWL ontologies and SKOS thesauri. This is illustrated on the frontpage which has a set of facets drawn from the vocabulary, which can be selected to form filters to aid search of data. This illustrates the ability to mix and match different vocabulary schemes and the interface itself illustrates the benefits of using such schemes in enabling browsing.
One of the aims of the work on SKOS with the SWAD-Europe project was to demonstrate how thesauri could be published onto the Semantic Web so that they could be shared and accessed to browse for common terminology, used to catalogue resources, and then used in conjunction with search engines. As a first step, SWAD-Europe developed an API to support the publishing of a machine-readable interface to thesauri across the Web, and the searching and browsing of the concepts within the thesaurus.
This API has been implemented via a Web Service Interface, known as DREFT BecRog05, using the standard mechanisms and formats of SOAP and WSDL, with a demonstrator web service access point over a data store of some sample thesauri. To demonstrate Web Service consumption in a distributed environment, the DREFT client using the web service was developed in a different language than that of the DREFT server, thus enforcing the use of the web service API rather via a "back door" route, such as a language or platform-specific API.
Development of the API has been directed toward clients that do the two most common styles of interaction with KOS data - the browsing and searching of terminological information. Browsing needs navigating up, down and around the concepts (broader and narrower concepts) which means being able to navigate from the starting position of a known concept. Browsing also needs entry points to start from and these can include the top concepts, if indeed the thesaurus has some. Searching requires being able to give some form of free text keyword or regular expression (regex) and get back some matching concepts. Both of these require read-only access to the information, which simplifies the problem considerably.
SKOS has proven a powerful yet simple vehicle for presenting and sharing terminology, which is being used in practice, where it is appropriate use a simpler, flexible approach than the use of OWL; for example, in the Digital Library community, where there is already a pool of expertise in this area.
A sound foundation has been made for SKOS. However, there is still much to do to make this a robust and usab le standard. The SKOS-Core is currently going through a first stage of standardisation within the W3C. The extensions to SKOS-Core for mapping and multilingual thesauri need testing and modifying in the light of practical experience. Further tools for developing, browsing, maintaining, and sharing Thesauri are needed; some of these tools are being developed as contributions to the SKOS Tool Shed SKOS Tool Shed.
One particularly promising area of application is in the support and sharing of "folksonomies" - the collaborative sharing and categorisation of keywords within a particular community to provide a classification of resources which is useful to that community Mathes 05; this community could be within a particular technical specialism for example. SKOS is a promising vehicle for developing such folksonomies, combining the power of the structures of traditional KOS with the flexibility and extensibility of the Semantic Web.
The work on SKOS was supported by the European Commission in the FW5 IST project Semantic Web Advanced Development for Europe, and subsequently within the W3C Semantic Web Best Practices and Deployment Working Group. We thank the teams participating in these activities and also the participants in the public-esw-thes-request@w3.org mailing list, who have contributed to improve SKOS.
Alistair Miles
CCLRC
Brian Matthews
CCLRC
Dave Beckett
ILRT
Dan Brickley
W3C
Michael Wilson
CCLRC
Nikki Rogers
ILRT