Vocabularies in iSamples

Vocabularies in iSamples are used to provide discrete groups for categorizing physical sample records.

A vocabulary in iSamples is composed of a number of concepts arranged in a hierarchy with a top level broad concept and progressively narrower concepts (e.g. Figure 1). Concepts and the relationships between them are defined using the Simple Knowledge Organization System (SKOS) common data model.

Figure 1: Two concepts in a vocabulary with an statement that thing is a broader concept than liquid

A vocabulary as used in iSamples is an RDF graph composed of one instance of skos:ConceptScheme1 and one or more instances of skos:Concept.

  • 1 Herein “skos” is a namespace name that refers to http://www.w3.org/2004/02/skos/core#

  • 2 The containing vocabulary may be inferred by traversing semantic relations such as skos:broader to find a semantically related concept that includes skos:inScheme or skos:topConceptOf, but including skos:inScheme with each concept provides a more explicit construct for consumers and simplifies processing.

  • The top level (i.e. broadest definition) skos:Concept must include a skos:topConceptOf predicate, the object of which is the vocabulary skos:ConceptScheme instance. If a skos:Concept does not include a skos:topConceptOf predicate, then it must contain a skos:inScheme predicate that refers to the skos:ConceptScheme instance.2

    A skos:Concept instance that does not include a skos:topConceptOf predicate must include a skos:broader predicate, the object of which is an instance of skos:Concept with a broader definition.

    Each skos:Concept instance must include a skos:prefLabel and should include a skos:definition that provides a clear textual description of the concept.3

  • 3 Only one skos:prefLabel and one skos:definition per language is permitted.

  • The following is a simple vocabulary that defines two concepts (for structural reference only). The thing concept is the broadest concept as indicated by the skos:topConceptOf property, and the liquid concept is a narrower definition of thing, as indicated by the skos:broader property with thing as the object. The concepts are contained within the vocabulary with URI https://example.net/my/minimal/vocab as indicated by the skos:topConceptOf and skos:inScheme references by the concepts. A graph representation of the vocabulary is shown in Figure 2.

    @prefix owl: <http://www.w3.org/2002/07/owl#> .
    @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
    @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
    @prefix eg: <https://example.net/my/minimal/> .
    
    eg:vocab
        rdf:type skos:ConceptScheme ;
        owl:imports <http://www.w3.org/2004/02/skos/core> ;
        skos:prefLabel "Minimal Example Vocabulary"@en ;
        skos:definition "This is an example of a minimal iSamples vocabulary."@en ;
        skos:historyNote "2023-07-01 DV Created for structural reference."@en ;
        skos:historyNote "2023-07-26 DV Adjusted descriptions."@en ;
    .
    
    eg:thing
        rdf:type skos:Concept ;
        skos:topConceptOf eg:vocab ;
        skos:prefLabel "Thing"@en ;
        skos:definition "Any physical thing. \nThis concept is for demonstration purposes only."@en ;
        skos:historyNote "2023-07-26 DV Added explanatory notes." ;
    .
    
    eg:solid
        rdf:type skos:Concept ;
        skos:inScheme eg:vocab ;
        skos:broader eg:thing ;
        skos:prefLabel "Solid"@en ;
        skos:definition "A thing that was considered solid at the time of observation. \nThis concept is for demonstration purposes only."@en ;
        skos:historyNote "2023-07-26 DV Added explanatory notes." ;
    .
    
    Figure 2: A minimal vocabulary that defines two concepts “thing” and “living_thing” within the vocabulary <https://example.net/my/minimal/vocabulary>.

    Extending a Vocabulary

    A vocabulary extension is used to augment an existing vocabulary, typically by adding more narrowly construed concepts (“narrower terms”).

    In iSamples, a vocabulary extension is a vocabulary where the skos:ConceptScheme instance includes a skos:inScheme predicate that refers to the skos:ConceptScheme of the vocabulary being extended. This is used programmatically to identify the vocabulary being extended and to help ensure that skos:Concept instances directly or indirectly extend the base vocabulary.

    An extension vocabulary must include one or more instances of skos:Concept. Each instance must have a skos:broader predicate. Following a path of skos:broader properties must lead to a skos:Concept that is a skos:topConceptOf the base vocabulary directly or indirectly referred to by the skos:inScheme property of the skos:ConceptScheme instance of the extension vocabulary. A graph rendering of the extension is shown in Figure 3.

    @prefix owl: <http://www.w3.org/2002/07/owl#> .
    @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
    @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
    @prefix eg: <https://example.net/my/minimal/> .
    @prefix ext: <https://example.net/my/extension/> .
    
    ext:vocab
        rdf:type skos:ConceptScheme ;
        skos:prefLabel "Simple Vocabulary Extension"@en ;
        skos:inScheme eg:vocab ;
    .    
    
    ext:liquid 
        rdf:type skos:Concept ;
        skos:prefLabel "liquid"@en ;
        skos:definition "A thing that was considered to be of a liquid state at the time of observation"@en ;
        skos:inScheme ext:vocab ;
        skos:broader eg:thing ;
    .
    Figure 3: An extension vocabulary that extends <https://example.net/my/minimal/vocabulary> with a single concept.

    The entire vocabulary is interpreted by loading the extension and referenced vocabularies into the RDF processing environment. The combined minimal vocabulary and it’s extension is shown in Figure 4.

    Figure 4: A rendering of the base vocabulary and an extension illustrating the entire vocabulary graph.

    Other Semantic Relations

    In many cases it is desireable to cross reference vocabulary concepts with concepts defined elsewhere. There are several skos predicates describing semantic and mapping relations that can be helpful for describing the relationships between terms and vocabularies. These include:

    • skos:narrower
    • skos:related
    • skos:broaderTransitive
    • skos:narrowerTransitive
    • skos:closeMatch
    • skos:exactMatch
    • skos:broadMatch
    • skos:narrowMatch
    • skos:relatedMatch

    Additional Vocabulary and Concept Metadata

    Additional properties may be associated with the vocabulary or any of their defined concepts to provide metadata apart from the structural or semantic aspects of the graph.

    The skos:historyNote property is used to add human readable notes concerning revision history. A skos:historyNote entry should follow a convention of ISO-Date Initials Note, for example:

    eg:vocab
        rdf:type skos:ConceptScheme ;
        owl:imports <http://www.w3.org/2004/02/skos/core> ;
        skos:prefLabel "Minimal Example Vocabulary"@en ;
        skos:definition "This is an example of a minimal iSamples vocabulary."@en ;
        skos:historyNote "2023-07-15 DAV Created this example vocabulary."@en ;
    .

    Informational note properties for skos include:

    • skos:note
    • skos:changeNote
    • skos:definition
    • skos:editorialNote
    • skos:example
    • skos:historyNote
    • skos:scopeNote

    Authorship information may also be provided using a property such as dct:creator or dct:contributor to directly (within the vocabulary document) or indirectly (by URI reference to an RDF resource) reference a record of type foaf:Person, prov:Person or owl:NamedIndividual:

    eg:vocab
        rdf:type skos:ConceptScheme ;
        owl:imports <http://www.w3.org/2004/02/skos/core> ;
        skos:prefLabel "Minimal Example Vocabulary"@en ;
        skos:definition "This is an example of a minimal iSamples vocabulary."@en ;
        skos:historyNote "2023-07-15 DAV Created this example vocabulary."@en ;
        dct:creator <https://orcid.org/0000-0002-6513-4996> ;
    .