W3C home > Mailing lists > Public > public-rax@w3.org > July 2016

RE: Transforming RDF into XML (alternative using ShEx)

From: Evain, Jean-Pierre <evain@ebu.ch>
Date: Sat, 9 Jul 2016 16:31:42 +0000
To: Felix Sasaki <fsasaki@w3.org>, Jose Emilio Labra Gayo <jelabra@gmail.com>
CC: "public-rax@w3.org" <public-rax@w3.org>
Message-ID: <A71D9E70FCEE5E40A5EAA598864E6057F182074B@mailprd.gva.ebu.ch>
Hi Felix, all,

I must admit I meet no difficulty going from XML to RDF. I'll be happy to share files and we should have a way fo sharing such examples on github or else. I would personally by interested to actually "see" what problems others might have. Maybe I missed something :--)

Best, Jean-Pierre
________________________________
From: Felix Sasaki [fsasaki@w3.org]
Sent: 09 July 2016 11:52
To: Jose Emilio Labra Gayo
Cc: public-rax@w3.org
Subject: Re: Transforming RDF into XML (alternative using ShEx)

Thanks, Jose. From the call yesterday we came up with a rough classification of how to structure our discussion

1) functionality needed: convert XML to RDF, or the other way round
2) way to implement it: with standard technologies (e.g. XSLT on the XML side) or with enhancements
3) enhancements being a ad hoc program (see Quentin’s approach described in a mail yesterday: "The approach is supplemented by a library of Java functions  that can be called from XSLTs to process the graph.“)
4) enhancements being kind of „standard“ or at least a declarative form (see in reply to Quentin: Christoph describing https://github.com/EIS-Bonn/krextor which provides an abstraction layer)

I would see ShEX falling under 4).

The reason why people do not do 2) is described by Christoph and Quentin

[
As such, transformation between RDF and XML using XSLTs is not optimal and XSLTs need to be tailored  to different flavor of RDF/XML (which is costly).. One solution that we have used is to transform the RDF input (in any supported syntax) to be converted into a XML canonical form prior to applying XSLTs.

Indeed many manually-crafted XSLTs suffer from this,
]

Now, if people want to stay with 2), they can follow some potential best practice; e.g.  how to store RDF output, so that it can be processed with standard XML tools. See the mail from Martynas:

[
We use however a canonical "flat" RDF/XML layout, in which <rdf:Description>s are not nested (default output by Jena writer). By limiting RDF/XML to such layout, and using the key() function to lookup descriptions etc., the transformation becomes quite manageable.
]

In the list 1-4 above *currently* the actual functionality is mixed - but we could better classify the discussion if we start with three sub tasks:

1.1 Going from RDF > XML
1.2 Going from XML > RDF
1.3 Doing round tripping
1.4 Embedding RDF in XML (already feasible with technologies like RDFa or JSON-LD)
1.5 Embedding XML in RDF
…

Just an idea how to structure the discussion - comments welcome.

Best,

Felix


Am 09.07.2016 um 08:26 schrieb Jose Emilio Labra Gayo <jelabra@gmail.com<mailto:jelabra@gmail.com>>:

I could not attend yesterday's call because I was travelling and was not sure at what time I would arrive...

I was looking at the minutes and saw that there is interest on transforming RDF to XML. I wanted to say that one alternative could be Shape Expressions (ShEx).

Although the primary goal of ShEx is to describe and validate RDF data, it can also be extended with semantic actions which are similar to parsing grammar semantic actions and in that way, it can be used to transform the RDF that has been validated into XML or other languages like Json.

In [1] we describe ShEx and we include an example of how ShEx can be used to generate XML from RDF.

For more information about ShEx you can visit: http://shex.io<http://shex.io/>

Also, if you have interest on the subject, we have recently given a tutorial about RDF validation at ESWC. The slides are available online at: http://weso.github.io/RDFValidation_ESWC16/

