W3C home > Mailing lists > Public > semantic-web@w3.org > February 2020

Re: Progress toward making RDF easier?

From: Eric Prud'hommeaux <eric@w3.org>
Date: Fri, 21 Feb 2020 12:05:29 +0100
To: Richard Light <richard@light.demon.co.uk>
Cc: "semantic-web@w3.org" <semantic-web@w3.org>
Message-ID: <20200221110528.GD28270@w3.org>
On Fri, Feb 21, 2020 at 09:12:36AM +0000, Richard Light wrote:
> On 21/02/2020 08:29, Martynas Jusevičius wrote:
> 
> Hi,
> 
> On Fri, Feb 21, 2020 at 9:26 AM Thomas Francart
> <thomas.francart@sparna.fr><mailto:thomas.francart@sparna.fr> wrote:
> 
> 
> 
> I read at https://us2ts.org/program-easier-rdf a proposal to deprecate RDF/XML. This syntax has a major advantage : it can be generated using XSLT from source XML files. This ability to bridge XML and RDF is also key in some projects.
> 
> 
> 
> I was about to write exactly the same thing. RDF/XML is a crucial
> bridge to/from the XML stack.
> 
> To put it more generally, an XML serialization of RDF graphs is a crucial bridge to/from the XML stack. You could make an argument (under the 'simplify RDF' heading) for a less clever XML serialization which simply represents nodes and arcs for what they are. I did this when faced with the job of generating multiple RDF serializations from an XML source.  Once I had my 'simple RDF XML', I could write a single generic XSLT transform for each serialization required.  I couldn't begin to do that, starting from RDF/XML.

Jonathan Robie built a general RDF/XML parser in XQuery in <https://www.w3.org/XML/2002/08/robie.syntacticweb.html>. This enabled XPath to navigate all of the isomorphisms in RDF/XML's nested structure.

At the other end of the spectrum, jjc et all created TriX <https://www.hpl.hp.com/techreports/2004/HPL-2004-56.pdf> which represents TriG:
[[
  <https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Skepticism/Green_Cheese_Model_of_Lunar_Composition> {
    <https://www.wikidata.org/wiki/Q405> # the moon
    <https://www.wikidata.org/wiki/Property:P527> # has part
    <https://www.wikidata.org/wiki/Q3546121> # type of Cheese
  }
]]
in XML:
[[
  <TriX xmlns="http://www.w3.org/2004/03/trix/trix-1/">
    <graph>
      <uri>https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Skepticism/Green_Cheese_Model_of_Lunar_Composition</uri>
      <triple>
        <uri></uri>
        <uri>https://www.wikidata.org/wiki/Q405</uri> <!-- the moon -->
        <uri>https://www.wikidata.org/wiki/Property:P527</uri> <!-- has part -->
        <uri>https://www.wikidata.org/wiki/Q3546121</uri> <!-- type of Cheese -->
      </triple>
    </graph>
  </TriX>
]]

> Also, as you imply, it's not just about generation of Linked Data: it's also about consumption. What I'm working on right now is an XSLT transform which uses the XSLT document() function to query a Linked Data resource and add lat/long coordinates to my source (XML) data.

I'm not sure you actually want a flat structure like TriX for XSLT translations to consumable alternatives. While RDF/XML is highly idiosyncratic (it was trying to be like what RDFa is today and consequently dances around the heuristics of 2000-era browsers), the nesting makes transformations to ther nested structures a lot easier. Adding a layer of associativity to the lat/long example above, imagine a simple movement from one place to another expressed in JSON:

{ "@type": "...Movement",
  "from": { "lat": "12N", "long": "34W" },
  "to": { "lat": "56S", "long": "78E" }
}

This XSLT target will be considerably easier if you start with a nested RDF/XML than if you start with flattened TriX (or flattened RDF/XML for that matter).

If you want convenience, you want nesting; if you want completeness at the cost of more complex XSLT, you want a flat structure.


> Richard
> 
> 
> 
> .
> 
> 
> --
> Richard Light
Received on Friday, 21 February 2020 11:05:36 UTC

This archive was generated by hypermail 2.4.0 : Thursday, 24 March 2022 20:42:09 UTC