- From: Phil Archer <parcher@icra.org>
- Date: Wed, 16 Jul 2008 13:06:32 +0100
- To: Public POWDER <public-powderwg@w3.org>
- CC: Ivan Herman <ivan@w3.org>, Dan Brickley <danbri@danbri.org>
Sorry this is long but it's kind of an argument made in public leading
to a proposed resolution.
Ivan - I'm copying you in as this has been triggered by your comment and
expertise - and it has a question for you which, I'm sorry, is quite a
long way down.
Dan - I think this addresses the issue you've had with this from the
start.
Picking up from Ivan's comments [1], clearly we need to do a bit of work
on this 'no blank nodes' business. My own lack of understanding isn't
much of a help here but given that we've been told explicitly that blank
nodes are things we really can't have in a POWDER descriptor set, let's
see what we have to do.
This is wrong:
1 <descriptorset>
2 <ex:material>
3 <ex:Wood>
4 <ex:finish rdf:resource="http://example.org/vocab#shiny"/>
5 <ex:madeof>cedar</ex:madeof>
6 </ex:Wood>
7 </ex:material>
8 </descriptorset>
because ex:Wood, although is is of a defined type(ex:Wood), it is still
a blank node. If I understand Dan and JJC correctly, I believe writing
this means that the universe is arranged in such a way that there is at
least one resource that has the property ex:material with the value
ex:Wood. Since, in a POWDER environment, this may not be true the logic
doesn't hold.
In consequence, Stasinos has suggested to the group that we need to have
something like this
1 <descriptorset>
2 <ex:material>
3 <ex:Wood ref="http://example.org/vocab#polishedcedar">
4 <ex:finish rdf:resource="http://example.org/vocab#shiny"/>
5 <ex:madeof>cedar</ex:madeof>
6 </ex:Wood>
7 </ex:material>
8 </descriptorset>
My problem is the 'ref' attribute. A descriptor set is meant to to carry
RDF/XML directly so adding in non-RDF attributes strikes me as something
to avoid if we can. rdf:ID or rdf:about is what we really need isn't it?
If the intention is to create or use a node within the 'ex' namespace
then it needs to be rdf:about thus:
1 <descriptorset>
2 <ex:material>
3 <ex:Wood rdf:about="http://example.org/vocab#polishedcedar">
4 <ex:finish rdf:resource="http://example.org/vocab#shiny"/>
5 <ex:madeof>cedar</ex:madeof>
6 </ex:Wood>
7 </ex:material>
8 </descriptorset>
For our candidate resource <u>, writing this out long hand gives us
these triples:
<u> ex:material <http://example.org/vocab#polishedcedar>
<http://example.org/vocab#polishedcedar> rdf:type
<http://example.org/vocab#Wood>
<http://example.org/vocab#polishedcedar> ex:finish
<http://example.org/vocab#shiny>
<http://example.org/vocab#polishedcedar> ex:madeof "cedar"
Whilst this is OK, it's hardly efficient. It would be much more
efficient to define polished cedar in the ex vocabulary (or some other
vocabulary, it doesn't matter), and use
rdf:resource="http://example.org/vocab#polishedcedar". So people should
probably be warned off defining a description within a POWDER doc - but
it is valid RDF and it does match the 'no blank nodes' rule.
Using RDF:ID gives a rather different (and almost certainly wrong)
result since, if I've got this right (and I'm far from sure) polished
cedar is now tied to <u> thus:
<u> ex:material <u#polishedcedar>
And u#polishedcedar becomes the subject of the other triples (and just
to add spice, u might include a fragment of its own then we're
really messed up). I guess this _could_ be the intention but my hunch is
that it will normally be an error... and this probably means we should
see if we can ban the use of rdf:ID within a descriptor set.
Hmmm...
It seems to me that doing anything other than one of these two:
A) <ex:property1>literal value</ex:property>
B) <ex property2 rdf:resource="...#thing" />
is likely to be one of:
1. Bad semantics
2. Bad practice
3. Plain wrong
And even there you need to be careful that the URI in (B) is an instance
and not a class!
Which I guess is why Stasinos suggested adding the ref attribute ;-)
So right now I'm tending towards suggesting that we only allow literal
values or rdf:resource and no child elements of child elements of
descriptorset.
Let's cycle back to a discussion we had at the f2f on Monday.
If we allow people to write their foaf:Agent or dcterms:Agent class
directly into a POWDER doc that means that to process POWDER you MUST
understand RDF. We decided that this was OK because you MUST understand
RDF to process a descriptorset.
If we were to restrict a descriptorset to only allowing literals or
rdf:resources then you could probably go a long way in processing POWDER
without understanding RDF at all if you didn't want to. Let's take
Ivan's copyright example. Cutting out some of the detail to fit in an
e-mail format he has this:
<descriptorset>
<displaytext>Logos must...</displaytext>
<rdf:type rdf:resource="http://creativecommons.org/ns#Work"/>
<rdfs:seeAlso rdf:resource="http://www.w3.org..."/>
<xhtml:license rdf:resource='http://www.w3.org...'/>
<cc:morePermissions rdf:resource='...'/>
<cc:attributionURL rdf:reource='http://www.w3.org/2001/sw/'/>
<cc:attributionName>World Wide Web Consortium </cc:attributionName>
</descriptorset>
And the most complex thing there is rdf:type which we've discussed and
decided what to do about. Do you need to understand RDF to process this?
Well, yes _if_ you want to understand the semantics of
http://creativecommons.org/ns#Work - but in a given application it may
be enough to know it's there without doing any parsing?
So right now I'm thinking we should not only restrict descriptor sets to
having child elements that have no child elements to avoid a lot of
semantic hassle, but we could do the same for attribution and obviate
the need to understand RDF at all to process POWDER at least at an
operational level.
What would we lose?
Well, we'd lose the ability to put anything other than simple RDF in the
descriptor set and that must surely mean a reduction in flexibility. It
also makes some things a little more awkward. We were happily expecting
all xx:Agent classes to be defined externally until Ivan said that the
W3C hasn't got a FOAF file so can he put it in the POWDER file itself.
So we made it possible... but, well, if we said no, sorry Ivan, it's
about time W3C had an RDF description of itself somewhere, would that be
a show stopper?
Let me summarise with a proposed resolution.
PROPOSED RESOLUTION: That the descriptor set and attribution elements in
a POWDER document may contain RDF properties that have either a literal
value or that use the rdf:resource attribute to point to an instance of
owl:Thing only. Arbitrary RDF may not be included ()in XML terms the
child elements of descriptorset and attribution must not have any child
elements).
Arguments for:
- The semantics are much safer
- It means that at an operational level, it
is possible to process POWDER without an RDF tool kit
Arguments against:
- It reduces flexibility
- It forces people to have or create a file that
describes themselves (using FOAF or DC terms)
WDYT?
Phil.
[1] http://lists.w3.org/Archives/Public/public-powderwg/2008Jul/0058.html
--
Phil Archer
Chief Technical Officer,
Family Online Safety Institute
w. http://www.fosi.org/people/philarcher/
Received on Wednesday, 16 July 2008 12:07:13 UTC