SKOS primer section 3.3 and DCAM VocabularyEncodingScheme

The SKOS primer, section 3.3 Subject Indexing and SKOS, points out that one can look to Dublin Core to dct:subject as a means to relate a resource to a SKOS concept.  I'm trying to reconcile this section with dct:subject and the DCAM notion of vocabulary encoding schemes, e.g., dcam:VocabularyEncodingScheme.  While the RDF definition for dct:subject doesn't include any formal domain or range dct:subject works in conjunction with dct:DDC, dct:MESH, etc.  One can say in DCAM:

<dct:subject>
  <dct:DDC>
    <rdf:value>123.4</rdf:value>
  </dct:DDC>
</dct:subject>

dct:DDC in DCAM is specified as:

  dct:DDC a dcam:VocabularyEncodingScheme .

and dcam:VocabularyEncodingScheme is specified as:

  dcam:VocabularyEncodingScheme a rdfs:Class .

Further DCAM specifies dcam:memeberOf similar to skos:inScheme where it represents a relationship between a resource and a vocabulary encoding scheme.

I am trying to be true to the spirit of dct:subject, DCAM's dcam:VocabularyEncodingScheme and dcam:memberOf, and it seems to me that dct:subject should have a range of dcam:VocabularyEncodingScheme even though DCMI doesn't specify a range for dct:subject and dcam:memberOf should have a range dcam:VocabularyEncodingScheme even though DCMI doesn't specify a range for dcam:memberOf.

What I would like to do is to use dct:subject with a URI to my SKOS concepts.  Due to the missing range on dct:subject I can do this without issue, but it seems like it's breaking the spirit of DCAM's vocabulary encoding schemes.  In order to reconcile this issue I'm looking at doing the following in my SKOS:

@prefix dcam: <http://purl.org/dc/dcam/> .
@prefix dct:  <http://purl.org/dc/terms/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/>
@prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .

@base <http://dewey.info/> .

<scheme/ddc22> a skos:ConceptScheme ;
  rdfs:subClassOf dcam:VocabularyEncodingScheme .

<class/123.4> a skos:Concept ;
  skos:inScheme <scheme/ddc22> ;
  dcam:memberOf <scheme/ddc22> .

@base <http://example.org/> .

<resource/1> a foaf:Document ;
  dct:subject <class/123.4> .

Basically, a skos:ConceptScheme becomes a subclass of dcam:VocabularyEncodingScheme and each skos:Concept becomes a dcam:memberOf the skos:ConceptScheme.  Now I don't feel like I'm breaking the spirit of DCAM or SKOS, but allowing them to work together.

I would like some feedback about adding these properties to my SKOS descriptions and whether making a skos:ConceptScheme a subclass of dcam:VocabularyEncodingScheme causes any issues for SKOS.


Thanks, Andy.

Received on Monday, 18 January 2010 23:41:52 UTC