Hi Maja,
There may be other ways, but you can do this kind of thing with an EDG Edit
Rule as code. An Edit Rule can access the changes graph via a special graph
called ui:addedGraph (ui:deletedGraph is also available) and find new instances
being created and then search the current graph data for the max existing value
and just add one. Something like this should be close and search for that
property in any new instance of any class:
property-rules:Set_autoIncrementID
a teamwork:EditRule ;
teamwork:ruleMayUpdate true ;
ui:prototype """
<ui:forEach ui:resultSet=\"{#
SELECT DISTINCT ?i ?class
WHERE {
GRAPH ui:addedGraph {
?i a ?class .
FILTER NOT EXISTS {
?i myschema:autoIncrementID ?currentvalue .
} .
} .
} }\">
<ui:update ui:updateQuery=\"{!
INSERT {
?i myschema:autoIncrementID ?nextvalue .
}
WHERE {
GRAPH ui:addedGraph {
?i a ?class .
} .
{
SELECT (MAX(?num) AS ?maxvalue)
WHERE {
?noti a ?class .
?noti myschema:autoIncrementID ?id .
BIND (ceil(xsd:decimal(?id)) AS ?num) .
FILTER bound(?num) .
}
} .
BIND (COALESCE((xsd:integer(?maxvalue) + 1), 1) AS ?nextvalue) .
} }\"/>
</ui:forEach>
"""^^ui:Literal ;
rdfs:comment "When creating a new thing set the autoIncrementID property
value to be the next highest interger value" ;
rdfs:label "Default autoIncrementID" ;
rdfs:subClassOf teamwork:EditRules ;
.
Cheers,
David
> On 17 Mar 2021, at 12:09, majaCap <[email protected]> wrote:
>
> Hi,
>
> I have an int property in my ontology. Now, I would like to increment that
> property each time a new instance of a class is created, starting from a
> particular number. How would I approach this in EDG? Let's say the class
> instance is Animal with property autoIncrementID. Each time I create a new
> Animal I would like the autoIncrementID to be incremented by 1.
>
> Br,
> Maja
>
> --
> 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]
> <mailto:[email protected]>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/topbraid-users/01759423-765a-4084-a991-2caa46eb49e8n%40googlegroups.com
>
> <https://groups.google.com/d/msgid/topbraid-users/01759423-765a-4084-a991-2caa46eb49e8n%40googlegroups.com?utm_medium=email&utm_source=footer>.
UK +44 (0) 7788 561308
US +1 (336) 283-0808
--
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/6CE83445-5B78-424E-A92F-7E5FDE25E275%40topquadrant.com.