Re: distiller behaviour without base href

On Jul 3, 2013, at 3:17 PM, Dan Brickley <danbri@google.com> wrote:

> I'm experimenting with RDFa for per-term pages on schema.org. I fed
> this chunk of markup to your RDFa 1.1 distiller,
> http://www.w3.org/2012/pyRdfa/#distill_by_input+with_options
> 
> <div resource="http://schema.org/sku" typeof="rdf:Property
> owl:Property" property="rdfs:label" content="sku">
> 
> <h1 class="page-title">Property: <a href="sku">sku</a></h1>
> 
> <div property="rdfs:comment">The Stock Keeping Unit (SKU), i.e. a
> merchant-specific identifier for a product or service, or the product
> to which the offer refers.</div>
> 
> <table cellspacing="3" class="definition-table">
> <tr><th class="rangeIncludes-vals" scope="row" colspan="2">Values
> expected to be one of these types:</th></tr>
> 
> <tr class="type-nam"><td><code><a
> property="http://schema.org/rangeIncludes"
> href="/Text">Text</a></code></td><td></td></tr>
> 
> <tr><th class="domainIncludes-vals" scope="row" colspan="2">Used on
> these types:</th></tr>
> 
> <tr class="type-nam"><td><code><a
> property="http://schema.org/domainIncludes"
> href="/Offer">Offer</a></code></td><td></td></tr>
> 
> <tr class="type-nam"><td><code><a
> property="http://schema.org/domainIncludes"
> href="/Product">Product</a></code></td><td></td></tr>
> 
> <tr class="type-nam"><td><code><a
> property="http://schema.org/domainIncludes"
> href="/Demand">Demand</a></code></td><td></td></tr>
> 
> </table>
> 
> </div>
> 
> 
> Result was:
> 
> @prefix owl: <http://www.w3.org/2002/07/owl#> .
> @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
> @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
> @prefix schema: <http://schema.org/> .
> 
> schema:sku a rdf:Property,
>        owl:Property;
>    rdfs:label "sku";
>    schema:domainIncludes </Demand>,
>        </Offer>,
>        </Product>;
>    schema:rangeIncludes </Text>;
>    rdfs:comment "The Stock Keeping Unit (SKU), i.e. a
> merchant-specific identifier for a product or service, or the product
> to which the offer refers." .
> 
> 
> ... is that even Turtle?

It certainly is, Turtle allows for the use of relative IRIs, as does RDFa, as you used within your snippet. However, to be valid RDF, the relative IRIs need to resolve to absolute IRIs.

There are actually Turtle tests to be sure that relative IRIs are processed properly, which require an assumed base URI for the document. If the snippet was contained in a document at a well-known URL, that would be used as the base. Presuming that the document came from http://schema.org/sku, you would see the other relative IRIs expanded appropriately.

> If I wrap my markup fragment in a trivial HTML shell and declare the
> base href in header, i.e. this, it works.
> 
> <html>
> <head>
> <title>test</title>
> <base href="http://schema.org/" />
> </head>
> <body>
> <div resource="http://schema.org/sku" typeof="rdf:Property
> owl:Property" property="rdfs:label" content="sku">
> 
> <h1 class="page-title">Property: <a href="sku">sku</a></h1>
> 
> <div property="rdfs:comment">The Stock Keeping Unit (SKU), i.e. a
> merchant-specific identifier for a product or service, or the product
> to which the offer refers.</div>
> 
> <table cellspacing="3" class="definition-table">
> <tr><th class="rangeIncludes-vals" scope="row" colspan="2">Values
> expected to be one of these types:</th></tr>
> 
> <tr class="type-nam"><td><code><a
> property="http://schema.org/rangeIncludes"
> href="/Text">Text</a></code></td><td></td></tr>
> 
> <tr><th class="domainIncludes-vals" scope="row" colspan="2">Used on
> these types:</th></tr>
> 
> <tr class="type-nam"><td><code><a
> property="http://schema.org/domainIncludes"
> href="/Offer">Offer</a></code></td><td></td></tr>
> 
> <tr class="type-nam"><td><code><a
> property="http://schema.org/domainIncludes"
> href="/Product">Product</a></code></td><td></td></tr>
> 
> <tr class="type-nam"><td><code><a
> property="http://schema.org/domainIncludes"
> href="/Demand">Demand</a></code></td><td></td></tr>
> 
> </table>
> 
> </div>
> </body>
> </html>
> 
> 
> @prefix owl: <http://www.w3.org/2002/07/owl#> .
> @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
> @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
> @prefix schema: <http://schema.org/> .
> 
> schema:sku a rdf:Property,
>        owl:Property;
>    rdfs:label "sku";
>    schema:domainIncludes schema:Demand,
>        schema:Offer,
>        schema:Product;
>    schema:rangeIncludes schema:Text;
>    rdfs:comment "The Stock Keeping Unit (SKU), i.e. a
> merchant-specific identifier for a product or service, or the product
> to which the offer refers." .
> 
> 
> (Gregg's behaves the same in both cases, http://rdf.greggkellogg.net/distiller )
> 
> My conclusions:
> 
> 1. I don't understand this result syntax:  </Offer> nor why both tools
> produce it; I thought they were different codebases (python vs ruby).

Ideally, when we produce this, it would include an @base directive with the specified, or default IRI base.

> 2. it would seem important for RDFa-checking tools to have some
> options to deal with setting the base URI, and/or reporting when it
> isn't set and might be giving weird results.
> 
> It seems like http://rdfa.info/play/ silently patches up examples by
> assuming a base href of http://rdfa.info/ hence parses my first sample
> into triples such as
> "  ... schema:domainIncludes <http://rdfa.info/LocalBusiness>;"

Well, if you're putting in code into a text view, then _some_ IRI needs to be used as the base. Normally, we expect to process documents (RDFa or Turtle) from a URL, so there will always be a document base.

Gregg

> Lately I'm testing with all 3 tools; when they agree, I guess I'm
> heading in right direction...
> 
> cheers,
> 
> Dan
> 

Received on Wednesday, 3 July 2013 22:19:53 UTC