W3C home > Mailing lists > Public > www-tag@w3.org > November 2002

Re: My action item on RDDL/RDF

From: Paul Prescod <paul@prescod.net>
Date: Mon, 11 Nov 2002 12:24:57 -0800
Message-ID: <3DD01219.9080800@prescod.net>
To: Tim Bray <tbray@textuality.com>, WWW-Tag <www-tag@w3.org>

Tim Bray wrote:
> ...
> I'm unconvinced that this really buys anything, but it's probably cheap 
> to assert that this RDDL applies to namespace X; obviously you have to 
> be able to claim to belong to more than one namespace.

Why?

 > ...  And it's hard to
> see what the harm is as long as the back-pointer isn't compulsory.  So 
> in RDF-speak, what's the triple?  What has the property named 
> "servesAsRDDLFor" whose value is some namespace name?

We must be talking past each other. What I want could probably be 
handled just through a statement that RDDL documents SHOULD have an XML 
Base declaration (assuming RDF knows what to do with it).

>...
> Well, if you think of a namespace as a resource then a RDDL is a 
> representation of that resource, so that establishes one end of the 
> relationship.

Not in a way that will be accessible to RDF processors. They have no 
notion of the relationship between resource and representation, AFAIK.

> ...  The RDDL then says that particular other resources have 
> properties such as Nature and Purpose, their related-ness is inferred 
> from their containment in the representation.

Once again, I don't see how a generic RDF processor will infer this. My 
mental model is that I point a generic RDF processor at the namespace 
document and then use it as a namespace-information database (perhaps 
doing queries using a generic RDF query language). It shouldn't have to 
know anything specific about RDDL anymore than my XML parser should have 
to be programmed specifically to handle RDDL.

> ...  At no point has RDDL ever 
> built in syntax to assert the relationship of these resources to the 
> namespace, since any reasonable person will point out that this can be 
> inferred from its being in the representation of the namespace.

I'm not worried about people, I'm worried about machines. Machine 
understanding is the *only* reason to use RDF instead of idiomatic XML 
or even raw text. And of course I'm using "understanding" to mean rougly 
"the ability to build graphs and draw inferences."

>...
> First of all check out one of Jonathan's sketches at 
> http://www.rddl.org/RDDL2, which shows off some of his thinking.  If I 
> have something like (in N3)
> 
> <> <http://www.rddl.org/purposes#schema-validation> <L.dtd>
> 
> How do I infer that this is a purpose, especially if you cook up your 
> own purposes like
> 
> <> <http://prescod.net/purposes#transmogrify> <L.transmog>

Answer #1: Read the OWL ontology for RDF resources.

Answer #2: Add a thin layer of indirection.

@prefix : <http://www.prescod.net/sometargetns#>.
@prefix rddl: <http://www.rddl.org/>.

<http://www.prescod.net/sometargetns#>
	has <rddl:resource> <#dtd>;
         has <rddl:resource> <#relaxng>;
         has <rddl:resource> <#xhtml>.

<#dtd> has <rddl:title> "DTD";
     has <rddl:description> "A DTD for the L language.";
     has <rddl:href> <http://example.org/schemas/L.dtd>;
     has <rddl:purpose> <http://www.rddl.org/purposes#validation>;
     has <rddl:nature> 
<http://www.isi.edu/in-notes/iana/assignments/media-types/application/xml-dtd> 
.

<#relaxng> has <rddl:title> "Relax NG Schema";
     has <rddl:description> "A Relax NG Schema for the L language.";
     has <rddl:href> <http://example.org/schemas/L.rng>;
     has <rddl:purpose> <http://www.rddl.org/purposes#validation> ;
     has <rddl:nature> <http://relaxng.org/ns/structure/1.0>.

<#xhtml> has <rddl:title> "User Documentation";
     has <rddl:description> "Reference documentatin for L, in XHTML.";
     has <rddl:href> <http://example.org/schemas/L.html>;
     has <rddl:purpose> <http://www.rddl.org/purposes#reference>;
     has <rddl:nature> <http://www.w3.org/1999/xhtml> .

> Right now, in both the simple XLink and RDF formulations, it's easy to 
> use nature/purpose as a two-part key to look up what you want, and 
> people seem to like this approach.

I agree. Given a semantic web query language or API, it should be 
similarly easy to look up a DTD for validation. Here's a CWM "query" 
that finds the description for the Relax NG associated with the 
namespace (if any):


this log:forAll :x, :desc.
{<http://www.prescod.net/sometargetns#> has <rddl:resource> :x.
        :x has <rddl:nature> <http://relaxng.org/ns/structure/1.0>.
        :desc is <rddl:description> of :x.
}
     log:implies {:x log:outputString :desc.}.

And here's one to print out all of the titles of the various ways to 
validate:


this log:forAll :x, :desc.
{<http://www.prescod.net/sometargetns#> has <rddl:resource> :x.
        :x has <rddl:purpose> <http://www.rddl.org/purposes#validation>.
        :desc is <rddl:title> of :x.
}
     log:implies {:x log:outputString :desc.}.

>> Second, this is just further evidence that RDF/XML is broken.
> 
> 
> I increasingly agree.  Every time I try to write something down in 
> RDF/XML I get tied in knots; N3 is immensely better.  Either XML is just 
> the wrong syntax for RDF, or the design of the current syntax is 
> hopelessly hosed. -Tim

I think that this is roughly what the N3 would translate into as RDF.

<rdf:RDF
     xmlns:rddl="http://www.rddl.org/"
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

     <rdf:Description rdf:about="http://www.prescod.net/sometargetns#">
         <rddl:resource
             rdf:resource="#dtd"/>
         <rddl:resource
             rdf:resource="#relaxng"/>
         <rddl:resource
             rdf:resource="#xhtml"/>
     </rdf:Description>

     <rdf:Description rdf:ID="dtd">
         <rddl:description>A DTD for the L language.</rddl:description>
         <rddl:href rdf:resource="http://example.org/schemas/L.dtd"/>
         <rddl:nature 
rdf:resource="http://www.isi.edu/in-notes/iana/assignments/media-types/application/xml-dtd"/>
         <rddl:purpose 
rdf:resource="http://www.rddl.org/purposes#validation"/>
         <rddl:title>DTD</rddl:title>
     </rdf:Description>

     <rdf:Description rdf:ID="relaxng">
         <rddl:description>A Relax NG Schema for the L 
language.</rddl:description>
         <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:title xmlns="rddl:">Relax NG Schema</rddl:title>
     </rdf:Description>

     <rdf:Description rdf:ID="xhtml">
         <rddl:description>Reference documentatin for L, in 
XHTML.</rddl:description>
         <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:title xmlns="rddl:">User Documentation</rddl:title>
     </rdf:Description>

</rdf:RDF>
Received on Monday, 11 November 2002 15:25:35 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Thursday, 26 April 2012 12:47:12 GMT