W3C home > Mailing lists > Public > public-data-shapes-wg@w3.org > March 2016

Re: type and instance and subclass in SHACL documents

From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
Date: Fri, 11 Mar 2016 14:09:30 -0800
To: Irene Polikoff <irene@topquadrant.com>, Holger Knublauch <holger@topquadrant.com>, public-data-shapes-wg@w3.org
Message-ID: <56E3421A.7000804@gmail.com>
This comment has nothing to do with the matter at hand.

SHACL defines "validate", which is the word that I used.  I used "validate" in
a context where it obviously refers to the SHACL notion of the word.

peter

On 03/11/2016 12:09 PM, Irene Polikoff wrote:
> I am not sure what you mean. RDFS is open world and doesn’t have any
> constraints. There is not really a notion of “in valid”.
> 
> Irene 
> 
> 
> On 3/11/16, 2:43 PM, "Peter F. Patel-Schneider" <pfpschneider@gmail.com>
> wrote:
> 
>> These statements are all quite easy to read.  They all come from
>> https://www.w3.org/TR/rdf-schema which is the user-friendly informal
>> definition of RDFS.
>>
>> These statements each show obvious differences between instance in RDFS
>> and
>> instance in SHACL.  Each of them can be easily used to generate SHACL
>> shapes
>> that behave differently when instance is changed from its SHACL meaning
>> to its
>> RDFS meaning.
>>
>> Consider the following shape (using obvious prefix declarations)
>>
>> sh:propertyShape a sh:Shape ;
>> sh:scopeClass rdf:Property ;
>> sh:property [ sh:predicate rdfs:label ;
>>               sh:minCount 1 ] .
>>
>> The data graph (using obvious prefix declarations)
>>
>> rdfs:range ex:label "range" .
>>
>> validates against this shape under SHACL instance but not under RDFS
>> instance.
>>
>> peter
>>
>>
>>
>> On 03/11/2016 10:17 AM, Irene Polikoff wrote:
>>> Peter,
>>>
>>> This is a long list of statements and would require significant time to
>>> examine each. I don’t have unlimited amounts of time and I doubt that
>>> many
>>> people on the working group do.
>>>
>>> For this reason, I would like to make sure that all statements are
>>> relevant. Currently, just glancing at this quickly, I have doubts that
>>> they are. For example:
>>>
>>>  """rdfs:range is an instance of rdf:Property"""
>>>
>>> Not in SHACL.
>>>
>>>
>>> Does SHACL even use rdfs:range?
>>>
>>> Irene 
>>>
>>>
>>>
>>> On 3/11/16, 12:27 PM, "Peter F. Patel-Schneider"
>>> <pfpschneider@gmail.com>
>>> wrote:
>>>
>>>> These quotes appear to be from RDF Schema 1.1,
>>>> https://www.w3.org/TR/rdf-schema/
>>>>
>>> >From that document:
>>>> This document is intended to provide a clear specification of RDF
>>>> Schema
>>>> to
>>>> those who find the formal semantics specification [RDF11-MT] daunting.
>>>> Thus,
>>>> this document duplicates material also specified in the RDF Semantics
>>>> specification. Where there is disagreement between this document and
>>>> the
>>>> RDF
>>>> Semantics specification, the RDF Semantics specification should be
>>>> taken
>>>> to be
>>>> correct.
>>>>
>>>> But let's stick with this document.
>>>>
>>>> """All things described by RDF are called resources, and are instances
>>>> of
>>>> the
>>>> class rdfs:Resource. This is the class of everything. All other classes
>>>> are
>>>> subclasses of this class. rdfs:Resource is an instance of
>>>> rdfs:Class."""
>>>>
>>>> Not in SHACL.
>>>>
>>>> """2.2 rdfs:Class
>>>> This is the class of resources that are RDF classes. rdfs:Class is an
>>>> instance
>>>> of rdfs:Class."""
>>>>
>>>> Not in SHACL.
>>>>
>>>> """rdfs:Literal is an instance of rdfs:Class. rdfs:Literal is a
>>>> subclass
>>>> of
>>>> rdfs:Resource."""
>>>>
>>>> Not in SHACL.
>>>>
>>>> """rdf:Property is an instance of rdfs:Class."""
>>>>
>>>> Not in SHACL.
>>>>
>>>> """rdfs:range is an instance of rdf:Property"""
>>>>
>>>> Not in SHACL.
>>>>
>>>> """The triple
>>>>    P rdfs:range C
>>>> states that P is an instance of the class rdf:Property, that C is an
>>>> instance
>>>> of the class rdfs:Class and that the resources denoted by the objects
>>>> of
>>>> triples whose predicate is P are instances of the class C."""
>>>>
>>>> Not in SHACL.
>>>>
>>>> """A triple of the form:
>>>>    P rdfs:domain C
>>>> states that P is an instance of the class rdf:Property, that C is a
>>>> instance
>>>> of the class rdfs:Class and that the resources denoted by the subjects
>>>> of
>>>> triples whose predicate is P are instances of the class C."""
>>>>
>>>> Not in SHACL.
>>>>
>>>> """The property rdfs:subClassOf is an instance of rdf:Property that is
>>>> used to
>>>> state that all the instances of one class are instances of another."""
>>>>
>>>> Not in SHACL, partly because SHACL doesn't use this definition of
>>>> instance.
>>>>
>>>> """The property rdfs:subPropertyOf is an instance of rdf:Property that
>>>> is
>>>> used
>>>> to state that all resources related by one property are also related by
>>>> another."""
>>>>
>>>> Not in SHACL, and this can have large impacts on instance.
>>>>
>>>> """A triple of the form:
>>>>    P1 rdfs:subPropertyOf P2
>>>> states that P1 is an instance of rdf:Property, P2 is an instance of
>>>> rdf:Property and P1 is a subproperty of P2. The rdfs:subPropertyOf
>>>> property is
>>>> transitive."""
>>>>
>>>> Not in SHACL.
>>>>
>>>> """rdfs:label is an instance of rdf:Property"""
>>>>
>>>> Not in SHACL.
>>>>
>>>> ""rdfs:comment is an instance of rdf:Property"""
>>>>
>>>> Not in SHACL.
>>>>
>>>> There are quite a few more of these.
>>>>
>>>>
>>>> So, SHACL uses RDF terms from RDFS, particularly rdfs:subClassOf, and
>>>> notions
>>> >from RDFS, notably instance, but in a way different from what they mean
>>>> in
>>>> RDFS (and RDF).   The SHACL specification documents need to distinguish
>>>> their
>>>> use of these well-known terms from their dominant meaning.
>>>>
>>>>
>>>>
>>>> peter
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On 03/07/2016 03:00 PM, Irene Polikoff wrote:
>>>>> rdfs:subClassOf is defined as follows:
>>>>>
>>>>> "The property rdfs:subClassOf is an instance of rdf:Property that is
>>>>> used
>>>>> to state that all the instances of one class are instances of another.
>>>>> 		A triple of the form:
>>>>> 		
>>>>>   C1 rdfs:subClassOf C2
>>>>>
>>>>> states that C1 is an instance of rdfs:Class, C2 is an instance of
>>>>> rdfs:Class and C1 is a subclass of C2. The rdfs:subClassOf property is
>>>>> transitive."
>>>>>
>>>>> This definition doesn¹t really require for any inferred triples to be
>>>>> present.
>>>>>
>>>>>
>>>>> Is there anything in SHACL¹s use of rdfs:subClassOf that is
>>>>> contradictory
>>>>> to the above definition?
>>>>>
>>>>> The only wording close to the definition of the word ³instance² that I
>>>>> found in the specs is:
>>>>>
>>>>> "The members of a class are known as instances of the class.²
>>>>>
>>>>>
>>>>> Finally, rdf:type is described in the RDFS spec as
>>>>>
>>>>> "The rdf:type property may be used to state that a resource is an
>>>>> instance
>>>>> of a class.²
>>>>>
>>>>> RDF specs don¹t talk about rdf:type.
>>>>>
>>>>>
>>>>> Is there anything in SHACL¹s use of the word ³instance" or of rdf:type
>>>>> that contradicts this definition? If so, what is it?
>>>>>
>>>>>
>>>>>
>>>>> Irene Polikoff
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On 3/7/16, 5:36 PM, "Holger Knublauch" <holger@topquadrant.com> wrote:
>>>>>
>>>>>> On 8/03/2016 1:51, Peter F. Patel-Schneider wrote:
>>>>>>> On 03/06/2016 08:46 PM, Holger Knublauch wrote:
>>>>>>>> Thanks for the feedback, Peter. I have tried to address it here:
>>>>>>> [...]
>>>>>>>
>>>>>>>> On 7/03/2016 6:59, Peter F. Patel-Schneider wrote:
>>>>>>>>> General
>>>>>>> [...]
>>>>>>>
>>>>>>>>> It is not sufficient to say in 1.1 that SHACL has unique versions
>>>>>>>>> of
>>>>>>>>> types
>>>>>>>>> and instances.  These notions are in very widespread use.  Each
>>>>>>>>> time
>>>>>>>>> that
>>>>>>>>> SHACL deviates from the common, accepted W3C practice it should be
>>>>>>>>> called
>>>>>>>>> out, e.g., "SHACL type" or "SHACL instance".
>>>>>>>> I hope this doesn't need to be repeated each time as this may
>>>>>>>> render
>>>>>>>> the
>>>>>>>> document harder to read. Furthermore, the terms "SHACL type" and
>>>>>>>> "SHACL
>>>>>>>> instance" would first need to be formally defined too.
>>>>>>>>
>>>>>>>> Instead, I suggest we should define what "type", "instance" and
>>>>>>>> "subclass"
>>>>>>>> mean in the remainder of the document. I have put a corresponding
>>>>>>>> terminology
>>>>>>>> block at the end of section 1.1
>>>>>>> This is inadequate.
>>>>>>>
>>>>>>> SHACL uses RDF graphs and RDFS vocabulary.  There are already
>>>>>>> definitions of
>>>>>>> type and instance and subclass that come from RDF and RDFS.  SHACL
>>>>>>> needs to
>>>>>>> differentiate its version of type and instance and subclass from
>>>>>>> these
>>>>>>> dominant notions and this can only be reliably done by qualifying
>>>>>>> them
>>>>>>> each
>>>>>>> time they appear in formal SHACL documents.
>>>>>>>
>>>>>>> Alternatively the SHACL document could use different words for these
>>>>>>> relationships or could restrict the inputs that it handles so that
>>>>>>> it
>>>>>>> uses the
>>>>>>> dominant versions of type and instance and subclass.
>>>>>>
>>>>>> My interpretation of the situation is
>>>>>>
>>>>>> - RDF and RDFS define the IRIs of vocabulary terms rdf:type and
>>>>>> rdfs:subClassOf
>>>>>> - terms like subclass, type and instance already existed before RDFS
>>>>>> and
>>>>>> carry intuitive meaning
>>>>>> - there is no need to over-complicate a situation that is already
>>>>>> clear
>>>>>> to most readers
>>>>>>
>>>>>> The only difference between our definitions of the terms is that you
>>>>>> think that subclassing must always require inferences (domain, ranges
>>>>>> etc). I believe these concepts are orthogonal. Some rdfs:subClassOf
>>>>>> triples may be the result of inferencing, but it doesn't matter to
>>>>>> SHACL
>>>>>> where they came from. As long as we make this clear in the
>>>>>> beginning, I
>>>>>> hope we can keep the document intuitive and not over-complicate it.
>>>>>>
>>>>>> Holger
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>
>>>
> 
> 
Received on Friday, 11 March 2016 22:10:01 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 19:30:30 UTC