On 2021-09-22 11:52 am, Maatary Okouya wrote:
I think I get your point about focus node and value node, and i will wrap my head around that.

Weird that there is no one example that show that type of construction

ex:X a sh:NodeShape ;
sh:datatype xsd:string ;

But for the little i just understood,  this means that the two are equivalent ?

ex:aNodeShape a sh:NodeShape
  sh:targetClass ex:Person

This means "All constraints defined by aNodeShape apply to all instances of Person".

(But the shape above doesn't define any constraints)


ex:aNodeShape a sh:NodeShape
sh:class ex:Person

This means "The constraints defined by aNodeShape are: - all value nodes must be instances of Person"

(But the shape doesn't define a target so it doesn't apply to anything in the graph).

For something to "happen" you need to have both a target and constraints, but

ex:aNodeShape
    a sh:NodeShape ;
    sh:targetClass ex:Person ;
    sh:class ex:Person ;

would be meaningless because it will only apply to Persons and then verifies that they are in fact Persons which is of course true.

Holger




On Wednesday, September 22, 2021 at 2:33:56 AM UTC+1 Holger Knublauch wrote:

    Modified below

    Holger


    On 2021-09-22 11:31 am, Maatary Okouya wrote:
    Before, i go back and do my due diligence,

    Would be able to expand that into its full form, i mean
    representing explicitly the NodeShape

    ```
    ex:PersonAddressShape a sh:NodeShape ;
    sh:targetClass ex:Person ;
     sh:property [             //shprop1
       a sh:PropertyShape ;
       sh:path ex:address ;
       sh:or (
                   [                       //shprop2
                     a sh:NodeShape ;
                     sh:datatype xsd:string ;
                   ]
                   [                   //shprop3
                      a sh:NodeShape ;
                      sh:class ex:Address ;
                   ]
                 )
     ] .
    ```
    ```

    On Wednesday, September 22, 2021 at 2:20:22 AM UTC+1 Holger
    Knublauch wrote:


        On 2021-09-22 11:01 am, Maatary Okouya wrote:
        I assumed that in my example that the list is made up of
        blank Property Shape? am i correct ?

        ```
        ex:PersonAddressShape a sh:NodeShape ;
        sh:targetClass ex:Person ;
         sh:property [                   //shprop1
           sh:path ex:address ;
           sh:or (
                       [                             //shprop2
                         sh:datatype xsd:string ;
                       ]
                       [                         //shprop3
                          sh:class ex:Address ;
                       ]
                     )
         ] .
        ```

        The prop2 and prop3 constraints above are node shapes. But
        they are applied to all value nodes of the surrounding
        property shape.


         Hence i am interested in how one read this informally as
        much as formally. I don't think, as in the previous example
        above, sh:node or sh:property applies. Hence, little
        confused on this one

        In general, both types of shapes apply to a focus node and
        its value node(s). For node shapes the value node == the
        focus node. If you would do

        ex:PersonAddressShape
            sh:property [
                sh:path ex:address ;
                sh:or (
                    [
                        sh:path ex:postalCode ;
                        sh:maxLength 4 ;
                        sh:minCount 1 ;
                   ]

        ...

        this would mean that all value nodes of ex:address must have
        another property ex:postalCode with min length 4.

        So basically the terminology "focus node" and "value node"
        matters a lot. Once this is clear, both types of shapes can
        be used interchangeably.

        In the WG we had long long discussions about whether property
        shapes and node shapes can be used interchangeably, and I was
        hesitant and actually actively against too much flexibility
        here because it would confuse users. Sometimes less is more,
        and I believe your discussion and input from many other users
        have confirmed that the current design requires quite a level
        of abstraction to understand properly.

        Holger



        /Note: I have been  using  all of this thing  in my
        application without problem, as i had the intuition about
        how those works and the support of TBC. But recently i have
        had  to parse shacl, and that is when the issue of what is
        what exactly,  or what is allowed where comes in.
        /


        On Wednesday, September 22, 2021 at 1:44:32 AM UTC+1 Maatary
        Okouya wrote:

            Just to conclude and be complete  about my last
            question, which is all that sparked the original
            question actually:

            /(Note: I'm using rdfs:subclassOf informally here, just 
            to express the idea)/

            When we have

            ```
            ex:PersonAddressShape a sh:NodeShape ;
            sh:targetClass ex:Person ;
             sh:property [                     //shprop1
               sh:path ex:address ;
               sh:or (
                           [                               //shprop2
                             sh:datatype xsd:string ;
                           ]
                           [                           //shprop3
                              sh:class ex:Address ;
                           ]
                         )
             ] .
            ```
            Are we saying that shProp1 rdfs:subClassOf at least
            shProp1 or shProp2
            On Wednesday, September 22, 2021 at 1:35:56 AM UTC+1
            Maatary Okouya wrote:

                1 - Does that mean  that fundamentally, the list of
                shape in an sh:Or or sh:And is heterogenous ? That
                is, it may contain both propertyShape and NodeShape
                at the same time ?

                2 - This bring me to  the question of  how to read
                this ?

                >>>>
                ex:ExampleAndShape a sh:NodeShape ;
                   sh:targetNode ex:ValidInstance, ex:InvalidInstance ;
                   sh:and (
                                  ex:SuperShape
                                  [
                                      sh:path ex:property ;
                                      sh:maxCount 1 ;
                                   ] ) .
                >>>>

                2-1 - With respect to s:SuperShape: is it saying
                that ex:ExampleAndShap rdfs:SubClassOf ex:SuperShape  ?

                2-2 - With respect to
                 [
                      sh:path ex:property ;
                      sh:maxCount 1 ;
                 ]

                is it saying
                ex:ExampleAndShape *has the propertyshape i.e.
                sh:property*
                 [
                      sh:path ex:property ;
                      sh:maxCount 1 ;
                 ]

                ???
                On Wednesday, September 22, 2021 at 1:01:59 AM UTC+1
                Holger Knublauch wrote:


                    On 2021-09-22 9:54 am, Maatary Okouya wrote:

                    Taken from the specification:

                    >>>
                    A node shape is a shape
                    <https://www.w3.org/TR/shacl/#dfn-shape> in the
                    shapes graph
                    <https://www.w3.org/TR/shacl/#dfn-shapes-graph> that
                    is not the subject
                    <https://www.w3.org/TR/shacl/#dfn-subject> of a
                    triple
                    <https://www.w3.org/TR/shacl/#dfn-rdf-triple> with
                    *sh:path* as its predicate
                    <https://www.w3.org/TR/shacl/#dfn-predicate>.
                    SHACL instances
                    <https://www.w3.org/TR/shacl/#dfn-shacl-instance> of 
sh:NodeShape cannot
                    have a value
                    <https://www.w3.org/TR/shacl/#dfn-value> for
                    the property sh:path.
                    >>>

                    Yet when talking Or Constraint or And
                    Constraint, that takes list of shapes, we find
                    example like what follow:

                    >>>>
                    ex:SuperShape a sh:NodeShape ;
                       sh:property [ sh:path ex:property ;
                    sh:minCount 1 ; ] .

                    ex:ExampleAndShape a sh:NodeShape ;
                       sh:targetNode ex:ValidInstance,
                    ex:InvalidInstance ;
                       sh:and (
                    ex:SuperShape
                                      [
                                          sh:path ex:property ;
                    sh:maxCount 1 ;
                                       ] ) .
                    >>>>

                    With the following explanation

                    >>>
                    The following example illustrates the use
                    of sh:and in a shape to specify the condition
                    that certain focus nodes have exactly one value
                    of ex:property. This is achieved via the
                    conjunction of a separate named shape
                    (ex:SuperShape) which specifies the minimum
                    count, and a *blank node shape* that
                    additionally specifies the maximum count. As
                    shown here, sh:and can be used to implement a
                    specialization mechanism between shapes.
                    >>>>

                    How on earth is this a Blank Node shape if it
                    is the subject of an sh:path, am I missing
                    something ?

                    It should be a "blank property shape". I have
                    recorded a bug report to the spec's Errata:

                    https://github.com/w3c/data-shapes/issues/140
                    <https://github.com/w3c/data-shapes/issues/140>

                    Note the error is in an informative block of
                    text, so it doesn't change implementations.

                    Thanks for pointing this out
                    Holger



                    ```
                     [
                        sh:path ex:property ;
                         sh:maxCount 1 ;
                      ]
                    ```
-- 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/a36d9325-ff9a-4329-86a3-64a463798b1dn%40googlegroups.com
                    
<https://groups.google.com/d/msgid/topbraid-users/a36d9325-ff9a-4329-86a3-64a463798b1dn%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/50870f8e-6764-45f3-a775-5960442da2e0n%40googlegroups.com
        
<https://groups.google.com/d/msgid/topbraid-users/50870f8e-6764-45f3-a775-5960442da2e0n%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/7821072f-f4f9-4553-930c-e8fc13874afen%40googlegroups.com
    
<https://groups.google.com/d/msgid/topbraid-users/7821072f-f4f9-4553-930c-e8fc13874afen%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/741ae122-5e5e-44d2-9f42-08f845696536n%40googlegroups.com <https://groups.google.com/d/msgid/topbraid-users/741ae122-5e5e-44d2-9f42-08f845696536n%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/7e008fef-a46d-5594-f684-c3971d3ef037%40topquadrant.com.

Reply via email to