Thank you Holger!

I've just tried to use the script editor, although it won't execute 
transactions. Without transaction though (just using graph.addTriples with 
the data below), the code execute without errors or any other messages in 
the consoles but there's no output in the collection either.

Below is the code that I've used in the file:





<http://ibm.tvm.org/changescripts/taxonomycommitscript#TaxonomyCommitScript>

  a dash:CommitScript ;

  dash:js """console.log('Commit Script is running...');


// Get the current collection being edited

//const currentGraph = graph;

//const currentGraphURI = currentGraph.dataGraphURI;



const targetUserGraph = 
graph.withDataGraph('urn:x-evn-master:events_store_taxonomy', 
tbs.queryGraph);


// Define the existing ConceptScheme URI

let conceptSchemeURI = 
"http://www.ibm.com/standards/vocabulary/taxonomies/events_store_taxonomy/Events_root";;


// Generate URIs for the new top concepts

let topConcept1URI = 
"http://www.ibm.com/standards/vocabulary/taxonomies/events_store_taxonomy/Events_root/newtest";;


graph.transaction(

   targetUserGraph,

   "add top concepts to Events_root",

   function addTopConcepts() {

      let res = [

         [topConcept1URI, 
"http://www.w3.org/1999/02/22-rdf-syntax-ns#type";, 
"http://www.w3.org/2004/02/skos/core#Concept";],

         [topConcept1URI, "http://www.w3.org/2000/01/rdf-schema#label";, 
"Business Events"],

         [topConcept1URI, "http://www.w3.org/2004/02/skos/core#prefLabel";, 
"Business Events"],

         [topConcept1URI, "http://www.w3.org/2004/02/skos/core#inScheme";, 
conceptSchemeURI],

         [topConcept1URI, 
"http://www.w3.org/2004/02/skos/core#topConceptOf";, conceptSchemeURI],

         [conceptSchemeURI, 
"http://www.w3.org/2004/02/skos/core#hasTopConcept";, topConcept1URI]

      ];

      

      graph.addTriples(res);

   }

);



console.log('Commit Script finished.');

""" ;

  rdfs:comment """This CommitScript captures taxonomy edit events and 
stores them in the events_store_taxonomy.

It extracts the editor information from the graph URI, generates event 
metadata, and inserts

the event data using SPARQL INSERT queries. The script creates 
Events_Concept instances

with all required properties including taxo_id, graph_uri, timestamp, and 
editor information.


Note that this gets only executed when changes have really been asserted, 
i.e. unlike ChangeScripts they will not execute when the user merely does a 
Preview or a change gets rejected due to constraint violations.


To try this out, include/owl:import this file into any asset collection and 
make some changes.""" ;

  rdfs:label "Taxonomy Event Capture Commit Script" ;

.

On Saturday, August 9, 2025 at 11:40:24 AM UTC+3 Holger Knublauch wrote:

