Blank nodes for concepts.

Hi,

A couple of people have picked up that in the examples in the documents [1]
[2] [3] I've encoded concepts as blank nodes, without URIs.  This email
addresses why I chose to do that.

My thinking is as follows.  We allow three methods for uniquely identifying
a concept:

	a.  The URI for the concept.
	b.  A combination of the concept's prefLabel and the URI of the
thesaurus to which it belongs.
	c.  A combination of the concept's externalID and the URI of the
thesaurus to which it belongs.

So, the following are all valid globally unique concept declarations:
----
<soks:Concept rdf:about="http://foo.com/examplethes/aconcept"/>
----
<soks:Concept>
	<soks:prefLabel>Bangers & Mash</soks:prefLabel>
	<rdfs:isDefinedBy rdf:resource="http://foo.com/examplethes"/>
</soks:Concept>
----
<soks:Concept>
	<soks:externalID>A00456</soks:externalID>
	<rdfs:isDefinedBy rdf:resource="http://foo.com/examplethes"/>
</soks:Concept>
----

I'll get to why in a minute.

I also then thought, rather than giving every concept and <rdfs:isDefinedBy>
property to indicate membership of some conceptual scheme, why not allow
people to subclass the <soks:Concept> class?  

So, for example, you could define the class:
----
<rdfs:Class rdf:about="http://foo.com/thesaurus/Concept">
	<rdfs:subClassOf
rdf:resource="http://www.w3c.rl.ac.uk/2003/11/21-skos-core#Concept"/>
	<rdfs:comment>This is the class of all concepts from the foo.com
thesaurus.</rdfs:comment>
</rdfs:Class>
----
Which would then allow globally unique concept declarations such as the
following:
----
<foo:Concept>
	<soks:prefLabel>Bangers & Mash</soks:prefLabel>
</foo:Concept>
----
<foo:Concept>
	<soks:externalID>A00456</soks:externalID>
</foo:Concept>
----

OK, so why bother?  

1.  It makes for better-looking RDF encodings (this is a serious point, as
it may help reduce the uptake hurdle - how many times have you heard people
groan that RDF looks like gobbledegook because of all the URIs?  Also
remember many potential users are from totally non sem-web environments,
e.g. english heritage.  RDF is a new and complicated beast to them.)

2.  It may not be appropriate to give a URI to a concept that is part of
some thesaurus that has been defined by an authority outside the semantic
web world.  So until the authority itself gives its own concepts URIs, we
can still make statements about them using reference-by-description.

On the down side ...

1.  Someone has to write a bit of reasoning code to equate all blank nodes
with the same prefLabel/rdfs:isDefinedBy property values, and run it over
the data before publishing it.

Where I fall on the matter:  in the short term use URIs to identify
concepts, so can work in a world without any reasoning required.  In the
slightly longer term look into allowing the blank-node style encodings, and
support the little bit of reasoning required with some code.

What does everyone think?

Al.


[1] http://www.w3c.rl.ac.uk/SWAD/deliverables/8.1.html
[2] http://www.w3c.rl.ac.uk/SWAD/deliverables/8.3.html
[3] http://www.w3c.rl.ac.uk/SWAD/deliverables/8.4.html

CCLRC - Rutherford Appleton Laboratory
Building R1 Room 1.60
Fermi Avenue
Chilton
Didcot
Oxfordshire OX11 0QX
United Kingdom

Email:        a.j.miles@rl.ac.uk
Telephone: +44 (0)1235 445440

Received on Thursday, 5 February 2004 13:04:07 UTC