Reading the Primer for Simple Knowledge Organisation Systems (SKOS)
As background research for my little project to represent glossaries of terms and acronyms, I have started reading (studying) the primer for the W3C Simple Knowledge Organisation Systems (SKOS). The primer introduces SKOS by saying:
SKOS -- Simple Knowledge Organization System -- provides a model for expressing the basic structure and content of concept schemes such as thesauri, classification schemes, subject heading lists, taxonomies, folksonomies, and other similar types of controlled vocabulary. As an application of the Resource Description Framework (RDF), SKOS allows concepts to be composed and published on the World Wide Web, linked with data on the Web and integrated into other concept schemes.
This document is a user guide for those who would like to represent their concept scheme using SKOS.
In basic SKOS, conceptual resources (concepts) are identified with URIs, labelled with strings in one or more natural languages, documented with various types of note, semantically related to each other in informal hierarchies and association networks, and aggregated into concept schemes.
In advanced SKOS, conceptual resources can be mapped across concept schemes and grouped into labelled or ordered collections. Relationships between concept labels can be specified. Finally, the SKOS vocabulary itself can be extended to suit the needs of particular communities of practice or combined with other modelling vocabularies.
This document is a companion to the SKOS Reference, which gives the normative reference on SKOS.
In W3C terminology, a document is "normative" when it describes features in terms of what is absolutely required, what is optional, and what absolutely must not be done, while a document is "nonnormative" (or merely "descriptive") when it more casually describes or explains or gives examples for features without necessarily giving the absolute requirements and full details.
The primer tells us that:
The Simple Knowledge Organization System (SKOS) is an RDF vocabulary for representing semi-formal knowledge organization systems (KOS), such as thesauri, taxonomies, classification schemes and subject heading lists. Because SKOS is based on the Resource Description Framework (RDF) [RDF-PRIMER] these representations are machine-readable and can be exchanged between software applications and published on the World Wide Web.
SKOS has been designed to provide a low-cost migration path for porting existing organization systems to the Semantic Web. SKOS also provides a lightweight, intuitive conceptual modeling language for developing and sharing new knowledge organization systems (KOSs). It can be used on its own, or in combination with more formal languages like the Web Ontology Language (OWL) [OWL]. SKOS can also be seen as a bridging technology, providing the missing link between the rigorous logical formalism of ontology languages such as OWL and the chaotic, informal and weakly-structured world of Web-based collaboration tools, as exemplified by social tagging applications.
The aim of SKOS is not to replace original conceptual vocabularies in their initial context of use, but to allow them to be ported to a shared space, based on a simplified model, enabling wider re-use and better interoperability.
In SKOS terminology, my little acronym project would be a concept scheme. A glossary is an example of a concept scheme. An individual acronym or term would be a concept in SKOS.
The starting point of SKOS is the concept which can have one or more labels as well as documentary notes. Then you can add semantic relationships between concepts.
Just to get started, here is a simple SKOS concept written in what is called TURTLE notation (not pure XML):
ex:animals rdf:type skos:Concept; skos:prefLabel "animals".
This defines a concept named animals that has a preferred label of "animals." The "ex:" is simply a shorthand notation for referring to a name space where XML/RDF terms are defined.
Extending that concept a little to allow for various natural languages for the same concept:
ex:animals rdf:type skos:Concept; skos:prefLabel "animals"@en; skos:prefLabel "animaux"@fr.
Extending a little more to allow synonyms:
ex:animals rdf:type skos:Concept; skos:prefLabel "animals"@en; skos:altLabel "creatures"@en; skos:prefLabel "animaux"@fr; skos:altLabel "créatures"@fr.
SKOS is also designed to support "near-synonyms", abbreviations, and acronyms. For example:
ex:fao rdf:type skos:Concept; skos:prefLabel "Food and Agriculture Organization"@en; skos:altLabel "FAO"@en.
I am not completely happy with the idea that SKOS does not distinguish between the various forms of alternate labels, and in particular with representing acronyms.
SKOS supports notes for adding documentation, for example:
ex:documentation skos:definition "the process of storing and retrieving information in all fields of knowledge"@en.
A better example of a definition for a concept in SKOS:
ex:pineapples rdf:type skos:Concept; skos:prefLabel "pineapples"@en; skos:prefLabel "ananas"@fr; skos:definition "The fruit of plants of the family Bromeliaceae"@en; skos:definition "Le fruit de la plante herbacée de la famille des broméliacées"@fr.
A simple example of defining a group of concepts as a concept scheme:
ex:animalThesaurus rdf:type skos:ConceptScheme; dc:title "Simple animal thesaurus"; dc:creator ex:antoineIsaac.ex:mammals rdf:type skos:Concept; skos:inScheme ex:animalThesaurus. ex:cows rdf:type skos:Concept; skos:broader ex:mammals; skos:inScheme ex:animalThesaurus. ex:fish rdf:type skos:Concept; skos:inScheme ex:animalThesaurus.
That example also illustrates how a concept such as ex:cows can be defined as being a member of a broader concept such as ex:mammals.