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" xmlns:oadr="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: stev...@sv.cmu.edu
Phone: (650) 587-3780
Cell: (202) 316-6481
Skype: steverayconsulting
--
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.
For more options, visit https://groups.google.com/d/optout.
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: stev...@sv.cmu.edu
Phone: (650) 587-3780
Cell: (202) 316-6481
Skype: steverayconsulting
Virus-free. www.avg.com |
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…
Holger,
I see some enticing references to enabling endpoint updates in your literature for EVN. Specifically, from http://www.topquadrant.com/docs/5.1/_TopBraid_EVN_Developer_Guide_1802252.html :
3.3 EVN SPARQL Endpoint Update
SPARQL Update statements can be executed on EVN project graphs. By default, SPARQL Endpoint Updates are disabled. To enable updates set the "Enable SPARQL updates" to true in in the Server Configuration Parameters page. Access controls are also available for SPARQL Endpoint Updates. For more information on setup for SPARQL Endpoint update, see SPARQL Endpoint Update.
The final link above doesn’t work for me, but is this only available for EVN, or is there some way we can enable this for TBL?