- From: Dave Beckett <dave.beckett@bristol.ac.uk>
- Date: Tue, 12 Nov 2002 21:07:37 +0000
- To: Paul Prescod <paul@prescod.net>
- cc: Tim Bray <tbray@textuality.com>, WWW-Tag <www-tag@w3.org>
More RDF/XML explanations and primer for Paul below... sorry ...
>>>Paul Prescod said:
>
> Tim Bray wrote:
> >...
> >
> > The notion that you limit a RDDL to apply to one and only one namespace
> > seems like a totally artificial limitation that buys nothing and
> > eliminates interesting possibilities.
>
> In the end, this is easy to achieve if the namespace is the referent of
> the rdf:about.
>
> >...
> > Aahhh... the RDF tax strikes again. I want to do something that is
> > obvious and straightforward and implicit in the resource/representation
> > relationship, and using RDF is going to cost me oceans of arcane totally
> > human-opaque syntax.
>
> Every level of abstraction is going to have _some_ tax unless you do it
> totally out-of-line. It's one thing when the RDF tax is just extra
> syntax but in this case we're talking about being explicit in order to
> _get the benefits_ of RDF.
>
> >...
> > A machine is entirely capable of detecting the condition that some
> > assertions are contained in the representation of a resource and
> > inferring the fact that the assertions are related to the resource. It
> > should not be necessary to duplicate the assertion of this
> > machine-detectable relationship. -Tim
>
> Machines are not intelligent. They detect things only when they are told
> to. I am suggesting to use standard RDF technique so that the programmer
> does not have to hack around the natural behaviour of the RDF processor.
Seems fine so far
> Please consider this alternative, which I think has the following virtues:
>
> * fewer elements in RDF namespace
>
> * more explicit about what resources are being related,
>
> * no contradiction problems (scope of nature/purpose declarations are
> clear and correct)
>
> * naturally permits multiple namespace declarations from the same RDDL
>
> * permits these multiple declarations to share as much or as little as
> they like.
>
> * naturally permits the addition of non-resource annotations on the
> namespace (like who owns it, what its usage policies are, etc.)
>
> * naturally permits the same markup to live in documents that are NOT
> served from namespace URIs
>
> The only down-side I see is that it probably forces you to move the
> hacky HTML paragraph-elements further away from the RDF, because of
> RDF's problem with mixed content. :(
It's downside is that it (your example below) isn't RDF/XML, but some
other thing, since it doesn't match the grammar. That's fine as an
experiment.
And please, stick to RDF/XML when talking about the XML syntax
and RDF when talking about the graph. It is slippery enough trying
to follow this.
"RDF[/XML]'s problem with mixed content" again with no explanation of
the problem. You can have mixed content in RDF/XML, I've said that
several times. Your seem to be the one with the problem about that.
To make this clear to you, I'll give you a pointer to the
specification and given an example of how to use it.
Here is a pointer to how to put XML content at end of an RDF property arc:
http://www.w3.org/TR/rdf-syntax-grammar/#section-Syntax-XML-literals
(it happens not to be mixed content in the example there; it could
easily have been, I could change it). So mixed content could be:
<ex:prop rdf:parseType="Literal"
xmlns:a="http://example.org/a#">some stuff here
<a:Box required="true">
blah blah <a:widget size="10" />
this is mixed content yes?
<a:grommit id="23" />
</a:Box>
blah</ex:prop>
It may not (likely not) meet your definition of "easy", but there it
is, mixed.
The RDF/XML grammar defines it that way too:
Production literal
Any XML element content that is allowed according to [XML] definition
Content of Elements Rule [43] content. in section 3.1 Start-Tags,
End-Tags, and Empty-Element Tags
-- http://www.w3.org/TR/rdf-syntax-grammar/#literal
The example RELAXNG grammar might make that crystal clear:
parseTypeLiteralPropertyElt = ...
element * - ( ... lots of stuff elided here ... ) {
idAttr?, parseLiteral, literal
}
literal = any
any = mixed { element * { attribute * { text }*, any }* }
-- http://www.w3.org/TR/rdf-syntax-grammar/#section-RELAXNG-Schema
That should answer any problem of how to find where it is defined,
and how to do it. You can go "yuck" and that's all I can do for you.
> =====
>
>
> <html xmlns:rddl="http://www.rddl.org/"
> xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
> <head>
> <title>RDDL Description for http://example.org/L</title></head>
> <body>
> <h1>RDDL Description for http://example.org/L</h1>
>
> <p>This document describes the "L" namespace and provides links to
> related resources</p>
>
> <!-- FIRST namespace -->
> <rddl:Namespace rdf:about="http://www.prescod.net/sometargetns#">
> <rddl:title>My namespace</rddl:title>
> <dc:author>Paul Prescod</dc:author>
> <rddl:related>
> <rddl:Resource rdf:ID="dtd" rddl:title="DTD">
> <rddl:prose>A DTD for the L language.</rddl:prose>
> <rddl:href rdf:resource="http://example.org/schemas/L.dtd"/>
> <rddl:nature
> rdf:resource="http://www.isi.edu/in-notes/iana/assignments/media-types/applic
ation/xml-dtd"/>
> <rddl:purpose
> rdf:resource="http://www.rddl.org/purposes#validation"/>
> </rddl:Resource>
> </rddl:related>
>
> <rddl:related>
> <rddl:Resource rdf:ID="relaxng" rddl:title="Relax NG">
> <rddl:prose>A Relax NG Schema for the L
> language.</rddl:prose>
> <rddl:href rdf:resource="http://example.org/schemas/L.rng"/>
> <rddl:nature rdf:resource="http://relaxng.org/ns/structure/1.0"/>
> <rddl:purpose
> rdf:resource="http://www.rddl.org/purposes#validation"/>
> </rddl:Resource>
> </rddl:related>
>
> <rddl:related>
> <rddl:Resource rdf:ID="xhtml" rddl:title="User Documentation">
> <rddl:prose>Reference documentation for L, in
> XHTML.</rddl:prose>
> <rddl:href
> rdf:resource="http://example.org/schemas/L.html"/>
> <rddl:nature rdf:resource="http://www.w3.org/1999/xhtml"/>
> <rddl:purpose
> rdf:resource="http://www.rddl.org/purposes#reference"/>
> </rddl:Resource>
> </rddl:related>
>
> </rddl:namespace>
>
> <!-- SECOND namespace -->
>
> <rddl:namespace rdf:about="http:/.../second-namespace">
> <rddl:related rdf:resource="#dtd"/>
> <rddl:related rdf:resource="#relaxng"/>
> <rddl:related>
> <rddl:Resource rddl:title="User Documentation">
> <rddl:prose>Reference documentation for L2, in XHTML.</rddl:prose>
> <rddl:href rdf:resource="http://example.org/schemas/L.html"/>
> <rddl:nature rdf:resource="http://www.w3.org/1999/xhtml"/>
> <rddl:purpose
> rdf:resource="http://www.rddl.org/purposes#reference"/>
> </rddl:Resource>
> </rddl:namespace>
> </html>
>
> Repeating rddl:related is kind of annoying (though your version did that
> also). Why can't the RDF grammar just allow multiple descriptions per
> property. Are we afraid that they would be interpreted as a formal
> collection or something?
Because an RDF graph is made of triples made of three things
resource node -> predicate arc -> object node
not four - "multiple descriptions per property" as you ask:
resource node -> predicate arc -> object node1 , object node2???
nothing to do with collections.
> Also, a purist might argue that the whole thing should be wrapped in
> rdf:RDF, but I would say that rdf:about should be a sufficient RDF
> processing trigger across all RDF embedded in other vocabularies.
A purist!? Ha ha ha.
That's like asking an "XML purist" to allow an XML document with two
root elements; it just doesn't match the grammar and model.
RDF/XML defines when the root element must be rdf:RDF. See the spec
for details at http://www.w3.org/TR/rdf-syntax-grammar/#start
If you wanted to define a different language that mapped XML
elements, attribute and stuff to/from RDF triples, I've already said
I'm interested in that. Especially where it has minimal or no impact
on the XML users.
> Add those to the list of things to fix in RDF/XML.
Like adding yet more alternative grammar forms to this? That's a
crazy way to proceed, given your problems with where this is already.
Dave
Received on Tuesday, 12 November 2002 16:14:21 UTC