Export RDF to custom XML

122 views
Skip to first unread message

Oleksandr Mandryk

unread,
Mar 6, 2017, 9:40:22 AM3/6/17
to TopBraid Suite Users
Hi,

I'm trying to create a SPARQLMotion script that will export specified taxonomy to the custom XML output.

Currently my script is based no these modules:

spl:Argument -> sml:ImportRDFFromWorkspace -> sml:ConvertRDFToXML -> sml:ReturnXML


But when I run this script I get only the first (root) node of the specified projectGraph:

<skos:Concept xmlns:composite="http://www.topbraid.org/2007/05/composite.owl" xmlns:skos="http://www.w3.org/2004/02/skos/core" skos:prefLabel=Root Test Node"/>

So I have a few questions:

1) Is my approach correct? I mean spl:Argument -> sml:ImportRDFFromWorkspace -> sml:ConvertRDFToXML -> sml:ReturnXML

2) Why I'm receiving only first node as result but not all?

3) How to specify a custom template for the XML, for example I need something like this:

<rdf:RDF
    xmlns:ui="http://uispin.org/ui#"
    xmlns:let="http://uispin.org/let#"
 ... >

<rdf:Description rdf:about="http://test.com/Concept_7c932ea3-2b5b-11b2-8037-eac2f42a0c5a">
 
<rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">NodeLabel</rdfs:label>
 
<rdf:type rdf:resource="http://www.w3.org/2004/02/skos/core#Concept"/>

 
<skos:broader rdf:resource="http://test.com/#Concept_7c932e90-2b5b-11b2-8037-eac2f42a0c5a"/>

 
<skos:narrower rdf:resource="http://test.com/#Concept_7c932ea8-2b5b-11b2-8037-eac2f42a0c5a"/>
 
<skos:narrower rdf:resource="http://test.com/#Concept_7c932ea5-2b5b-11b2-8037-eac2f42a0c5a"/>


  ... other properties

</rdf:Description>

...

</rdf:RDF>


Thank you very much!

Best regards,
Oleksandr Mandryk

Pat Doyle

unread,
Mar 6, 2017, 4:47:02 PM3/6/17
to TopBraid Suite Users
Oleksandr,

It seems you're using sml:ConvertRDFToXML - are you using sml:ConvertXMLToRDF at any point earlier to initially convert some XML data to RDF?

The reason I ask is because sml:ConvertRDFToXML is not meant to be called against arbitrary RDF data - you'd typically use it in order to round-trip some XML data from XML to RDF for processing then back to XML.  

More information about this module can be found in the SPARQLMotion Functions Library in the TBCME Help under TopBraid Composer --> Reference --> SPARQLMotion Module Library Reference.

Let me know if this helps,
Pat


--
You received this message because you are subscribed to the Google Group "TopBraid Suite Users", the topics of which include the TopBraid Suite family of products and its base technologies such as SPARQLMotion, SPARQL Web Pages and SPIN.
To post to this group, send email to topbraid-users@googlegroups.com
---
You received this message because you are subscribed to the Google Groups "TopBraid Suite Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to topbraid-users+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Holger Knublauch

unread,
Mar 6, 2017, 5:13:00 PM3/6/17
to topbrai...@googlegroups.com
This output looks very much like RDF/XML. How does it differ, and could you simply use sml:ReturnRDF?

Holger



Thank you very much!

Best regards,
Oleksandr Mandryk

--
You received this message because you are subscribed to the Google Group "TopBraid Suite Users", the topics of which include the TopBraid Suite family of products and its base technologies such as SPARQLMotion, SPARQL Web Pages and SPIN.
To post to this group, send email to topbrai...@googlegroups.com

---
You received this message because you are subscribed to the Google Groups "TopBraid Suite Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to topbraid-user...@googlegroups.com.

Oleksandr Mandryk

unread,
Mar 6, 2017, 9:47:31 PM3/6/17
to TopBraid Suite Users
Hi Pat,
thank you for reply!

Actually I'm not using sml:ConvertXMLToRDF, I just need to get RDF from taxonomy and compose custom XML based on this RDF.
Do you know better way how to do it?

Thank you.

Best regards,
Oleksandr Mandryk
To post to this group, send email to topbrai...@googlegroups.com

---
You received this message because you are subscribed to the Google Groups "TopBraid Suite Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to topbraid-user...@googlegroups.com.

Oleksandr Mandryk

unread,
Mar 6, 2017, 9:56:38 PM3/6/17
to TopBraid Suite Users
Hi Hogler,
thank you for reply!

Actually RDF/XML is pretty different from what I need. The biggest issue with RDF/XML for me is hierarchical structure of relations between nodes, 
for example if PARENT_NODE is parent of CHILD_NODE in RDF/XML it will look like this:

<CHILD_NODE>
 
 ... properties
 
 
<broader>
 
<PARENT_NODE>
 ...
 
<PARENT_NODE>
 
</broader>


</CHILD_NODE>


but I need something like this:

<CHILD_NODE>
 ... properties


 
<broader id="PARENT_NODE">
</CHILD_NODE>


<PARENT_NODE>
 ... properties
 
<narrower id="CHILD_NODE">
<PARENT_NODE>

so each node should be separate XML element.
Thanks.

Best regards,
Oleksandr Mandryk

Holger Knublauch

unread,
Mar 6, 2017, 10:07:44 PM3/6/17
to topbrai...@googlegroups.com
Whether resources are nested or remain top-level is a configuration option in the RDF/XML writer. In sml:ReturnRDF, try using sml:RDFXML versus sml:RDFXMLAbbrev (the abbrev option will produce nested objects). Have you tried this or would there be other differences from your planned output?

