SkosDev/GuideToControlledVocabs

From W3C Wiki

Guide to Publishing Controlled Vocabularies on the Semantic Web

Introduction

  • df. controlled vocabs
  • ref to glossaries
  • intent and scope

Step 1: Allocate URIs

In a controlled vocabulary, each descriptor represents a concept.

Different controlled vocabularies may use the same descriptor to represent different concepts, and while this is not a problem where controlled vocabularies are used in isolation, this is a problem in any context where more than one controlled vocabulary may be in use.

The Semantic Web is a global environment, and any controlled vocabulary intended for use by semantic web applications must assume a global context. In a global context it is not practical to use descriptors to refer to concepts, because of the likelihood of term collisions.

Therefore, in order to be useful within semantic web applications, a controlled vocabulary must support some mechanism for uniquely identifying its concepts within a global context. The URI (Uniform Resource Identifier) is a single global identification system, and is ideal for this purpose.

URIs can be used either directly or indirectly to identify concepts from a controlled vocabulary.

Direct identification means allocating URIs directly to concepts [see also URI Allocation]. For example, I might decide to allocate the URI <http://www.example.com/concepts#bananas> to a concept with descriptor 'bananas' and definition 'A long curved fruit with a yellow skin and soft, sweet white flesh inside'.

A concept may also be identified indirectly, via the URI of some other resource associated with the concept. For example, you could publish a document on the web that describes the meaning of a concept, and use the URI of that document to indirectly identify the concept (this is the 'published subjects' approach).

Most of the examples in this document use concepts which have been directly allocated URIs. However, both the direct and indirect approaches are valid, and it is beyond the scope of this document to recommend one above the other.

Whether you choose the direct or the indirect approach, a number of principles of good practise should be applied to ensure consistent use of the URIs you decide to allocate. They are presented here as bullet points, with links to resources that explain these principles more fully:

  • URIs identify a single resource [ref AWWW]
  • Avoid URI aliases [AWWW]
  • Ensure persistence of URIs [VM]
  • Manage & maintain URIs [VM]

Step 2: Create an RDF Description

The Semantic Web means publishing information in a machine readable form. The Resource Description Framework ...

Simple Term Lists

For a controlled vocabulary that is a simple list of terms ...


[e.g.
made up
]
turtles
tortoises
salamanders   


An example RDF description of this term list ...


<rdf:RDF @@NS>

  <skos:Concept rdf:about="http://www.example.com/concepts#turtles">
    <rdfs:label>turtles</rdfs:label>
    <skos:inScheme rdf:resource="http://www.example.com/concepts"/>
  </skos:Concept>

  <skos:Concept rdf:about="http://www.example.com/concepts#tortoises">
    <rdfs:label>tortoises</rdfs:label>
    <skos:inScheme rdf:resource="http://www.example.com/concepts"/>
  </skos:Concept>

  <skos:Concept rdf:about="http://www.example.com/concepts#salamanders">
    <rdfs:label>salamanders</rdfs:label>
    <skos:inScheme rdf:resource="http://www.example.com/concepts"/>
  </skos:Concept>

</rdf:RDF>


Terms with Definitions (Glossaries)

For glossaries, essentially list of terms with definitions, e.g. ...


grep from W3C gloss


An RDF description of this term list ...


<rdf:RDF @@NS>

@@TODO

  <skos:Concept rdf:about="">
    <rdfs:label></rdfs:label>
    <skos:definition></skos:definition>
  </skos:Concept>

  <skos:Concept rdf:about="">
    <rdfs:label></rdfs:label>
    <skos:definition></skos:definition>
  </skos:Concept>

  <skos:Concept rdf:about="">
    <rdfs:label></rdfs:label>
    <skos:definition></skos:definition>
  </skos:Concept>

</rdf:RDF>


Vocabularies with Non-Preferred Terms

For vocab with non-preferred terms, e.g.


ex with UF & USE


RDF description of this ...


<rdf:RDF @@NS>

@@TODO

  <skos:Concept rdf:about="">
    <skos:prefLabel></skos:prefLabel>
    <skos:altLabel></skos:altLabel>
    <skos:altLabel></skos:altLabel>
    <skos:altLabel></skos:altLabel>
  </skos:Concept>

  <skos:Concept rdf:about="">
    <skos:prefLabel></skos:prefLabel>
    <skos:altLabel></skos:altLabel>
    <skos:altLabel></skos:altLabel>
    <skos:altLabel></skos:altLabel>
  </skos:Concept>

  <skos:Concept rdf:about="">
    <skos:prefLabel></skos:prefLabel>
    <skos:altLabel></skos:altLabel>
    <skos:altLabel></skos:altLabel>
    <skos:altLabel></skos:altLabel>
  </skos:Concept>

</rdf:RDF>


Structured Vocabularies: Hierarchies

Hierarchical term lists e.g. ...


ex some hierarchy


<rdf:RDF @@NS>

@@TODO

  <skos:Concept rdf:about="">
    <rdfs:label></rdfs:label>
    <skos:narrower rdf:resource=""/>
  </skos:Concept>

  <skos:Concept rdf:about="">
    <rdfs:label></rdfs:label>
    <skos:narrower rdf:resource=""/>
    <skos:broader rdf:resource=""/>
  </skos:Concept>

  <skos:Concept rdf:about="">
    <rdfs:label></rdfs:label>
    <skos:broader rdf:resource=""/>
  </skos:Concept>

</rdf:RDF>


Structured Vocabularies: Associative Relationships

Associated relationships ...


ex RT


RDF description


<rdf:RDF @@NS>

