SKOS - gchq/LD-Explorer GitHub Wiki
SKOS (Simple Knowledge Organization System) is a W3C standard which defines classes and properties for representing any type of controlled vocabulary (i.e. a thesaurus, or a list of terms that a particular community has agreed to use within a particular domain). By aligning to a shared vocabulary description system like SKOS, vocabulary authors around the world can more easily collaborate with one another and combine vocabulary knowledge.
Labelling the fruits of this collaboration using SKOS also allows the vocabulary to be consumed by computer systems. Use cases for SKOS include semantic search, distributed search and the creation of online lexicons and catalogues (very important tools in deep fields such as medicine, agriculture and applied science).
Example
This example shows a small sample of a larger vocab for describing the concept of "science" represented using some of the SKOS standards:
@prefix : <http://example.com/#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
:science
a skos:Concept ;
skos:prefLabel "Science" ;
skos:narrower :engineering, :geography, :computer_science .
:geography
a skos:Concept ;
skos:prefLabel "Geography" ;
skos:broader :science .
:engineering
a skos:Concept ;
skos:prefLabel "Engineering" ;
skos:broader :science ;
skos:narrower :software_engineering .
:software_engineering
a skos:Concept ;
skos:prefLabel "Software Engineering" ;
skos:altLabel "Software Development", "Application Development" ;
skos:relatedMatch :computer_science ;
skos:broader :engineering .
:computer_science
a skos:Concept ;
skos:prefLabel "Computer Science" ;
skos:relatedMatch :software_engineering ;
skos:broader :science .
As you can see, SKOS is all based around the skos:Concept
class - defined by the spec as a representing a "unit of thought". Within the skos:Concept
class you can use the terms skos:narrower
and skos:broader
to relate concepts as being narrower/broader equivalents to one another. From the above, you can observe that "Software Engineering" is a narrower form of the concept "Engineering", which itself is a narrower form of the concept "Science". The skos:prefLabel
property denotes the preferred label for this concept when spoken aloud (a concept may only have one preferred label, but the vocab may also provide alternative labels using the skos:altLabel
property). Labels can also be localised to particular languages, allowing one vocab to serve multiple nationalities.
SKOS also includes properties for mapping concepts to one another - for example, the vocabulary above asserts that computer science is related to software engineering (using skos:relatedMatch
). SKOS allows you to express this mapping at various levels of loose-ness, such as defining things as being a skos:exactMatch
of each other, or instead saying they are a merely a skos:broadMatch
.
SKOS and OWL
SKOS would appear to have a lot in common with OWL, however SKOS is actually much more specific in its application and focussed purely on providing a standard around defining vocabularies, whereas the scope of OWL is limitless - in fact SKOS is defined by OWL! The SKOS spec identifies a skos:Concept
as being an OWL class (Essentially, OWL is to SKOS what JavaScript is to React):
skos:Concept rdf:typeOf owl:Class
When it comes to mapping, skos:exactMatch
would seem to serve much the purpose as owl:sameAs
- but this is not the case. Whilst both properties identify a particular resource as being an exact match for another, owl:sameAs
explicitly states that the two are completely interchangable during inference whilst the skos:exactMatch
does not. Consider the two resources :software_development
and :software_engineering
:
:software_engineering
a skos:Concept .
skos:prefLabel "Software Engineering" ;
:software_development
a skos:Concept .
skos:prefLabel "Software Development" ;
If we identified these as being owl:sameAs
one another, we could infer the following:
:software_development skos:prefLabel "Software Engineering" ;
:software_engineering skos:prefLabel "Software Development" ;
Meaning that each of the two concepts now has two "preferred labels" - which is not allowed by the SKOS standards. skos:exactMatch
allows us to express that these are the same concept without allowing for this kind of erroneous merging of knowledge to happen.
SKOS in the wild
There have been a number of deployments of SKOS in the wild, perhaps the most famous though is AGROVOC - a open vocab of over 39,000 concepts concerned with agriculture and food. It is currently aligned to 20 other vocabularies.