Hi Rebecca,

the documentation of WorkflowStatusScript (the superclass of 
WorkflowStatusEntryScript) states:

---
The default query graph that these scripts run against is a sandbox above the 
workflow itself. The script may modify that graph using operations such as 
graph.add() and those changes will be applied to the sandbox where they will 
only be committed to the graph when all scripts have finished successfully.

Therefore scripts should not use graph.transaction. Using transactions would 
bypass the sandboxing mechanism and would commit the changes even if other 
parts of the script or other workflow status scripts fail with an exception.
---

So I think you can just remove the graph.transaction and do the graph.add 
directly. Have you tried this already?

Holger



> On 3 Jan 2024, at 6:02 pm, Rebecca Jackson <[email protected]> wrote:
> 
> As part of a custom workflow, we want to create an entry script for the 
> "Frozen for Review" status that queries the graph for any instances missing 
> an rdfs:label, then adds a new rdfs:label triple for each of these instances 
> with an auto-generated label. We want our SMEs to be able to review the 
> auto-generated labels before committing to production.
> 
> I have created a Web Service that successfully does this with the following 
> code (exact query removed as it is kind of long):
> 
> const rdfsLabel = graph.node({"qname": "rdfs:label"});
> const currentGraph = teamwork.currentMasterGraph();
> 
> let noLabels = graph.select(`SELECT * WHERE { <QUERY BODY HERE> }`);
> let results = noLabels.bindings;
> let labels = {}
> for (var i = 0; i < results.length; i++) {
> let r = results[i];
> let instance = r["s"]["uri"];
> 
> // some code to build a label goes here
> 
> let label = `<AUTO GENERATED LABEL HERE>`
> labels[instance] = label;
> graph.transaction(currentGraph, "Adding new label", () => {
> graph.add(graph.node({"uri": instance}), rdfsLabel, graph.node(label));
> });
> }
> labels;
> 
> I tried to tweak this to work for the dash:js of our 
> WorkflowStatusEntryScript, but I can't figure out the "currentGraph" to query 
> and use in the transaction. I know I can get the workflow tag, but that 
> results in an error if I try to use it as the graph ID:
> 
> org.topbraidlive.script.js.JSException: Unknown named graph 
> urn:x-tags:cir_workflow___rebecca_jackson_on_2024_jan_3_16_28_15 
> .. and if I just query the master graph, it will not return results that have 
> been added in the workflow. Thanks in advance for any help!
> 
> -- 
> The topics of this mailing list include TopBraid EDG and related technologies 
> such as SHACL.
> To post to this group, send email to [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].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/topbraid-users/a9048189-dd2a-4369-839c-31723542df8an%40googlegroups.com.

-- 
The topics of this mailing list include TopBraid EDG and related technologies 
such as SHACL.
To post to this group, send email to [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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/topbraid-users/E76FD489-3840-422B-BF36-3A5A057F7CEA%40topquadrant.com.

Reply via email to