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 09:27:49 -0800
To: Irene Polikoff <irene@topquadrant.com>, Holger Knublauch <holger@topquadrant.com>, public-data-shapes-wg@w3.org
Message-ID: <56E30015.8060203@gmail.com>
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 17:28:22 UTC

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