On 2021-09-05 3:38 am, Scott Henninger wrote:
Unfortunately we do not have SPARQL support for SHACL, as we use an
old version of Semaphore. Maybe someday in the future.
In the meantime, what about if we drop the sub-property triple pattern
and have a known set of (or single) properties? Can that be expressed
in SHACL? Particularly the part about targeting multiple classes and
multiple parent classes.
Ok, if the properties are known you can use a pattern such as
sh:path [ sh:alternativePath ( ex:prop1 ex:prop2 ex:prop3 ) ] ; #
ex:prop1|ex:prop2|ex:prop3
The rest could roughly be
ex:Shape
a sh:NodeShape ;
sh:targetClass ex:Cls1 ;
sh:not [
sh:class ex:Cls2 ;
sh:property [
sh:path ex:parent ;
sh:qualifiedValueShape [
sh:or ( [ sh:class ex:Cls3 ] [ sh:class ex:Cls4 ] [
sh:class ex:Cls5 ] ) ;
] ;
sh:qualifiedMinCount 1 ;
) ;
sh:path [ sh:alternativePath ( ex:prop1 ex:prop2 ex:prop3 ) ]
; # ex:prop1|ex:prop2|ex:prop3
sh:minCount 1 ;
]
(above I assume your rdf:type matches can be expressed using sh:class,
i.e. subclasses also count).
I am not sure if the above represents your intention, but the mechanism
that I have used was basically to match the pattern that you have in the
WHERE clause and put a sh:not around it, meaning that a violation will
be reported if the instance of Cls1 also matches the given pattern.
Holger
Thanks, Holger! I appreciate the help.
-- Scott
On Sep 3, 2021, at 8:06 PM, Holger Knublauch <[email protected]>
wrote:
Hi Scott,
I may not fully understand your scenario, but I don't think this can
be expressed in SHACL Core. The problem is not so much in the
matching pattern (with the types etc) but in the subPropertyOf link.
The last line would need to become something with
sh:qualifiedMinCount 1 but you would need a sh:path and the sh:path
cannot be computed dynamically, i.e. you cannot use a variable that
gets computed using subPropertyOf. It would only work if you can know
the sub-properties in advance, when you write the constraint.
You have it formulated in SPARQL already, so why not stay in
SHACL-SPARQL? Does your target platform only support SHACL Core?
Holger
On 2021-09-03 4:01 pm, Scott Henninger wrote:
Another SHACL question for the topbraid-users group:
This one is a bit hard to explain, but the general idea is to create
a shape that requires two target classes, and the hierarchical
parent must be one of three classes, and the target cannot have any
properties are a sub-property of a property.
Working it out a bit I believe the following is the equivalent query
in SPARQL:
SELECT *
WHERE {
$this a ex:Cls1, ex:Cls2 .
{ $this ex:parent/rdf:type ex:Cls3 . }
UNION
{ $this ex:parent/rdf:type ex:Cls4 . }
UNION
{ $this ex:parent/rdf:type ex:Cls5. }
?prop rdfs:subPropertyOf ex:assoc .
$this ?prop ?x
}
Any $this found by this query would be a violation, based on the
last triple pattern - i.e. the rest are requirements,that are taken
up by other shapes. But what I want here is to report if the target
class combination, with appropriate parents, has one of the ex:assoc
sub-properties. To paraphrase: "Instances of Cls1 and Cls2 ...
cannot have any ex:assoc properties.
Any hints or direction on this would be useful. I've tried a few
things but have so far failed to make much headway.
Appreciate it and TIA.
-- Scott
--
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/3a55f966-d99d-4d32-875e-3e32a1f643c4n%40googlegroups.com
<https://groups.google.com/d/msgid/topbraid-users/3a55f966-d99d-4d32-875e-3e32a1f643c4n%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]
<mailto:[email protected]>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/topbraid-users/cca816bc-26db-4af4-2881-4ee80ff7866e%40topquadrant.com
<https://groups.google.com/d/msgid/topbraid-users/cca816bc-26db-4af4-2881-4ee80ff7866e%40topquadrant.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]
<mailto:[email protected]>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/topbraid-users/49677E3C-2B4F-488F-BB6B-90881B496020%40gmail.com
<https://groups.google.com/d/msgid/topbraid-users/49677E3C-2B4F-488F-BB6B-90881B496020%40gmail.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/baad61dd-3f49-84e6-09d1-8db48331c1af%40topquadrant.com.