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

Re: type and instance and subclass in SHACL documents

From: Irene Polikoff <irene@topquadrant.com>
Date: Fri, 11 Mar 2016 15:09:04 -0500
To: "Peter F. Patel-Schneider" <pfpschneider@gmail.com>, Holger Knublauch <holger@topquadrant.com>, <public-data-shapes-wg@w3.org>
Message-ID: <D3088FBF.95B84%irene@topquadrant.com>
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 20:09:46 UTC

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