- From: Holger Knublauch <holger@topquadrant.com>
- Date: Fri, 29 Apr 2016 19:12:49 +1000
- To: "Peter F. Patel-Schneider" <pfpschneider@gmail.com>
- Cc: "public-data-shapes-wg@w3.org" <public-data-shapes-wg@w3.org>
Such as?
Sent from my iPad
> On 29 Apr 2016, at 5:50 PM, Peter F. Patel-Schneider <pfpschneider@gmail.com> wrote:
>
> Why not use instead a formulation that does not depend on whether the type is
> a datatype?
>
> peter
>
>
>> On 04/28/2016 08:17 PM, Holger Knublauch wrote:
>> Here is a proposal to replace sh:datatype and sh:class with sh:type,
>> implemented with the following semantics:
>>
>> sh:TypeConstraintComponent
>> a sh:ConstraintComponent ;
>> sh:parameter [
>> sh:predicate sh:type ;
>> ] ;
>> sh:context sh:InversePropertyConstraint ;
>> sh:context sh:NodeConstraint ;
>> sh:context sh:PropertyConstraint ;
>> sh:inversePropertyValidator dash:hasType ;
>> sh:nodeValidator dash:hasType ;
>> sh:propertyValidator dash:hasType ;
>> .
>>
>> dash:hasType
>> a sh:SPARQLAskValidator ;
>> sh:sparql """
>> ASK {
>> FILTER IF(dash:isDatatype($type),
>> datatype($value) = $type,
>> EXISTS { $value rdf:type/rdfs:subClassOf* $type })
>> } """ ;
>> .
>>
>> dash:isDatatype
>> a sh:SPARQLFunction ;
>> sh:parameter [
>> sh:predicate sh:type ;
>> ] ;
>> sh:returnType xsd:boolean ;
>> sh:sparql "ASK { FILTER (EXISTS { $type a rdfs:Datatype } ||
>> dash:isSystemDatatype($type)) }" ;
>> .
>>
>> dash:isSystemDatatype
>> a sh:SPARQLFunction ;
>> sh:parameter [
>> sh:predicate sh:type ;
>> ] ;
>> sh:returnType xsd:boolean ;
>> sh:sparql "ASK { FILTER ($type IN (xsd:string, xsd:integer, xsd:date, ...))
>> }" ;
>> .
>>
>> The definition above uses helper SHACL functions, but these can of course be
>> in-lined for the official document. The definition of such functions has the
>> benefit that the logic to determine whether something is a datatype or not can
>> be reused.
>>
>> The enumeration in isSystemDatatype would be extended with the other RDF 1.1
>> datatypes including rdf:langString and rdf:HTML.
>>
>> Open questions include whether the rdf:type rdfs:Datatype triple needs to be
>> in the shapes graph and whether we need to support subclasses of
>> rdfs:Datatype. I have no strong opinions, and changing this would be trivial.
>>
>> This would close ISSUE-141 for me, assuming we add a corresponding sh:typeIn.
>>
>> Holger
>>
>>
Received on Friday, 29 April 2016 09:13:23 UTC