Holger

Oleksandr Mandryk

unread,
Mar 6, 2017, 10:26:46 PM3/6/17
to TopBraid Suite Users
Hi Hogler,

as far as I remember the nested resources was the main issue. I haven't tried approach that you suggested but as I can see
here http://www.topquadrant.com/sparqlmotion/lib.html#sml:ReturnRDF there is no such property in sml:ReturnRDF.

Could you please explain where I can specify sml:RDFXML / sml:RDFXMLAbbrev?

BTW: Do we have any alternatives (just in case) to this approach? I mean if I would like to build totally different XML from taxonomy RDF what would be the most appropriate way to do it?

Thank you very much!

Best regards,
Oleksandr Mandryk

Holger Knublauch

unread,
Mar 6, 2017, 10:49:27 PM3/6/17
to topbrai...@googlegroups.com
Try to use sml:serialization=sml:RDFXMLAbbrev at sml:ReturnRDF.

In general, the main alternatives for producing arbitrary XML are Semantic XML (via sml:ConvertRDFToXML) or SWP. SWP can produce any XML, assuming you turn each XML element into a subclass of ui:Element and each XML attribute into corresponding argument properties at these elements.

Holger

Oleksandr Mandryk

unread,
Mar 7, 2017, 5:48:35 AM3/7/17
to TopBraid Suite Users
Hi Holger,
thank you very much for your advice!

I've created new SPARQLMotion script with such modules: spl:Argument -> sml:ApplyConstruct -> sml:ReturnRDF, where in  sml:ApplyConstruct I put this constructQuery:
CONSTRUCT {
   
?a ?b ?c .
}
WHERE
{
    BIND
(smf:buildURI("{?1}", ?projectGraph) AS ?graphName) .
    GRAPH
?graphName {
       
?a ?b ?c .
   
} .
}

and sml:RDFXMLAbbrev in sml:ReturnRDF 

but it produces the same output with sml:RDFXML.

Also I tried to change arg:serialization in teamwork:ExportEntireProjectPlugin for ExportToRDF, but it also produces the same output as with sml:RDFXML.

I'm working on EVN Version 5.2.0.v20160909-1520B.

Thank you.

Best regards,
Oleksandr Mandryk

Holger Knublauch

unread,
Mar 7, 2017, 10:14:01 PM3/7/17
to topbrai...@googlegroups.com
Hi Oleksandr,

I can confirm there is a problem and we are investigating why the output is the same. I will keep you posted.

Holger

Oleksandr Mandryk

unread,
Mar 8, 2017, 2:18:21 AM3/8/17
to TopBraid Suite Users
Hi Holger,

ok, thank you. I will wait for your answer.

Best regards,
Oleksandr Mandryk

Holger Knublauch

unread,
Mar 8, 2017, 7:11:38 PM3/8/17
to topbrai...@googlegroups.com
Hi Oleksandr,

we have discovered that the sml:RDFXML mode of sml:ReturnRDF indeed produces the same output as sml:RDFXMLAbbrev. Something must have changed in the underlying Jena writer's contract and this may have gone undetected for quite a while because most users have switched to Turtle or JSON-LD. I have just updated our code to use a different RDF/XML writer, and this fix will go into 5.3. The beta of 5.3 is planned for the end of this month, so if you urgently require a fix then I am afraid there is not much I can do right now.

The alternative would be to produce the RDF triples using SWP - that would give you fine tuned control over the exact output but is of course also quite a bit of work to get right. I have attached an example that produces

<rdf:Description rdf:about="http://aldi.de">
<rdfs:label>Test</rdfs:label>
</rdf:Description>
</rdf:RDF>

using SWP. Call it using http://localhost:8083/tbl/swp?_viewClass=rdfXMLInSWP:Example

Another option would be to create the exact RDF/XML with some 3rd party tool such as a Jena command line tool.

Apologies for the inconvenience!


Holger


On 7/03/2017 20:48, Oleksandr Mandryk wrote:
rdfXMLInSWP.ui.ttlx

Oleksandr Mandryk

unread,
Mar 9, 2017, 10:08:03 AM3/9/17
to TopBraid Suite Users
Hi Holger,

thank you very much for help!

Best regards,
Oleksandr Mandryk

Jack Hodges

unread,
Jul 1, 2021, 7:06:08 PM7/1/21
to TopBraid Suite Users
I am doing something similar to Oleksandr and I know that this is a very old thread but such is life. I 'am' doing round tripping but here is my SM workflow:

XML source --> XML-2-RDF module --> RDF-2-RDF using SPIN Map --> Insert to KG --> DO Stuff with resuting KG --> RDF-2-RDF Reversal using SPIN Map --> RDF-2-XML module --> Export to remote.

Because (I think) the sxml tags are in the first conversion but not to my ontology, they are not there when I want to export the XML and the result is empty. I tried to watch Holger's really old movie but it no longer seems to exist. My next stop is the SM help page but any help would be appreciated.

Jack

Holger Knublauch

unread,
Jul 1, 2021, 7:12:06 PM7/1/21
to topbrai...@googlegroups.com

Hi Jack,

you can execute the script up the RDF2XML step and export the resulting graph to a file to see what is actually part of that graph. I also suspect the SXML triples are not present. I assume you have a file with the sxml:element and sxml:attribute triples. Could you try to add this file to the script so that it directly becomes another import to the RDF2XML step, i.e. use ImportRDFFromWorkspace for the sxml file and then draw an edge from that file to the RDF2XML?

Holger

Reply all
Reply to author
Forward
0 new messages