- From: Gary Murphy <gary@schemaapp.com>
- Date: Fri, 6 Sep 2019 12:02:29 -0400
- To: Irene Polikoff <irene@topquadrant.com>
- Cc: public-shacl@w3.org
- Message-ID: <CADnyxpvqX4L2c5Rg=Am6Y4H3Eh=eyNf9pY3SLDq6Bgf+Vn20AA@mail.gmail.com>
oh yes, much better. thank you! On Fri, Sep 6, 2019 at 11:06 AM Irene Polikoff <irene@topquadrant.com> wrote: > When a property shape is targeting class members, it applies to all class > members including those that are members of subclasses. > > Deactivating, de-activates the shape for all targets. There is no way to > keep it active for some and deactivate it for others. > > When different behavior is needed for different classes that have a common > parent, I could think of the following options: > > 1. Target at the lowest level of the class hierarchy that would work for > your purposes > > 2. Do not use class target (implicit of explicit). Instead use > sh:targetObjectOf on the inverse of the rdf:type property > > This may be the most appropriate solution in your situation. It would > target only resources that are subjects in the {?s rdf:type :Organization} > triples. Instances of subclasses would not be targeted. > > 3. Various other modeling options > > Such as creating “view Or abstract classes” for the purpose of targeting > only > > e.g. > > Organization > NonProfit Organization > Government Organization > Commercial Organization > Local Business > > Create a class > > Non-Commercial Organization > > Make NonProfit Organization and Government Organization its subclasses. > This could be done in addition to them being subclasses of Organization so > that Non-Commercial Organization is not part of the above hierarchy. > > Now, you could target Non-Commercial Organization. > > This is a variant on what Jakub’s proposed using SPARQL target approach. > > On Sep 6, 2019, at 10:33 AM, Gary Murphy <gary@schemaapp.com> wrote: > > Well that's the problem, the constraints don't always say the same thing, > or may have different sh:severity, or may be contingent on other properties > of the sub-class item or inverse paths; if there's no mechanism, then of > course there has to be a work-around, which may be to programmatically sift > the received shacl results to select out those pertaining to the actual > instance class before displaying them. > > I had hoped it may be possible to limit the scope of sh:deactivated in > some way, so in the sub-class, a rule could implicate the ancestor shape by > name, deactivate it, and then provide it's own class-specific test, but > then again, when the shacl engine encountered the parent rule, how could it > know? I'm thinking Jakub's method of excluding the subClass in the > ancestor rule may be the best option. > > > On Thu, Sep 5, 2019 at 3:10 PM Irene Polikoff <irene@topquadrant.com> > wrote: > >> Since LocalBusiness is a subclass of Organization, you do not need to >> repeat the constraint for it. >> >> It is already in place. There is no override since the constraints say >> the same thing. It is just unnecessary repetition. >> >> On Sep 5, 2019, at 2:32 PM, Gary Murphy <gary@schemaapp.com> wrote: >> >> >> Is it possible to specifically override a rule when applied to a subclass? >> >> I have >> schema:LocalBusiness rdfs:subClassOf schema:Organization >> >> and in the shapes rules for both I have >> sh:path schema:sameAs ; >> sh:minCount 1 ; >> >> and each has a message, but the message is (slightly) different; when I >> validate the file, I get both rules reporting, so there are two messages, >> one for Organization, one for LocalBusiness >> >> Is there a general pattern for avoiding this? I'd like to override the >> Organization rule rather than see both. >> >> -- >> Gary Lawrence Murphy <gary@schemaapp.com> - Hunch Manifest, 15 Wyndham N >> 'C', Guelph >> >> > > -- > Gary Lawrence Murphy <gary@schemaapp.com> - Hunch Manifest, 15 Wyndham N > 'C', Guelph > > > -- Gary Lawrence Murphy <gary@schemaapp.com> - Hunch Manifest, 15 Wyndham N 'C', Guelph
Received on Friday, 6 September 2019 16:03:05 UTC