SKOS, which stands for Simple Knowledge Organization System, is a W3C standard, based on other Semantic Web standards (RDF and OWL), that provides a way to represent controlled vocabularies, taxonomies and thesauri. Specifically, SKOS itself is an OWL ontology and it can be written out in any RDF syntax.
Before we dive into SKOS, what is the difference between Controlled Vocabulary, Taxonomy and Thesaurus?
A controlled vocabulary is a list of terms which a community or organization has agreed upon. For example: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday are the days of the week.
A taxonomy is a controlled vocabulary organized in a hierarchy. For example, we can have the terms Computer, Tablet and Laptop and the concepts Tablet and Laptop are subclasses of Computer because a Tablet and Laptop are types of Computers.
Finally, a thesaurus is a taxonomy with more information about each concept including preferred and alternative terms ("Computer" in English, "Computador" or "Ordenador" in Spanish). Additionally a thesaurus may contain relationships to related concepts. For example, the concepts "Computer" and "Software" have some type of relationship. Most e-commerce websites, if not all, will have a taxonomy/thesaurus to help guide users find what they are looking for.
A Running Example
Quoting from the SKOS Primer,
"The fundamental element of the SKOS vocabulary is the concept. Concepts are the units of thought —ideas, meanings, or (categories of) objects and events—which underlie many knowledge organization systems. As such, concepts exist in the mind as abstract entities which are independent of the terms used to label them."
Concepts are identified by URIs. Let's consider a running example: create a knowledge organization system about electronic products. The top concept is "Computer", which is represented in the following way:
ex:Computer rdf:type skos:Concept.
We can add labels to our concept. There are two types of labels: Preferred Labels (skos:prefLabel) and Alternative Labels (skos:altLabel). Note that a concept can only have one preferred label per language but it can have many alternative labels. Let's now add labels to our example:
ex:Computer rdf:type skos:Concept; skos:prefLabel "Computer"@en; skos:prefLabel "Computador"@es; skos:altLabel "Ordenador"@es.
Now we can start to add semantic relationships. SKOS offers: hierarchical, associative and mapping relationships. The hierarchical relationships are skos:broader and skos:narrower. For example, the concept "Computer" is broader than the concept "Laptop.":
ex:Computer rdf:type skos:Concept; skos:prefLabel "Computer"@en; skos:prefLabel "Computador"@es; skos:altLabel "Ordenador"@es ; skos:broader ex:Laptop.
Likewise, the concept "Laptop" is narrower than the concept "Computer.":
ex:Laptop rdf:type skos:Concept; skos:prefLabel "Laptop"@en; skos:prefLabel "Portatil"@es; skos:narrower ex:Computer.
SKOS has one associative relationship, skos:related, which is used to assert a relationship between two concepts. For example, the concept "Computer" is related to the concept "Software":
ex:Computer rdf:type skos:Concept; skos:prefLabel "Computer"@en; skos:prefLabel "Computador"@es; skos:altLabel "Ordenador"@es ; skos:broader ex:Laptop ; skos:related ex:Software .
SKOS has two mapping relationships, skos:closeMatch and skos:exactMatch, which allows us to represent a mapping between different concepts. The skos:closeMatch indicates that two concepts are sufficiently similar and both concepts may be used interchangeably, however, it is not transitive. For example, assume we have a "Netbook" concept:
ex:Netbook rdf:type skos:Concept; skos:prefLabel "Netbook"@en; skos:narrower ex:Computer.
We can say that the concept "Laptop" is closely related to the concept "Netbook". We would now have the following:
ex:Laptop rdf:type skos:Concept; skos:prefLabel "Laptop"@en; skos:prefLabel "Portatil"@es; skos:narrower ex:Computer ; skos:closeMatch ex:Netbook.
Finally, the skos:exactMatch denotes a higher degree of similarity, namely, both concepts have the same meaning. This relationship is transitive. For example, assume the concept "Laptop" exists in another SKOS thesaurus identified by ex2:Portatil and we want to link to it:
ex:Laptop rdf:type skos:Concept; skos:prefLabel "Laptop"@en; skos:prefLabel "Portatil"@es; skos:narrower ex:Computer ; skos:closeMatch ex:Netbook ; skos:exactMatch ex2:Portatil.
SKOS vs OWL
Just to clarify, OWL is an ontology language while SKOS is an ontology, created in OWL, for creating controlled vocabularies, taxonomies and thesauri. Nevertheless, SKOS thesaurus can be combined with OWL ontologies, or even converted to OWL. There may be a lot of confusion if SKOS and OWL is combined. For example, why is skos:exactMatch used instead of owl:sameAs? This may get a bit philosophical, however, the SKOS Primer addresses these issues very well.
If you are intrigued about SKOS, you may be asking yourself, who is using SKOS? Let me just name a few. Recently, the ACM published the new version of its Computing Classification System in SKOS. The STW Thesaurus for Economics is a thesaurus in SKOS that provides a vocabulary on any economic subject with more than 6,000 standardized subject headings and 190,000 entry terms. The Library of Congress offers all of their vocabularies as SKOS. The New York Times subject headings are also available as SKOS. The Food and Agriculture Organization of the United Nations (FAO) provides a SKOS version of AGROVOC, a thesaurus containing more than 40,000 concepts in 22 languages. The topics include agriculture, environment, fisheries, forestry food and other related areas. Now, if you are interested in working with SKOS, any RDF tool can be used. Nevertheless, there are SKOS specific tools such as: Semantic Web Company's PoolParty, TopQuadrant's Enterprise Vocabulary Net and Protege's SKOSed plug-in.
About the Author
Juan Sequeda is a Ph.D student at the University of Texas at Austin and a NSF Graduate Research Fellow. His research is in the intersection of Semantic Web and Relational Databases. He co-created the Consuming Linked Data Workshop series and regularly gives talks at academic and industry semantic web conferences. Juan is an Invited Expert on the W3C RDB2RDF Working Group and an editor of the “Direct Mapping of Relational Data to RDF” specification. Juan is also the founder of a new startup, Capsenta, which is a spin-off from his research.