- From: Jose Emilio Labra Gayo <jelabra@gmail.com>
- Date: Thu, 5 Nov 2015 06:47:30 +0100
- To: RDF Data Shapes Working Group <public-data-shapes-wg@w3.org>
- Message-ID: <CAJadXXK3T-a98uP4H=ydJiKxMDN+eUKqR9owZpiu_xmk6XLbSA@mail.gmail.com>
I would like to model optional properties which can appear or not, but in
case that they appear have a fixed value.
For example, in ShEx, I can define the following shape:
<UserShape> {
rdfs:label xsd:string,
ex:role ex:User ?
}
where ex:role is an optional property with a fixed value. If it appears, it
must be ex:User.
My first thought is that the previous example could be represented in Shacl
as:
:UserShape
a sh:Shape ;
sh:property [
sh:predicate rdfs:label ;
sh:datatype xsd:string ;
sh:minCount 1 ;
sh:maxCount 1 ;
] ;
sh:property [
sh:predicate :role ;
sh:hasValue :User ;
sh:minCount 0 ;
sh:maxCount 1 ;
] .
However,reading the spec, I am not sure about the interaction between
sh:minCount and sh:hasValue.
It appears that if we include sh:minCount 0, the spec says: "If the value
is 0 then this constraint is always satisfied and so may be omitted."
However, the definition of sh:hasValue says: "A validation result must be
produced if there is no triple that has the focus node as its subject, the
sh:predicate as its predicate and the sh:hasValue as its object." and the
SPARQL query seems to raise an error in that case, which means that the
following instance data woud not be valid:
:user1 rdfs:label "Student 2" .
Is is possible to combine optional properties with fixed values as in the
previous example or is there another way to define it?
--
-- Jose Labra
Received on Thursday, 5 November 2015 05:48:17 UTC