The system I’m building is part of a larger system that is able to issue SPARQL queries against arbitrary SPARQL endpoints, but is not able to issue RESTful calls to web services. So I am trying to provide such an endpoint that is able to perform a sequence of tasks (implemented as a SPARQLmotion script) such as accepting an XML message, converting it to triples, SPIN-mapping it to a neutral schema and adding the mapped triples to our triple-store (currently using the native store in TBL). I have been doing it by bypassing the web service call, and embedding the associated SPIN function directly in the SPARQL query to the endpoint. The script gets all the way through until the final step of adding the mapped triples to the triple store.
I will add that your theory sounds right, because the same approach works fine for a call that issues a SELECT query against our triple store, then SPIN-maps the result back from our neutral schema to the native schema, then returns an XML encoding of the result. No new triples being INSERTed on this one, and it works. Hmm. I’ll need to talk to the team about alternatives… - Steve Steven R. Ray, Ph.D. Distinguished Research Fellow Carnegie Mellon University NASA Research Park Building 23 (MS 23-11) P.O. Box 1 Moffett Field, CA 94305-0001 Email: [email protected] Phone: (650) 587-3780 Cell: (202) 316-6481 Skype: steverayconsulting cid:[email protected] From: [email protected] [mailto:[email protected]] On Behalf Of Holger Knublauch Sent: Thursday, June 29, 2017 3:38 PM To: [email protected] Subject: Re: [topbraid-users] Getting tangled in XML parsing and encoding Quite possibly you are running into a locking issue: No SPARQL SELECT/CONSTRUCT query can have side effects such as writing new triples. So doing a sml:PerformUpdate as part of a SPARQL function is not a supported use case. Why do you plan to use the SPARQL end point in the first place. Is it because you want a certain response format? That could be achieved by other means, even from SPARQLMotion (or SWP for that matter). Holger On 30/06/2017 4:01, Steve Ray wrote: Holger, Thanks for the super-fast response. That solved my parsing problem. Unfortunately, the larger goal I am pursuing is still not working: I have defined a SPARQLMotion module / web service that takes several arguments, one of which is the XML message I was having trouble with, passed in as an xsd:string. The module works great when I call it using Postman. Now, I’m trying to get the same functionality, but using the SPARQL endpoint service (i.e. http://localhost:8083/tbl/sparql), where I send a SPARQL query, inside of which is a call to the SPIN function associated with my SPARQLMotion module. In this case, TBC accepts the call and progresses through the script until it comes to a PerformUpdate module. At this point, it is either hanging, or taking so long that after a half hour I manually stop TBC. My question: Does PerformUpdate behave differently when the SM script is called as a web service, versus my calling the SPIN function in a SPARQL endpoint query? The SPARQL code inside my PerformUpdate is quite simple: INSERT { GRAPH ?graphURI { ?s ?p ?o . } . } WHERE { ?s ?p ?o . } …where some newly created triples are added to the graph identified in ?graphURI. - Steve Steven R. Ray, Ph.D. Distinguished Research Fellow Carnegie Mellon University NASA Research Park Building 23 (MS 23-11) P.O. Box 1 Moffett Field, CA 94305-0001 Email: [email protected] Phone: (650) 587-3780 Cell: (202) 316-6481 Skype: steverayconsulting cid:[email protected] From: [email protected] [mailto:[email protected]] On Behalf Of Holger Knublauch Sent: Wednesday, June 28, 2017 4:50 PM To: [email protected] Subject: Re: [topbraid-users] Getting tangled in XML parsing and encoding You can use triple-quotes, as in SELECT ?xmlArgument WHERE { BIND ("""<?xml version="1.0"; encoding="UTF-8"?><oadr:oadrPayload xmlns:ei= <http://docs.oasis-open.org/ns/energyinterop/201110> "http://docs.oasis-open.org/ns/energyinterop/201110" xmlns:oadr= <http://openadr.org/oadr-2.0b/2012/07> "http://openadr.org/oadr-2.0b/2012/07" ><oadr:oadrSignedObject><oadr:oadrDistributeEvent ei:schemaVersion="2.0b"></oadr:oadrDistributeEvent></oadr:oadrSignedObject></oadr:oadrPayload>""" AS ?xmlArgument) } HTH Holger On 29/06/2017 9:32, Steve Ray (CMU) wrote: How does one pass an XML argument like the one below to a SPARQL query? See this trivial example: SELECT ?xmlArgument WHERE {BIND ("<?xml version="1.0"; encoding="UTF-8"?><oadr:oadrPayload xmlns:ei= <http://docs.oasis-open.org/ns/energyinterop/201110> "http://docs.oasis-open.org/ns/energyinterop/201110" xmlns:oadr= <http://openadr.org/oadr-2.0b/2012/07> "http://openadr.org/oadr-2.0b/2012/07" ><oadr:oadrSignedObject><oadr:oadrDistributeEvent ei:schemaVersion="2.0b"></oadr:oadrDistributeEvent></oadr:oadrSignedObject></oadr:oadrPayload>" AS ?xmlArgument)} I have tried: . replacing any embedded “ with " . doing that, plus replacing all the < and > with < and > . escaping the “ with \ . uuencoding the XML string …all with no luck. I’m doing my testing using the SPARQL query panel in TBC, and it chokes. Thanks in advance. - Steve Steven R. Ray, Ph.D. Distinguished Research Fellow Carnegie Mellon University NASA Research Park Building 23 (MS 23-11) P.O. Box 1 Moffett Field, CA 94305-0001 Email: [email protected] Phone: (650) 587-3780 Cell: (202) 316-6481 Skype: steverayconsulting cid:[email protected] -- 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 [email protected]. For more options, visit https://groups.google.com/d/optout. <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> Virus-free. <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> www.avg.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 [email protected]. For more options, visit https://groups.google.com/d/optout. -- 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 [email protected]. For more options, visit https://groups.google.com/d/optout. -- 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 [email protected]. For more options, visit https://groups.google.com/d/optout. -- 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 [email protected]. For more options, visit https://groups.google.com/d/optout.