@@TODO

  <skos:Concept rdf:about="">
    <rdfs:label></rdfs:label>
    <skos:related rdf:resource=""/>
  </skos:Concept>

  <skos:Concept rdf:about="">
    <rdfs:label></rdfs:label>
    <skos:related rdf:resource=""/>
  </skos:Concept>

</rdf:RDF>


Thesauri

Combine structure & non preferred terms, e.g.


ex full tehsauri example, USE UF BT NT RT


RDF description ...


<rdf:RDF @@NS>

@@TODO

  <skos:Concept rdf:about="">
    <skos:prefLabel></skos:prefLabel>
    <skos:altLabel></skos:altLabel>
    <skos:altLabel></skos:altLabel>
    <skos:altLabel></skos:altLabel>
    <skos:narrower rdf:resource=""/>
    <skos:related rdf:resource=""/>
  </skos:Concept>

  <skos:Concept rdf:about="">
    <skos:prefLabel></skos:prefLabel>
    <skos:altLabel></skos:altLabel>
    <skos:altLabel></skos:altLabel>
    <skos:altLabel></skos:altLabel>
    <skos:narrower rdf:resource=""/>
    <skos:broader rdf:resource=""/>
    <skos:related rdf:resource=""/>
  </skos:Concept>

  <skos:Concept rdf:about="">
    <skos:prefLabel></skos:prefLabel>
    <skos:altLabel></skos:altLabel>
    <skos:altLabel></skos:altLabel>
    <skos:altLabel></skos:altLabel>
    <skos:broader rdf:resource=""/>
    <skos:related rdf:resource=""/>
  </skos:Concept>

</rdf:RDF>


Thesauri with Node Labels and/or Guide Terms

Node labels ...


e.g.
unordered


RDF description ...


<rdf:RDF @@NS>

@@TODO

  <skos:Concept rdf:about="">
    <rdfs:label></rdfs:label>
    <skos:narrower>
      <skos:Collection>
        <rdfs:label></rdfs:label>
        <skos:member rdf:resource=""/>
        <skos:member rdf:resource=""/>
        <skos:member rdf:resource=""/>
      </skos:Collection>
    </skos:narrower>
  </skos:Concept>

  <skos:Concept rdf:about="">
    <rdfs:label></rdfs:label>
    <skos:broader rdf:resource=""/>
  </skos:Concept>

  <skos:Concept rdf:about="">
    <rdfs:label></rdfs:label>
    <skos:broader rdf:resource=""/>
  </skos:Concept>

  <skos:Concept rdf:about="">
    <rdfs:label></rdfs:label>
    <skos:broader rdf:resource=""/>
  </skos:Concept>

</rdf:RDF>


Node labels where order is importatn ...


e.g. node labels ordered ...


RDF description ...


<rdf:RDF @@NS>

@@TODO

  <skos:Concept rdf:about="">
    <rdfs:label></rdfs:label>
    <skos:narrower>
      <skos:Collection>
        <rdfs:label></rdfs:label>
        <skos:memberList rdf:parseType="Collection">
          <skos:Concept rdf:about=""/>
          <skos:Concept rdf:about=""/>
          <skos:Concept rdf:about=""/>
        </skos:memberList>
      </skos:Collection>
    </skos:narrower>
  </skos:Concept>

  <skos:Concept rdf:about="">
    <rdfs:label></rdfs:label>
    <skos:broader rdf:resource=""/>
  </skos:Concept>

  <skos:Concept rdf:about="">
    <rdfs:label></rdfs:label>
    <skos:broader rdf:resource=""/>
  </skos:Concept>

  <skos:Concept rdf:about="">
    <rdfs:label></rdfs:label>
    <skos:broader rdf:resource=""/>
  </skos:Concept>

</rdf:RDF>


Guide terms choose on case basis whether to handle as node labels, or whether to regard each one as standing for concept.

Multilingual Vocabularies

Multilingual equivalents, can use multilingual labelling approach ...


e.g. list with equivalents


RDF Description ...


<rdf:RDF @@NS>

  <skos:Concept rdf:about="">
    <rdfs:label xml:lang="en"></rdfs:label>
    <rdfs:label xml:lang=""></rdfs:label>
  </skos:Concept>

  <skos:Concept rdf:about="">
    <rdfs:label xml:lang="en"></rdfs:label>
    <rdfs:label xml:lang=""></rdfs:label>
  </skos:Concept>

  <skos:Concept rdf:about="">
    <rdfs:label xml:lang="en"></rdfs:label>
    <rdfs:label xml:lang=""></rdfs:label>
  </skos:Concept>

</rdf:RDF>


Multilingual thesauri ...


e.g. thesaurus with eqs


RDF decription


<rdf:RDF @@NS>

  <skos:Concept rdf:about="">
    <skos:prefLabel xml:lang=""></skos:prefLabel>
    <skos:altLabel xml:lang=""></skos:altLabel>
    <skos:prefLabel xml:lang=""></skos:prefLabel>
    <skos:altLabel xml:lang=""></skos:altLabel>
  </skos:Concept>

  <skos:Concept rdf:about="">
    <skos:prefLabel xml:lang=""></skos:prefLabel>
    <skos:altLabel xml:lang=""></skos:altLabel>
    <skos:prefLabel xml:lang=""></skos:prefLabel>
    <skos:altLabel xml:lang=""></skos:altLabel>
  </skos:Concept>

  <skos:Concept rdf:about="">
    <skos:prefLabel xml:lang=""></skos:prefLabel>
    <skos:altLabel xml:lang=""></skos:altLabel>
    <skos:prefLabel xml:lang=""></skos:prefLabel>
    <skos:altLabel xml:lang=""></skos:altLabel>
  </skos:Concept>

</rdf:RDF>