Web architecture best practices, media-types, and #issue-output-formats

A suggestion related to the later portion of Stefano's second 
suggestion:

".. it *MUST* return RDF/XML or it *MUST* have a mechanism to indicate 
what type of output the GRDDL-aware agent should expect"

We went back and forth on #issue-output-formats and essentially settled 
[1] on demonstrating non RDF/XML coming out with an atom/turtle test case 
which by itself does not demonstrate GRDDL conformance as currently formally 
stated (which is not much of a problem since it is only one test out a set 
of other tests).

Brian McBride offered [2] a table which summed up the media-type / output 
decision tree:

    output method     media-type         actual        process
       none              none            rdf/xml       MUST?
       none              none            turtle        ????
       None              none            rdfa          ????
       None              none            xml           ????
       Text              none            turtle        ????
       Text              none            rdf/xml       ????
                                         ...
       Text              application/xml rdf/xml       ????
                                         ...
       Text              rdf+xml         rdf/xml       ????
                                         ...
       Text              text/html       rdfa          ????
       Text              xhtml+xml       ...

       XML               rdf-xml         rdf/xml
                                         ...
                         ...
       Qname             ...             ...

I think a change can be made to the appropriate sections to capture what 
is actually a web architecture best practice [3], leverage a mechanism 
built-in to the only transformation language explicitely addressed by the 
normative sections (XSLT), and have minimal impact on existing 
implementations which (probably) already behave in this way.

It's easier for me to start with the (informal) rules and modify them to 
ensure completeness than to start with the human-readable normative 
section (ironically enough) so consider:

(?XSLTResult ?media-type) gspec:rdfParseByMediaType ?G.
(?TXNODE ?R) gspec:result ?XSLTResult.
?TXDOC gspec:ouputMediaType ?media-type.
?TXDOC grddl:transformationProperty ?TP;
   log:uri [fn:doc ?TXNODE].
} => { ?R ?TP ?G }.

?RDFXML  gspec:rdfParse ?G.
(?TXNODE ?R) gspec:resultTree ?RDFXML
?TXDOC grddl:transformationProperty ?TP;
   log:uri [fn:doc ?TXNODE].
} => { ?R ?TP ?G}.

The bottom rule is same as before, so the top is an additional informative 
rule.

Notice gspec:rdfParseByMediaType is included.  Where ?gspec:rdfParse is 
defined (same as before):

  "Whenever the RDF/XML spec says that an RDF/XML document with root node 
ROOT represents a graph G, we have ?ROOT gspec:rdfParse ?G."

Alternatively gspec:rdfParseByMediaType is

Where we have a RDF concrete syntax (turtle, n3, trix, etc..) associated 
with a media-type, then we have ?RDFSyntax gspec:rdfParseByMediaType G
where G is an abstract RDF graph which corresponds with the result of 
parsing ?RDFSyntax as mandated by the (registered?) media-type.

gspec:outputMediaType is essentially the result of applying 
string(/xsl:stylesheet/xsl:output/@media-type) to ?TXNODE

gspec:anyResultTree associates an XSLT result tree (XML or otherwise) with 
its source document and the ?TXNode.

so:

  gspec:resultTree rdfs:subPropertyOf gspec:anyResultTree

Note that by definition via [http://www.w3.org/TR/xslt#output] , 
gspec:resultTree (the RDF/XML-only variety) applies only where the output 
method is 'xml' explicitely, or by 'default'.

This covers everything except scenarios where there is no media-type (bad 
practice [WEB ARCH]) and the output method is not 'xml'.  XSLT gives rules 
for determining a default output method which is one of either html 
(definately not a GRDDL result) or 'xml' - we know what to do with the 
latter.

[1] http://lists.w3.org/Archives/Public/public-grddl-wg/2006Dec/att-0011/06-grddl-wg-minutes.html__charset_us-ascii#item04
[2] http://lists.w3.org/Archives/Public/public-grddl-wg/2006Nov/0136.html
[2] http://www.w3.org/TR/webarch/#internet-media-type

Chimezie Ogbuji
Lead Systems Analyst
Thoracic and Cardiovascular Surgery
Cleveland Clinic Foundation
9500 Euclid Avenue/ W26
Cleveland, Ohio 44195
Office: (216)444-8593
ogbujic@ccf.org

Received on Tuesday, 6 March 2007 02:11:09 UTC