SkosCoreGuideToc/SectionExtending/ConceptTypes

From W3C Wiki

Extended Concept Types

This section describes how to extend the skos:Concept class to create more specific classes of concept.

An example of an extension of skos:Concept is below:


<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">

  <rdfs:Class rdf:about="http://my.example.org/knowledgebase/schema#BiologicalConcept">
    <rdfs:comment>A concept from the domain of biology.</rdfs:comment>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>
  </rdfs:Class>

</rdf:RDF>


Once this new class has been declared, it can be used as in:


<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xmlns:my="http://my.example.org/knowledgebase/schema#">

  <my:BiologicalConcept rdf:about="http://my.example.org/knowledgebase/biology#evolution">
    <skos:prefLabel>Evolution</skos:prefLabel>
    <skos:scopeNote>Refers to Darwin's theory of evolution by natural selection of inherited characteristics.</skos:scopeNote>
  </my:BiologicalConcept>

</rdf:RDF>


I.e. you can use the new class my:[[BiologicalConcept]] exactly as you would normally use skos:Concept.

Representing Fundamental Facets

An important use case for this type of extension is in the representation of fundamental facets within a concept scheme.

In a concept scheme ordered according to fundamental facets, each fundamental facet contains a homogeneous class of concepts, the members of which share characteristics that distinguish them from members of other classes [ref AAT].

So, for example, the Art & Architecture Thesaurus [ref] declares the following fundamental facets:


ASSOCIATED CONCEPTS
PHYSICAL ATTRIBUTES
STYLES AND PERIODS
AGENTS
ACTIVITIES
MATERIALS
OBJECTS


To represent fundamental facets in RDF, declare an extension of skos:Concept for each facet, for example:


<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
  
  <rdfs:Class rdf:about="http://my.example.org/knowledgebase/schema#AssociatedConcept">
    <rdfs:comment>???</rdfs:comment>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>
  </rdfs:Class>

  <rdfs:Class rdf:about="http://my.example.org/knowledgebase/schema#PhysicalAttributesConcept">
    <rdfs:comment>???</rdfs:comment>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>
  </rdfs:Class>

  <rdfs:Class rdf:about="http://my.example.org/knowledgebase/schema#StylesAndPeriodsConcept">
    <rdfs:comment>???</rdfs:comment>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>
  </rdfs:Class>

  <rdfs:Class rdf:about="http://my.example.org/knowledgebase/schema#AgentsConcept">
    <rdfs:comment>???</rdfs:comment>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>
  </rdfs:Class>

  <rdfs:Class rdf:about="http://my.example.org/knowledgebase/schema#ActivitiesConcept">
    <rdfs:comment>???</rdfs:comment>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>
  </rdfs:Class>

  <rdfs:Class rdf:about="http://my.example.org/knowledgebase/schema#MaterialsConcept">
    <rdfs:comment>???</rdfs:comment>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>
  </rdfs:Class>

  <rdfs:Class rdf:about="http://my.example.org/knowledgebase/schema#ObjectsConcept">
    <rdfs:comment>???</rdfs:comment>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>
  </rdfs:Class>

</rdf:RDF>


Each of these new classes can be used to declare concepts, for example:


<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xmlns:my="http://my.example.org/knowledgebase/schema#">

  <my:StylesAndPeriodsConcept rdf:about="http://my.example.org/knowledgebase/concept#prehistoric">
    <skos:prefLabel>Prehistoric</skos:prefLabel>
    <skos:scopeNote>Refers to the period antecedent to the first contemporary written accounts of a people. The time span for this period varies according to specific local habitation patterns and in different scholarly disciplines.</skos:scopeNote>
  </my:StylesAndPeriodsConcept>

</rdf:RDF>


To support validation of your faceted concept scheme, you can use OWL to explicitly declare that a concept may not be a member of more than one fundamental facet, for example:


<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xmlns:owl="http://www.w3.org/2002/07/owl#">
  
  <rdfs:Class rdf:about="http://my.example.org/knowledgebase/schema#AssociatedConcept">
    <owl:disjointWith rdf:resource="http://my.example.org/knowledgebase/schema#PhysicalAttributesConcept"/>
    <owl:disjointWith rdf:resource="http://my.example.org/knowledgebase/schema#StylesAndPeriodsConcept"/>
    <owl:disjointWith rdf:resource="http://my.example.org/knowledgebase/schema#AgentsConcept"/>
    <owl:disjointWith rdf:resource="http://my.example.org/knowledgebase/schema#ActivitiesConcept"/>
    <owl:disjointWith rdf:resource="http://my.example.org/knowledgebase/schema#MaterialsConcept"/>
    <owl:disjointWith rdf:resource="http://my.example.org/knowledgebase/schema#ObjectsConcept"/>
  </rdfs:Class>

</rdf:RDF>


Obviously a similar declaration must be made for each of the concept classes you intend to use as a fundamental facet.