Hi,
This message actually deserved a bit more followup... I think that
what you have stated is "right on", and so this is basically a note of
agreement, with some further suggestions.
> [...] it would be perfectly possible (it seems to me!) to
> redirect the three _separate_ DC namespace URIs to
> a _single_ "RDF schema" file.
That's correct, but there is a utility in grouping definitions of
related terms into one schema, because people expect that, and because
it then becomes easier to add that particular sub-schema to a
datastore as necessary. Consider if years of Dublin Core terms were
mushed together into a huge file. This file would probably run into
MBs of data, especially if XML RDF were used, and that's no good to
someone who is just trying to look up a simple definition for
"dc:title" or whatever. Yes, RDF Schemas are meant for machines, but
documentation oriented RDF Schemata are actually pretty useful to
humans too, and network bandwidth is still a problem - no one wants to
sit about waiting for a 5MB file to download just to check one term.
> i.e. there is no necessary one-to-one relationship between
> a namespace and an RDF schema [...] It is simply a convention
> which has been adopted to manage the current RDF schema
> files, albeit a useful one.
Exactly, and extending that functionality over to RDFDB output would
probably be just as useful.
> e.g. because the URI for a term begins with the string
> "http://purl.org/dc/elements/1.1", then it is a member of the
> DC simple "vocabulary".
>
> This may be OK, but I think we do need to make this
> explicit somewhere.
It may be O.K., and there are terms on the Semantic Web that will
enable you to make this explicit already, but... I'm not too happy
with the approach. I lean towards disassociating prefixes with sets of
terms in a "vocabulary", because it brings up a huge SW maintainence
problem. I've come across code in the SWAP stuff [1] that actually
attempts to retrieve schemata, check that terms are defined in them,
and throw up an error if not. I have also tried to implement similar
RDF Schema "validation" mechanisms, by defining vocabularies as a
finite set of terms, and so on. I've found that I'd prefer keeping
URIs opaque, because I believe that people will become dependent on
sniffing "namespace prefixes", when they're just an illusion.
It's second guessing, and the Semantic Web is about first class data,
not guessing.
> Actually, just as an aside, I'm not sure we all agree on
> what the "vocabularies" are!
I'm planning to start work on a set of vocabularies soon, and I plan
to make sure that all of the terms (no matter how unrelated) share the
same common "prefix". I am going to investigate ways of grouping the
terms together, but as you concluded above, it probably isn't
necessary to do so. It just eases the load on the poor humans that
have to remember the terms and their relationships... but I don't
think it's all that difficult. Aaron Swarz has been collecting vaguely
related terms under http://logicerror.com/ for ages now, and no one
has found a problem with that.
> One way of dong this would be to create explicit RDFS-based
> descriptions/definitions of the DC "vocabularies" as separate
> resources, so that we can then make explicit statements about
> them - without relying on drawing conclusions from the strings
> which make up URIs.
Tht's a fair suggestion. I like the idea of using RDDL to group sets
of vocabularies together, 'though: at the "end of the namespace". I
know that you wanted to avoid that particular discussion... but it
does seem to be part and parcel of the whole debate. For example,
let's say that Dublin Core wanted to define two new "vocabularies",
one for describing parts of cars, and another for describing places.
Let's say that they had a common "prefix", so that you end up with
stuff like:-
Car vocab:-
http://purl.org/dc/2001-test/Engine
http://purl.org/dc/2001-test/Wheel
http://purl.org/dc/2001-test/Exhaust
Place vocab:-
http://purl.org/dc/2001-test/Country
http://purl.org/dc/2001-test/Peninsula
http://purl.org/dc/2001-test/Region
The two questions are "how do we group them?" and "what do we get when
we dereference the URIs?". To group them, you could follow a pattern
similar to the one I suggested in one of my recent emails, to simply
sort them by type:-
:DublinCoreCarTerm [ daml:inverseOf rdf:type ]
<http://purl.org/dc/2001-test/Engine>,
<http://purl.org/dc/2001-test/Wheel>,
<http://purl.org/dc/2001-test/Exhaust> .
:DublinCorePlaceTerm [ daml:inverseOf rdf:type ]
<http://purl.org/dc/2001-test/Country>,
<http://purl.org/dc/2001-test/Peninsula>,
<http://purl.org/dc/2001-test/Region> .
To help humans derferencing the schemata, you could put the above
chunks into two different files, say "/car" and "/place". Then, for
each term that is defined, you could have it linking to a piece of
RDDL which in turn links to the schema for each of the respective
"vocabularies". viz.:-
http://purl.org/dc/2001-test/Engine => /rddl#Car
http://purl.org/dc/2001-test/Country => /rddl#Place
http://purl.org/dc/2001-test/ => /rddl
I'm not sure that this is the best approach, but it is the one that I
am most inclined to follow at the moment for my own vocabularies.
Cheers,
[1] http://dev.w3.org/cvsweb/2000/10/swap/
--
Kindest Regards,
Sean B. Palmer
@prefix : <http://webns.net/roughterms/> .
:Sean :hasHomepage <http://purl.org/net/sbp/> .
|