Re: Targeting all subjects & objects regardless of predicate

Hello Irene,

You are correct, it does not. That was an error on my part, I missed that
it does not also include all the results returned by

SELECT DISTINCT ?s
WHERE {
    {
        ?s ?p ?o .
        FILTER NOT EXISTS {
            ?s a ?c .
            FILTER(?c IN (rdfs:Class, rdf:Property))
        }
    }
}


If I understand your comment correction regarding the SHACL Advanced
Features, SHACL is capable of performing the validation check?

I would love to see how that would be written...

Regards,
James


On Fri, Apr 10, 2020 at 5:08 PM Irene Polikoff <irene@topquadrant.com>
wrote:

> How does your query find resources that have no type?
>
> As for ensuring that the type in either a class or a property, you could
> for example do the following:
>
> ex:Shape1 a sh:NodeShape;
> sh:targetSubjectsOf rdf:type;
> sh:or (
> [
> sh:path rdf:type ;
> sh:class rdfs:Class ;
> ]
> [
> sh:path rdf:type ;
> sh:class rdf:Property ;
> ]
> ) .
>
> Btw, SHACL Advanced Features supports SPARQL-based targets
> https://w3c.github.io/shacl/shacl-af/.
>
> On Apr 10, 2020, at 4:21 PM, James Hudson <jameshudson3010@gmail.com>
> wrote:
>
> Hello,
>
> I asked a question on SO (
> https://stackoverflow.com/questions/60993789/targeting-all-nodes-for-validation
> ) regarding how to verify that every node in my graph had a rdf:type and
> that the type was ultimately either a rdfs:Class or rdf:Property. The
> response I received was that it was impossible with SHACL because:
>
> The problem is that none of the four built-in target types is sufficient
> to reach all subject/objects regardless of predicate.
>
> I was just wondering why such a target type does not exist or if there
> were plans to include such a target type in the future...?
>
> I was able to do what I needed to do with SPARQL with the following query:
>
>                     {
>                         ?s rdf:type+ ?o .
>                         FILTER NOT EXISTS {
>                             ?s rdf:type+ ?c .
>                             FILTER(?c IN (rdfs:Class, rdf:Property))
>                         }
>                     }
>
> but, I would have preferred to use SHACL.
>
> Regards,
> James
>
>
>

Received on Saturday, 11 April 2020 01:43:32 UTC