Essentially, I am trying to take this property shape (where
ex:inferredValueProp1 is a separately defined property shape with inferred
values):
ex:Concept-inferredValueProp2
a sh:PropertyShape ;
sh:path ex:inferredValueProp2 ;
sh:values [
sh:path [
sh:inversePath [
sh:alternativePath (
ex:p1
ex:p2
) ;
] ;
] ;
sh:nodes [
sh:path ex:inferredValueProp1 ;
] ;
] ;
and add in this filter shape:
[
sh:nodes [ sh:path ex:inferredValueProp2 ] ;
sh:filterShape [
sh:property [
sh:path ex:filteredProperty ;
sh:hasValue ex:Value ;
] ;
] ;
]
Where can I place the filter shape?
On Thursday, January 27, 2022 at 4:26:44 PM UTC-8 Holger Knublauch wrote:
>
> On 2022-01-28 9:22 am, [email protected] wrote:
>
> So, is there a way to combine both of the things we've discussed in this
> thread into one sh:values expression?
> 1. a nested path expression that reuses the inferred sh:values from
> another property shape (you had me represent this with nested sh:path
> expressions, which worked)
> 2. a sh:filterShape with a single sh:nodes expression
>
> That is, is the real-world example in my last message expressible as a
> sh:values statement, or do I need to resort to SPARQL?
>
> I honestly don't understand what exactly you are trying to model, but in
> principle yes, sh:values expressions can be nested to arbitrary depth, and
> include filterShapes along the way. I just don't see which path values you
> are trying to infer from your turtle code below. Maybe try to express this
> with an example instance tree first?
>
> Holger
>
>
>
> On Wednesday, January 26, 2022 at 5:09:35 PM UTC-8 Holger Knublauch wrote:
>
>>
>> On 2022-01-27 11:02 am, Carl Burnett wrote:
>>
>> This helps! I now am able to create more complex sh:values rules that
>> re-use the inferred values from a different property shape.
>>
>>
>>
>> But I am now having some other problems with sh:values. I will probably
>> need to move away from generalized examples now and show you one of my
>> actual shapes:
>>
>>
>>
>> concept_schema:Rollup_Concept-includedVideos
>>
>> a sh:PropertyShape ;
>>
>> sh:path enterprise_schemas:includedVideos ;
>>
>> dash:readOnly true ;
>>
>> sh:class content_asset_schema:Video ;
>>
>> sh:group tosh:InferencesPropertyGroup ;
>>
>> sh:name "included videos (SHACL)" ;
>>
>> sh:order "4"^^xsd:decimal ;
>>
>> sh:values [
>>
>> sh:path [
>>
>> sh:inversePath [
>>
>> sh:alternativePath (
>>
>> content_asset_schema:level_1
>>
>> content_asset_schema:level_2
>>
>> content_asset_schema:level_3
>>
>> ) ;
>>
>> ] ;
>>
>> ] ;
>>
>> sh:filterShape [
>>
>> sh:property [
>>
>> sh:path content_asset_schema:lifecycle_stage ;
>>
>> sh:hasValue supplementary_concept_data:Active_Asset ;
>>
>> ] ;
>>
>> ] ;
>>
>> sh:nodes [
>>
>> sh:path enterprise_schemas:includedConcepts ;
>>
>> ] ;
>>
>> ] ;
>>
>> .
>>
>>
>>
>> This shape definition is accepted without errors by EDG’s * values *UI
>> widget, which diagrams it like this:
>>
>>
>>
>> This diagram seems incomplete, though, in two ways:
>>
>> 1. The right-most box should read *this (Video)*, because I have
>> specified that sh:class.
>> 2. My sh:filterShape seems to be ignored.
>>
>>
>>
>> Sure enough, the values produced by the shape, while respecting my *sh:path
>> *and *sh:nodes *statements, seem to ignore the sh:class I specified and
>> my sh:filterShape.
>>
>>
>>
>> What am I doing wrong here?
>>
>> You're mixing two node expressions into the same top level sh:values
>> blank node. Either use sh:filterShape or sh:path but not both. I don't know
>> what the chaining is supposed to look like, but if you want the values of
>> the upper path to go through the filter shape, try
>>
>> sh:values [
>> sh:filterShape [ ... ] ;
>> sh:nodes [
>> sh:path [ sh:inversePath [ ... ] ]
>> ]
>> ]
>>
>> See https://w3c.github.io/shacl/shacl-af/#node-expressions-filter-shape
>> for the spec - sh:filterShape can only have exactly one sh:nodes as input.
>>
>> The outer sh:class is unrelated to the sh:values rule and is only used
>> for validation purposes, not inferencing.
>>
>> Holger
>>
>>
>>
>>
>>
>>
>> *From:* [email protected] <[email protected]> *On
>> Behalf Of *Holger Knublauch
>> *Sent:* Tuesday, January 25, 2022 2:55 PM
>> *To:* [email protected]
>> *Subject:* Re: [topbraid-users] SHACL inferred data question
>>
>>
>>
>> *** External email: use caution ***
>>
>>
>>
>> On 2022-01-26 3:13 am, [email protected] wrote:
>>
>> Holger,
>>
>>
>>
>> I am able to create a second property shape, ex:shape2, that uses the
>> values from my ex:shape1 in a very simple, non-transformative way and
>> successfully returns the values of ex:shape1 for ex:shape2:
>>
>>
>>
>> ex:Class-shape2
>>
>> a sh:PropertyShape ;
>> sh:path ex:shape2 ;
>>
>> sh:class ex:Class
>>
>> sh:values [
>> sh:path ex:shape1 ;
>> ] ;
>> .
>>
>>
>>
>> But the moment I try to introduce any more complexity, my sh:values
>> statement stops returning any results. For example, I tried:
>>
>>
>>
>> sh:values [
>> sh:path ( ex:shape1 skos:broader ) ;
>> ]
>>
>> Right, complex path expressions don't work in that case. This would have
>> required a much more complex implementation that would hook into the
>> SPARQL-like path execution. Doable in principle, just not implemented yet.
>>
>> The alternative to the above is to use nested sh:path expressions, try
>> something like
>>
>> sh:values [
>> sh:path skos:broader ;
>> sh:nodes [
>> sh:path ex:shape1 ;
>> ]
>> ]
>>
>> This is based on the optional second argument (sh:nodes) that
>> https://w3c.github.io/shacl/shacl-af/#node-expressions-path
>> <https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fw3c.github.io%2Fshacl%2Fshacl-af%2F%23node-expressions-path&data=04%7C01%7Ccburnett%40healthwise.org%7Ccde6d575eba949e3f95908d9e055bb5f%7Ccee5d4e942e548c28a033406fd5b9242%7C0%7C1%7C637787481106696623%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=dpwSujvmDHyT%2FNZDFuEJ%2FTHXAuxceaKDmEU9Wset9qk%3D&reserved=0>
>>
>> takes and would first get all values of ex:shape1 and then get the broader
>> values of those. I believe this corresponds to your chained path expression.
>>
>> Hope this works, didn't test... :)
>>
>> Holger
>>
>>
>>
>>
>>
>> and got back no values for ex:shape2. (All of the values returned for
>> ex:shape1 have broader concepts, although they are defined in a different
>> EDG asset collection.)
>>
>>
>>
>> What am I doing wrong?
>>
>>
>>
>> thanks,
>>
>> Carl
>>
>> On Thursday, January 20, 2022 at 5:01:18 PM UTC-8 Holger Knublauch wrote:
>>
>>
>>
>> On 2022-01-21 10:54 am, [email protected] wrote:
>>
>> Thanks, Holger. My need in this case isn't to query inferred data using
>> SPARQL or GraphQL, but rather to reuse the inferred data as an input for
>> another EDG property shape with another sh:values rule in it. I think I'm
>> hearing that that's not possible.
>>
>> That scenario IS possible. You just need to use a path node expression,
>> see
>>
>> https://w3c.github.io/shacl/shacl-af/#node-expressions-path
>> <https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fw3c.github.io%2Fshacl%2Fshacl-af%2F%23node-expressions-path&data=04%7C01%7Ccburnett%40healthwise.org%7Ccde6d575eba949e3f95908d9e055bb5f%7Ccee5d4e942e548c28a033406fd5b9242%7C0%7C1%7C637787481106696623%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=dpwSujvmDHyT%2FNZDFuEJ%2FTHXAuxceaKDmEU9Wset9qk%3D&reserved=0>
>>
>> So if ex:prop1 is inferred then you can reference it in the sh:values
>> rule of another property using [ sh:path ex:prop1 ] and it will compute
>> that inference on the fly. This assumes that the receiving property using a
>> sh:values rule using SHACL node expressions, not SPARQL.
>>
>> Holger
>>
>>
>>
>>
>>
>> Can you point me to where I can read more about the materialization
>> option and decide whether there's a way to make that work for this use
>> case? Thanks.
>>
>> On Tuesday, January 18, 2022 at 4:03:32 PM UTC-8 Holger Knublauch wrote:
>>
>>
>>
>> On 2022-01-19 9:44 am, [email protected] wrote:
>>
>> I have defined a property shape and am successfully inferring its objects
>> using a sh:values rule.
>>
>>
>>
>> Can you remind me whether it is possible to use this property and its
>> inferred data in the sh:values rule for a different property shape? If so,
>> is there a special way that it needs to be done -- like, does the data I
>> inferred in the first property shape need to be materialized in some way
>> before I can make use of it? --
>>
>> In general, the RDF graphs that TopBraid operates on do not automatically
>> "see" the extra inferred triples, so they are not computed as RDF triples
>> on the fly. However, our higher level query languages GraphQL and
>> JavaScript/ADS do see them whenever they are requested. The user interface
>> goes through GraphQL and will therefore display these values as if they
>> were materialized.
>>
>> Now, within SHACL itself it depends on what you want to do. If you have
>> SHACL-AF inference rules including other sh:values rules you can safely use
>> path expressions
>> https://w3c.github.io/shacl/shacl-af/#node-expressions-path
>> <https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fw3c.github.io%2Fshacl%2Fshacl-af%2F%23node-expressions-path&data=04%7C01%7Ccburnett%40healthwise.org%7Ccde6d575eba949e3f95908d9e055bb5f%7Ccee5d4e942e548c28a033406fd5b9242%7C0%7C1%7C637787481106696623%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=dpwSujvmDHyT%2FNZDFuEJ%2FTHXAuxceaKDmEU9Wset9qk%3D&reserved=0>
>>
>> and the values will be computed on the fly. For SHACL constraints there is
>> no such mechanism unless you are expressing the constraints in SPARQL.
>> There you can use the magic property
>>
>> (?focusNode ?predicate) tosh:values ?result
>>
>> to query the inferred values.
>>
>> The other option, of course, is to materialize the inferences, e.g. using
>> the Inferences panel or the Transform tab.
>>
>> Does this help?
>>
>> 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].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/topbraid-users/d1fc11f5-f4a3-4d23-84b7-4a72666e6c3fn%40googlegroups.com
>>
>> <https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.google.com%2Fd%2Fmsgid%2Ftopbraid-users%2Fd1fc11f5-f4a3-4d23-84b7-4a72666e6c3fn%2540googlegroups.com%3Futm_medium%3Demail%26utm_source%3Dfooter&data=04%7C01%7Ccburnett%40healthwise.org%7Ccde6d575eba949e3f95908d9e055bb5f%7Ccee5d4e942e548c28a033406fd5b9242%7C0%7C1%7C637787481106696623%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=wS0pKR318uXyuZzk6mT5RFcj4bg5fK4skCMgHRc50Ng%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/3d423d68-4f62-4180-a44a-3143e6a1128fn%40googlegroups.com
>>
>> <https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.google.com%2Fd%2Fmsgid%2Ftopbraid-users%2F3d423d68-4f62-4180-a44a-3143e6a1128fn%2540googlegroups.com%3Futm_medium%3Demail%26utm_source%3Dfooter&data=04%7C01%7Ccburnett%40healthwise.org%7Ccde6d575eba949e3f95908d9e055bb5f%7Ccee5d4e942e548c28a033406fd5b9242%7C0%7C1%7C637787481106696623%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=Z3wlqoD3PFcY4QKCnK7nyCxUXvjxJDvC9Mvrsi5v790%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/6cd4990a-f08d-4461-b0bf-a15468f8d948n%40googlegroups.com
>>
>> <https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.google.com%2Fd%2Fmsgid%2Ftopbraid-users%2F6cd4990a-f08d-4461-b0bf-a15468f8d948n%2540googlegroups.com%3Futm_medium%3Demail%26utm_source%3Dfooter&data=04%7C01%7Ccburnett%40healthwise.org%7Ccde6d575eba949e3f95908d9e055bb5f%7Ccee5d4e942e548c28a033406fd5b9242%7C0%7C1%7C637787481106696623%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=lF8JMGy7bEbMee%2Fb8z%2B5AY6ufTdP0Owgbq6gdAk8hQw%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/b4pARn09t3s/unsubscribe
>> <https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.google.com%2Fd%2Ftopic%2Ftopbraid-users%2Fb4pARn09t3s%2Funsubscribe&data=04%7C01%7Ccburnett%40healthwise.org%7Ccde6d575eba949e3f95908d9e055bb5f%7Ccee5d4e942e548c28a033406fd5b9242%7C0%7C1%7C637787481106696623%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=5D41EYjh8Mba2NUflnNpNv8k5OL6rPCzG0xw1MnyjC8%3D&reserved=0>
>> .
>> To unsubscribe from this group and all its topics, send an email to
>> [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/topbraid-users/38344e6d-c2b1-bf0f-e5df-3f77435cdedc%40topquadrant.com
>>
>> <https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.google.com%2Fd%2Fmsgid%2Ftopbraid-users%2F38344e6d-c2b1-bf0f-e5df-3f77435cdedc%2540topquadrant.com%3Futm_medium%3Demail%26utm_source%3Dfooter&data=04%7C01%7Ccburnett%40healthwise.org%7Ccde6d575eba949e3f95908d9e055bb5f%7Ccee5d4e942e548c28a033406fd5b9242%7C0%7C1%7C637787481106696623%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=08dGAeKPyEHQFQI0U8K7y26bxhN9yYgqwdZg7z6nTlA%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/MWHPR19MB1598DD7C579AE45BF0DD6679B7219%40MWHPR19MB1598.namprd19.prod.outlook.com
>>
>> <https://groups.google.com/d/msgid/topbraid-users/MWHPR19MB1598DD7C579AE45BF0DD6679B7219%40MWHPR19MB1598.namprd19.prod.outlook.com?utm_medium=email&utm_source=footer>
>> .
>>
>> --
> 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/22935818-ca3f-42dc-bc0e-8866b06a7698n%40googlegroups.com
>
> <https://groups.google.com/d/msgid/topbraid-users/22935818-ca3f-42dc-bc0e-8866b06a7698n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
>
--
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/8b6eaee6-6652-4558-af37-554443db6411n%40googlegroups.com.