SkosCoreGuideToc/SectionExtending/SemanticRelations

From W3C Wiki

Extended Semantic Relation Properties

SKOS Core has three built-in properties for expressing relationships between concepts: skos:broader, skos:narrower and skos:related.

You may, however, require a richer set of properties for expressing relationships between concepts.

For example, you might want to express the fact one concept represents something that is a part of another concept. This is also known as a partitive relationship.

To do this, define two new properties, 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#">
  
  <rdf:Property rdf:about="http://my.example.org/knowledgebase/schema#isPartOf">
    <rdfs:comment>Expresses a partitive relationship between two concepts.</rdfs:comment>
    <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2004/02/skos/core#broader"/>
    <owl:inverseOf rdf:resource="http://my.example.org/knowledgebase/schema#hasPart"/>
  </rdf:Property>

  <rdf:Property rdf:about="http://my.example.org/knowledgebase/schema#hasPart">
    <rdfs:comment>Expresses a partitive relationship between two concepts.</rdfs:comment>
    <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2004/02/skos/core#narrower"/>
    <owl:inverseOf rdf:resource="http://my.example.org/knowledgebase/schema#isPartOf"/>
  </rdf:Property>

</rdf:RDF>


Note that these two properties have been declared as each other's inverse via a statement using the owl:inverseOf property.

Note also that these two properties extend skos:broader and skos:narrower respectively. This means that partitive relationships between concepts will be rendered as part of the concept hierarchy by generic SKOS applications. An alternative would be to extend skos:related instead, in which case the partitive relationship would be rendered alongside other associative relationships by generic SKOS applications.

Whether you choose to extend skos:broader, skos:narrower or skos:related will depend on how you want these relationships to be handled by generic SKOS applications.

These two properties can now be used as in e.g.:


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

  <skos:Concept rdf:about="http://my.example.org/knowledgebase/geography#UK">
    <skos:prefLabel>United Kingdom of Great Britain and Northern Ireland</skos:prefLabel>
    <my:isPartOf rdf:resource="http://my.example.org/knowledgebase/geography#Europe"/>
  </skos:Concept>
  
  <skos:Concept rdf:about="http://my.example.org/knowledgebase/geography#Europe">
    <skos:prefLabel>Europe</skos:prefLabel>
    <my:hasPart rdf:resource="http://my.example.org/knowledgebase/geography#UK"/>
  </skos:Concept>

</rdf:RDF>


N.B. the SKOS Extensions RDF vocabulary [ref] has a set of standard semantic relation property extensions, such as 'broader-instantive' 'broader-generic' and 'broader-partitive'.