[1] Shape Expressions: An RDF validation and transformation language, Eric Prud'hommeaux<http://www.w3.org/People/Eric/>, Jose Emilio Labra Gayo<http://www.di.uniovi.es/%7Elabra>, Harold Solbrig<http://www.mayo.edu/research/faculty/solbrig-harold-ralph/bio-20022700>, 10th International Conference on Semantic Systems<http://www.semantics.cc/>, Sept. 2014, Leipzig, Germany, PDF<http://labra.github.io/ShExcala/papers/semantics2014.pdf> (slides<http://www.slideshare.net/jelabra/semantics-2014>)

Best regards, Jose Labra

On Fri, Jul 8, 2016 at 3:09 PM, Felix Sasaki <fsasaki@w3.org<mailto:fsasaki@w3.org>> wrote:
See
https://www.w3.org/2016/07/08-rax-minutes.html
and below as text. I created this wiki page

https://github.com/rax-w3c/draft-material/wiki

for starting editing. But I have trouble adding people to the group - can somebody help? Florent?

- Felix

   [1]W3C

      [1] http://www.w3.org/

                               - DRAFT -

                                 RAX CG

08 Jul 2016

   See also: [2]IRC log

      [2] http://www.w3.org/2016/07/08-rax-irc

Attendees

   Present
          felix, christian, gerard, john, timea, christoph,
          quentin

   Regrets
          rob, phil

   Chair
          christian:

   Scribe
          fsasaki

Contents

     * [3]Topics
         1. [4]new members
         2. [5]action items
         3. [6]input from quentin et al.
         4. [7]mapping XML of dictionary data to RDF
         5. [8]other sections & topics
         6. [9]next call in two weeks from now
     * [10]Summary of Action Items
     * [11]Summary of Resolutions
     __________________________________________________________

   <scribe> chair: christian

   <scribe> scribe: fsasaki

   [12]https://lists.w3.org/Archives/Public/public-rax/2016Jul/000
   4.html

     [12] https://lists.w3.org/Archives/Public/public-rax/2016Jul/0004.html

new members

   no new members, skipped

action items

   github link for rax cg is [13]https://github.com/rax-w3c

     [13] https://github.com/rax-w3c