>
> On Aug 7, 2025, at 12:20, Valentin Chialda (vali fpv) <
> valentin...@gmail.com> wrote:
>
> Hi Jorrit, Holger
>
> I'm looking for a similar approach. For each taxonomy modification (e.g. 
> in labels) I want to trigger that update and append the "action" to another 
> taxonomy (in my case <urn:x-evn-master:events_store_taxonomy> )  that would 
> have the source taxonomy label, who edited, date, etc (basically keeping a 
> history of each taxo changes in a separate taxonomy for further external 
> process). 
>
> As this sounds like a modification to another asset collection, you cannot 
> use ChangeScript, but CommitScript sounds right.
>
>
> I'm new to ADS scripting inside EDG Sudio and without much documentation I 
> end up creating a ttl File, adding my code as text strings under dash:js 
> """ and finally included that file under a common ontology, which is 
> further included in all my taxonomies, so whenever a taxonomy gets edited 
> that CommitScript is triggered.  I'm not sure that's the normal development 
> practice with ADS or writing the code as strings there's no code completion 
> and I relate mostly on console logs with a Trial and error programming 
> approach.
>
> My normal practice is to use the Script Editor panel in Studio for ADS 
> development. This supports auto-complete, mouse-over-help and even has a 
> step-through debugger.
>
> [image: PastedGraphic-1.png]
>
> https://www.topquadrant.com/doc/8.5/scripting/index.html#scripting
>
> Please let us know if you’re stuck, e.g. by sending us what you have so 
> far and maybe we can help further.
>
> HTH
> Holger
>
> So the question is what's the best approach to go with the development if 
> I need to get the changes of a taxo using commitScript or similar?
>
> Thank you in advance!!
>
> Valentin
>
>
>
>
> On Friday, February 28, 2025 at 6:09:36 PM UTC+2 Jorrit Dorman wrote:
>
>> Thanks! I'll check it out
>>
>> On Thursday, 27 February 2025 at 11:53:44 UTC+1 Holger Knublauch wrote:
>>
>>>
>>> On Feb 27, 2025, at 11:45, Jorrit Dorman <jor...@gmail.com> wrote:
>>>
>>> Thanks Holger, that seems to work.
>>>
>>> I've made it like this, but I was wondering if there is a more 
>>> streamlined way to do this? Also, is there documentation available about 
>>> the tbs functions?
>>> const targetGraph <urn:x-evn-master:test> ;
>>>
>>> const targetUserGraph = graph.withDataGraph(
>>>    targetGraph,
>>>    function getUserGraph() {
>>>       return tbs.queryGraph();
>>>    }
>>> );
>>>
>>>
>>> Looks generally Ok but could be written more compact as
>>>
>>> const targetUserGraph = graph.withDataGraph(targetGraph, tbs.queryGraph)
>>>
>>> There is no documentation on the TBS functions as an HTML page. Instead, 
>>> you can just use auto-complete like this
>>>
>>> [image: PastedGraphic-1.png]
>>>
>>> to reach the documentation of each function. Also you can see most 
>>> functions when you go to Reports > Web Services Swagger.
>>>
>>> Holger
>>>
>>>
>>>
>>> graph.transaction(
>>>    targetUserGraph,
>>>    "change message"
>>>    function addTriples() {
>>>       graph.addTriples(res);
>>>    }
>>> );
>>> On Wednesday, 26 February 2025 at 19:06:56 UTC+1 Holger Knublauch wrote:
>>>
>>>> The change history is only activated when the URI of the graph includes 
>>>> the user name. In your case, does it, or is just something like 
>>>> urn:x-evn-master:geo ?
>>>>
>>>> One way of getting such graphs is to call tbs.queryGraph()
>>>>
>>>> Holger
>>>>
>>>>
>>>> On Feb 26, 2025, at 15:33, Jorrit Dorman <jor...@gmail.com> wrote:
>>>>
>>>> Hi,
>>>>
>>>> I have an ADS script in which I get an array of triples from the 
>>>> current graph, and I want to insert them in another graph. I use the 
>>>> following:
>>>> graph.transaction(
>>>>    targetGraph,
>>>>    "Changes history message",
>>>>    function addTriples() {
>>>>       graph.addTriples(resultSet);
>>>>    }
>>>> );
>>>>
>>>> This works as intended. The target Graph is updated with the resultSet. 
>>>> However I do not see this in the change history of the target Graph.
>>>>
>>>> If I reverse it, and from the targetGraph start a script like this:
>>>> const resultSet = graph.withDataGraph(
>>>>    sourceGraph,
>>>>    function getTriples() {
>>>>       return graph.construct(sparqlQuery);
>>>>    }
>>>> );
>>>> graph.transaction(
>>>>    null,
>>>>    "Changes history message",
>>>>    function addTriples() {
>>>>       graph.addTriples(resultSet);
>>>>    }
>>>> );
>>>>
>>>> then I do get the change history. Is it as inteded that I do not get an 
>>>> entry in the change history when writing from another graph? Is there 
>>>> something to I can do to get the changes?
>>>>
>>>> -- 
>>>> The topics of this mailing list include TopBraid EDG and related 
>>>> technologies such as SHACL.
>>>> 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.
>>>> To view this discussion visit 
>>>> https://groups.google.com/d/msgid/topbraid-users/360c4e85-30f3-482d-b7f7-20f5cbee5b58n%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/topbraid-users/360c4e85-30f3-482d-b7f7-20f5cbee5b58n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>>
>>>>
>>> -- 
>>> The topics of this mailing list include TopBraid EDG and related 
>>> technologies such as SHACL.
>>> 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.
>>>
>>> To view this discussion visit 
>>> https://groups.google.com/d/msgid/topbraid-users/4438b957-fc74-4952-a243-ce61a9feeb49n%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/topbraid-users/4438b957-fc74-4952-a243-ce61a9feeb49n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>>
>>>
> -- 
> The topics of this mailing list include TopBraid EDG and related 
> technologies such as SHACL.
> 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.
>
> To view this discussion visit 
> https://groups.google.com/d/msgid/topbraid-users/ae3581fc-e587-484a-9c14-cce418754621n%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/topbraid-users/ae3581fc-e587-484a-9c14-cce418754621n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
>
>

-- 
The topics of this mailing list include TopBraid EDG and related technologies 
such as SHACL.
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+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/topbraid-users/e69e8aec-83ca-4ab1-9372-c04796aeda8an%40googlegroups.com.

Reply via email to