- 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
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