Holger, that did the trick. Thanks! I felt like I had tried every possible 
combination, but apparently not that one.

Are there plans to develop a more detailed spec with examples, or maybe further 
tutorials for SHACL? With other specs/languages, it's possible to google around 
and find a similar example to see someone else did something. But with SHACL, I 
often feel alone in a giant, empty sea...

Carl

From: [email protected] <[email protected]> On 
Behalf Of Holger Knublauch
Sent: Wednesday, February 24, 2021 3:58 PM
To: [email protected]
Subject: Re: [topbraid-users] How to use sh:minus


*** External email: use caution ***


On 2021-02-25 9:44 am, [email protected]<mailto:[email protected]> 
wrote:
The SHACL-AF 
spec<https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fw3c.github.io%2Fshacl%2Fshacl-af%2F%23minus&data=04%7C01%7Ccburnett%40healthwise.org%7Ce9337db795af4bc22eed08d8d9201201%7Ccee5d4e942e548c28a033406fd5b9242%7C0%7C1%7C637498079069195732%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=1t7FN%2F4xE3N9dEXJgXbRtw%2BLlauByr3b06UGKtGoYfM%3D&reserved=0>
 contains a definition for a property called sh:minus, but I don't think my 
brain is able to parse it properly. Some examples might help, but the only one 
I've been able to find anywhere is in Example 3 of this 
tutorial<https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.topquadrant.com%2Fgraphql%2Fvalues.html%23examples-family&data=04%7C01%7Ccburnett%40healthwise.org%7Ce9337db795af4bc22eed08d8d9201201%7Ccee5d4e942e548c28a033406fd5b9242%7C0%7C1%7C637498079069205727%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=lwiDfH4cBc05m%2FA3guXTzMTxDcqD1TO6LE5pf4Jy9sQ%3D&reserved=0>,
 where sh:this is used as the object of sh:minus.

What I want to do is define a property shape that infers a list of values that 
is calculated by taking all the values of another property shape -- call it 
ex:includes -- and removing all the values of a third property shape -- call it 
ex:excludes. But I can't seem to write a valid sh:values statement that does 
this.

Is sh:minus even the right property to use for this? If so, what is the proper 
syntax? For what it's worth, this was one of my attempts:

  sh:values [
      sh:nodes [
          sh:path ex:includes;
        ] ;
      sh:minus ex:excludes;
    ] ;

sh:minus takes any node expression and will simply compute the nodes resulting 
from sh:nodes and then remove the nodes resulting from sh:minus.

Did you try
  sh:values [
      sh:nodes [ sh:path ex:includes ] ;
      sh:minus [ sh:path ex:excludes ];
    ] ;

The way you have written it would just exclude the property ex:excludes itself, 
because that's a constant term node expression

    
https://w3c.github.io/shacl/shacl-af/#node-expressions-constant<https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fw3c.github.io%2Fshacl%2Fshacl-af%2F%23node-expressions-constant&data=04%7C01%7Ccburnett%40healthwise.org%7Ce9337db795af4bc22eed08d8d9201201%7Ccee5d4e942e548c28a033406fd5b9242%7C0%7C1%7C637498079069205727%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=Bs8%2FXa9oGl%2FoST8v%2BIydwJIJwOZUwtdC0QCc9stN%2FTI%3D&reserved=0>

For the geeks here is the implementation of sh:minus

    public ExtendedIterator<RDFNode> eval(RDFNode focusNode, 
NodeExpressionContext context) {
        Set<RDFNode> sans = minus.eval(focusNode, context).toSet();
        return getInput().eval(focusNode, context).filterDrop(n -> 
sans.contains(n));
    }

Holger


--
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/ba2904a6-242d-4c9c-8ad3-ad334edfd5e1n%40googlegroups.com<https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.google.com%2Fd%2Fmsgid%2Ftopbraid-users%2Fba2904a6-242d-4c9c-8ad3-ad334edfd5e1n%2540googlegroups.com%3Futm_medium%3Demail%26utm_source%3Dfooter&data=04%7C01%7Ccburnett%40healthwise.org%7Ce9337db795af4bc22eed08d8d9201201%7Ccee5d4e942e548c28a033406fd5b9242%7C0%7C1%7C637498079069215724%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=w8TG5iNDkdB7t7V1AvoyMMaCAM3%2F%2FAR9HxJ%2BOisPza4%3D&reserved=0>.
--
You received this message because you are subscribed to a topic in the Google 
Groups "TopBraid Suite Users" group.
To unsubscribe from this topic, visit 
https://groups.google.com/d/topic/topbraid-users/I9rSZumVNVQ/unsubscribe<https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.google.com%2Fd%2Ftopic%2Ftopbraid-users%2FI9rSZumVNVQ%2Funsubscribe&data=04%7C01%7Ccburnett%40healthwise.org%7Ce9337db795af4bc22eed08d8d9201201%7Ccee5d4e942e548c28a033406fd5b9242%7C0%7C1%7C637498079069225720%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=Wlft0FsG8b0mcKyerJ04ArFCci9MnK2RPTZBFYX9DcQ%3D&reserved=0>.
To unsubscribe from this group and all its topics, 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/551b2dea-a35d-c1a9-d84b-a7059371c777%40topquadrant.com<https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.google.com%2Fd%2Fmsgid%2Ftopbraid-users%2F551b2dea-a35d-c1a9-d84b-a7059371c777%2540topquadrant.com%3Futm_medium%3Demail%26utm_source%3Dfooter&data=04%7C01%7Ccburnett%40healthwise.org%7Ce9337db795af4bc22eed08d8d9201201%7Ccee5d4e942e548c28a033406fd5b9242%7C0%7C1%7C637498079069225720%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=q7Su4fweVJeveKLaC1%2BpHPAUUUw%2BuKc%2FI1z5PGp40p4%3D&reserved=0>.

-- 
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/MWHPR19MB1598D1ED88DD623EE3F51502B79E9%40MWHPR19MB1598.namprd19.prod.outlook.com.

Reply via email to