input from quentin et al.

   see
   [14]https://lists.w3.org/Archives/Public/public-rax/2016Jul/000
   2.html

     [14] https://lists.w3.org/Archives/Public/public-rax/2016Jul/0002.html

   "One solution that we have used is to transform the RDF input
   (in any supported syntax) to be converted into a XML canonical
   form prior to applying XSLTs. "

   <clange> help

   processing RDF data in XML / xslt workflows

   christian: also covered by one XML prague scenario

   <quentin> canonical format new to be optimized for performance

   christoph: similar solution is here
   [15]https://lists.w3.org/Archives/Public/public-rax/2016Jul/000
   7.html
   ... has RDF abstraction layer, this is independent of RDF
   output serialization
   ... related: what RDF abstract serialization to use

     [15] https://lists.w3.org/Archives/Public/public-rax/2016Jul/0007.html

   collection of state of the art canonical representations of RDF
   in XML

   quentin: you should always optimize canonical format that you
   are processsing

   <clange> there is, e.g., RXR (Regular XML RDF), there is TriX,
   and there are more

   quentin: XSLT is generally not enough, one needs libraries on
   top of XSLT

   christian: "processing RDF data in XML / xslt workflows" -
   important topic, has several solutions, we need to collect info
   what works good, what not etc.

   <clange> sources for the canonical formats mentioned above: RXR
   ([16]https://www.dajobe.org/papers/xmleurope2004/), TriX
   ([17]https://www.w3.org/2004/03/trix/,
   [18]https://en.wikipedia.org/wiki/TriX_(syntax) )

     [16] https://www.dajobe.org/papers/xmleurope2004/),
     [17] https://www.w3.org/2004/03/trix/,
     [18] https://en.wikipedia.org/wiki/TriX_(syntax)

   <clange> AFAIK there is also a newer approach based on the
   SPARQL XML results format

   [19]https://github.com/rax-w3c

     [19] https://github.com/rax-w3c

   <clange> @fsasaki my GitHub account is "clange"

   <TimeaT> my GitHub is theRealImy

   <quentin> @fasaki my GitHub is qhreul

   <scribe> ACTION: felix to add people to rax-cg github [recorded
   in [20]http://www.w3.org/2016/07/08-rax-minutes.html#action01]

     [20] http://www.w3.org/2016/07/08-rax-minutes.html#action01]

   quentin: happy to do the description. won't be able to go
   through all material that christoph provided

   christoph: happy to help

   <scribe> ACTION: quention to start section on RDF data in XML /
   xslt workflows topic. christoph to add material [recorded in
   [21]http://www.w3.org/2016/07/08-rax-minutes.html#action02]

     [21] http://www.w3.org/2016/07/08-rax-minutes.html#action02]

   TimeaT: previous problems, solutions were sent directly per
   mail. there was also a template, not sure how to send input

   Christian: use the template, send to the list

   <clange> BTW my colleagues will write up their two use cases
   (AutomationML Industry 4.0 and GATE NLP) by the next telco.

mapping XML of dictionary data to RDF

   timea: dictionary company stores data in XML format, for
   further publishing. They wanted to bring XML into RDF, to be
   able to enrich dictionaries
   ... they can be multi- or monolingual, because language is
   complex
   ... need a way to convert XML to RDF
   ... for working with dictionaries you have to use lemon /
   ontolex, which may be extended
   ... solved currently with XSLT
   ... writing the XSLT proved to be very long and tedious
   ... not sure if we can achieve a general XSLT
   ... next step is how to connect words between dictionaries
   ... we reached very good point with XSLT, just wondering if
   there is a better way

   felix: so no integration of RDF in XML needed?

   timea: would have been desired, but dropped because XML mapping
   took a long time
   ... roundtripping is difficult
   ... not sure if it is needed

   christoph: for making it easier to create XML / RDF
   translation, there are solutions
   ... I have developed something, felix has one
   ... so this should be a part: write a classification of
   existing libraries
   ... e.g. libraries that are based on XSLT. You start with that
   and it becomes hard to maintain, then people add an abstraction
   layer
   ... adding link to my implementation here

   <quentin> for RDF -> XML, an approach could be to use SPARQL
   and XML templates

   <quentin> ... essentially creating registere queries

   <clange> [22]https://github.com/EIS-Bonn/krextor is a library
   of XSLT templates and functions for XML to RDF

     [22] https://github.com/EIS-Bonn/krextor

   timea: we used "unified views", etl tool that read the XML and
   writes all data into virtuoso
   ... the actual mapping if endepend of unified views

   <clange> @Timea see
   [23]http://ceur-ws.org/Vol-449/ShortPaper2.pdf for an old,
   high-level overview

     [23] http://ceur-ws.org/Vol-449/ShortPaper2.pdf

   [24]http://fsasaki.github.io/stuff/feisgiltt2016/

     [24] http://fsasaki.github.io/stuff/feisgiltt2016/

   felix: currently purely XSLT based solution, without an
   abstraction layer

   timea: classification of existing libraries, describe their
   drawbacks etc.

   christoph: would contribute to such a section

   <quentin> depending on the complexity of the transformation,
   you can use XPATH and templates to populate the RDF

   <scribe> ACTION: timea to start section on existing tools &
   their classification, benefits and drawbacks - others to
   contribute [recorded in
   [25]http://www.w3.org/2016/07/08-rax-minutes.html#action03]

     [25] http://www.w3.org/2016/07/08-rax-minutes.html#action03]

   quentin: you can also just use XPath and java @@@ and then are
   able to keep mappings
   ... you can do similar things from RDF > XML perspective, using
   SPARQL templates

   timea: that sounds familiar how the XSLT is built; has a lot of
   templates
   ... we transformed the XML in a simple RDF, and then converted
   RDF into the model needed
   ... ontolex / lemon + extension

   christioph: I have pointers to further systems, have seen a
   related paper
   ... will add a link here
   ... on roundtripping, let's not forget the XSParql
   specification
   ... it combines XQuery and SPARQL

   <clange> SPARQL templates for RDF to XML have actually been
   implemented as a proper language:
   [26]https://hal.inria.fr/hal-01150623/document. XSPARQL
   ([27]http://xsparql.deri.org/) does a similar job but it's IMHO
   more suited for queries over XML or RDF or both at the same
   time, rather than transforming whole RDF graphs or whole XML
   documents.

     [26] https://hal.inria.fr/hal-01150623/document.
     [27] http://xsparql.deri.org/)

   christioph: it is better for query than complete
   transformation, but very interesting approaches

   <quentin> there is an overlap between the two use-case in terms
   of transformation from 1 format to another

   felix: asking john on mark logic support for RDF and how it
   fits into the picture

other sections & topics

   nothing at the moment

next call in two weeks from now

   same time

   john: we are working on tech. to store RDF in XML
   ... also to make it easier to work with XML described by RDF
   graph
   ... interested to see in problems that people have and finding
   solutions

   adjourned

Summary of Action Items

   [NEW] ACTION: felix to add people to rax-cg github [recorded in
   [28]http://www.w3.org/2016/07/08-rax-minutes.html#action01]
   [NEW] ACTION: quention to start section on RDF data in XML /
   xslt workflows topic. christoph to add material [recorded in
   [29]http://www.w3.org/2016/07/08-rax-minutes.html#action02]
   [NEW] ACTION: timea to start section on existing tools & their
   classification, benefits and drawbacks - others to contribute
   [recorded in
   [30]http://www.w3.org/2016/07/08-rax-minutes.html#action03]

     [28] http://www.w3.org/2016/07/08-rax-minutes.html#action01
     [29] http://www.w3.org/2016/07/08-rax-minutes.html#action02
     [30] http://www.w3.org/2016/07/08-rax-minutes.html#action03

Summary of Resolutions

   [End of minutes]
     __________________________________________________________


    Minutes formatted by David Booth's [31]scribe.perl version
    1.144 ([32]CVS log)
    $Date: 2016/07/08 12:48:48 $
     __________________________________________________________

     [31] http://dev.w3.org/cvsweb/~checkout~/2002/scribe/scribedoc.htm
     [32] http://dev.w3.org/cvsweb/2002/scribe/

Scribe.perl diagnostic output

   [Delete this section before finalizing the minutes.]
This is scribe.perl Revision: 1.144  of Date: 2015/11/17 08:39:34
Check for newer version at [33]http://dev.w3.org/cvsweb/~checkout~/2002/
scribe/

     [33] http://dev.w3.org/cvsweb/~checkout~/2002/scribe/

Guessing input format: RRSAgent_Text_Format (score 1.00)

Succeeded: s/tempaltes/templates/
Found Scribe: fsasaki
Inferring ScribeNick: fsasaki
Present: felix christian gerard john timea christoph quentin
Regrets: rob phil
Got date from IRC log name: 08 Jul 2016
Guessing minutes URL: [34]http://www.w3.org/2016/07/08-rax-minutes.html
People with action items: felix quention timea

     [34] http://www.w3.org/2016/07/08-rax-minutes.html


   [End of [35]scribe.perl diagnostic output]

     [35] http://dev.w3.org/cvsweb/~checkout~/2002/scribe/scribedoc.htm





--
-- Jose Labra


------------------------------------------------------------------------------

**************************************************
This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed.
If you have received this email in error, please notify the system manager. This footnote also confirms that this email message has been swept by the mailgateway
**************************************************
Received on Saturday, 9 July 2016 16:36:59 UTC

This archive was generated by hypermail 2.3.1 : Saturday, 9 July 2016 16:36:59 UTC