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 11:43:11 -0800
To: Irene Polikoff <irene@topquadrant.com>, Holger Knublauch <holger@topquadrant.com>, public-data-shapes-wg@w3.org
Message-ID: <56E31FCF.6080500@gmail.com>
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 19:43:43 UTC

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