Patrick,
Thanks for this. Yes, I remember you made a similar point in the thread
here back in May/June (but yes, it's worth reiterating, I think).
The problem you describe (and address with your x:Vocabulary and
x:RDFSchema classes and x:term property) is (I think) pretty much
_exactly_ what motivated my initial ruminations on this topic, and why I
embarked on this hair-splitting to establish exactly what are the
resources we are talking about.
i.e. I wanted to express the relationships between terms (in my case I
was specifically interested in the subset that DC calls elements i.e.
RDF properties) and "functional" sets/aggregates of those terms (element
sets, vocabularies, term sets, whatever we call them), where there was
no _necessary_ coincidence between the set of names of elements in one
"element set" and the set of names "in" an XML namespace. And an RDF/XML
representation was a different resource again. Yes, often there is a
one-to-one mapping but it's not necessarily so.
So I've ended up coining classes "Schema", ElementSet" and a property
"isElementOf". It just continued to niggle me that I was introducing
these "local" semantics that I should avoid if possible, but I think
your example below clarifies to me that it is useful/necessary.
And as you say, in this application, I absolutely should not deploy a
URI which is already in use as an XML namespace name as the identifier
of one of these functional aggregates (which was a mistake I made
earlier!)
Thanks again - that was very helpful.
Pete
> -----Original Message-----
> From: DCMI Architecture Group
> [mailto:[log in to unmask]] On Behalf Of Patrick Stickler
> Sent: 16 January 2003 09:18
> To: [log in to unmask]
> Subject: Re: rdfs:isDefinedBy revisited
>
>
> > -----Original Message-----
> > From: ext Pete Johnston [mailto:[log in to unmask]]
> > Sent: 15 January, 2003 16:01
> > To: [log in to unmask]
> > Subject: Re: rdfs:isDefinedBy revisited
> >
> >
> > ... I definitely do want to distinguish
> >
> > - a set of terms or names (1 or 2) identified by a URI e.g.
> > http://purl.org/dc/elements/1.1/
>
> Fair enough. This would equate to a functional vocabulary, as
> outlined below, but I'd use a different URI from that used as
> the XML namespace URI.
>
> > - a particular representation of that set of terms (e.g. an RDF/XML
> > document) which happens to be Web retrievable using that
> same URI (3)
>
> If the URI denotes a vocabulary, then an RDF/XML
> representation of the definition of that vocabulary would be
> appropriate.
>
> --
>
> This may be obvious and I probably don't need to mention it,
> but the object of rdfs:isDefinedBy need not be the thing
> denoted by the XML namespace URI. In fact, if one has several
> different schemas (XML Schema, RDFS, RELAXNG, OWL, XTM, etc.)
> not to mention multiple instances of a given encoding (e.g.
> separate RDFS instances defining labels and descriptions for
> each language) which all provide definition of a term, then
> each may be identified by an rdfs:isDefinedBy statement.
>
> I.e., there is no requirement for the pattern
>
> XXX:term rdfs:isDefinedBy XXX
>
> and IMO it should be avoided.
>
> A given functional vocabulary, such as DC, need not be
> constrained to terms grounded in only one namespace, and the
> resource defining that vocabulary need not equate to the
> resource(s) defining the individual terms. There can thus be
> multiple functional vocabularies which share common terms and
> the definition of the vocabulary is not dictated by the
> definition of the terms. A good example of this is PRISM,
> which is a functional vocabulary which includes terms from
> other functional vocabularies (e.g. DC) as well as defining
> terms of its own. And of course, the identity of a given vocabulary
> is not the same as a particular namespace (and in the case
> of vocabularies with terms from multiple namespaces, cannot
> be the same), and hence vocabularies should have a distinct
> URI from any XML namespaces.
>
> IMO a vocabulary equates to a DCMI namespace.
>
> Thus, the formal definition of a vocabulary such as DC or
> PRISM could be organized thus (this is how we do it at Nokia):
>
> RDF instance a:S
> [
> a:S rdf:type x:RDFSchema .
> a:V rdf:type x:Vocabulary .
> a:V x:term g:t1 .
> a:V x:term g:t2 .
> a:V x:vocabulary b:V .
> a:V rdfs:isDefinedBy a:S .
> ]
>
> RDF instance g:S
> [
> g:S rdf:type x:RDFSchema .
> g:t1 rdf:type rdf:Property .
> g:t1 rdfs:label "Term G1" .
> g:t1 rdfs:isDefinedBy g:S .
> g:t2 rdf:type rdf:Property .
> g:t2 rdfs:label "Term G2" .
> g:t2 rdfs:isDefinedBy g:S .
> ]
>
> RDF instance b:S
> [
> b:S rdf:type x:RDFSchema .
> b:V rdf:type x:Vocabulary .
> b:V x:term h:t1 .
> b:V x:term k:t1 .
> h:t1 rdf:type rdf:Property .
> h:t1 rdfs:label "Term H1" .
> h:t1 rdfs:isDefinedBy b:S .
> k:t1 rdf:type rdf:Property .
> k:t1 rdfs:label "Term K1" .
> k:t1 rdfs:isDefinedBy b:S .
> ]
>
> Here we have 6 different XML namespaces, two vocabularies,
> and four terms, all defined in three RDF resources. Each
> vocabulary defines the terms and/or subvocabularies it
> includes. The first
> vocabulary subsumes all the terms in the second vocabulary.
> Insofar as the definition of the vocabularies is concerned,
> the XML namespaces used by the individual terms is
> irrelevant. The RDF resource g:S defines terms that are all
> grounded in the same vocabulary. The RDF resource b:S not
> only defines terms grounded in different namespaces but a
> vocabulary as
> well.
>
> So, hopefully it is clear that there is no fixed relation
> between vocabularies, XML namespaces and schemas, and in fact
> it is far more flexible and scalable to avoid any ambiguity
> in this regard by presuming that the XML namespace denotes
> any particular schema or vocabulary.
>
> XML namespace != vocabulary != model != schema instance
>
> Just thought I'd reassert those points...
>
> Cheers,
>
> Patrick
>
|