- From: Olivier Rossel <olivier.rossel@gmail.com>
- Date: Tue, 3 Jun 2014 17:55:21 +0200
- To: "public-rdf-shapes@w3.org" <public-rdf-shapes@w3.org>
- Message-ID: <CAM0wMfQoiO5wwgqsV=6UYDJt=KdZYTV-LVPmmq-kBkD859_LqQ@mail.gmail.com>
Hi all.
I need to model a given constraint:
in a given set of resources, two properties must appear together, or none.
Let me be more specific:
any resource with a property "ex:a" of type "xsd:string" must be tested
against the <IssueShape> shape
and must PASS.
At the moment, here are my shapes:
###############
PREFIX ex: <http://ex.example/#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
start = <IssueShape>
<IssueShape> {
ex:a xsd:string,
(ex:state xsd:string,
ex:state2 xsd:string)?
}
###################
and here is my set of data:
###################
PREFIX ex: <http://ex.example/#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
<Issue1>
ex:a "a"
.
<Issue2>
ex:state "a";
ex:a "a"
.
#################
Here are my expectations:
<Issue2> is supposed to fail, whereas <Issue1> is supposed to be ok.
My experience with the online demos are:
-----
1) with http://www.w3.org/2013/ShEx/SimpleShExDemo
-----
<Issue1> PASS.
<Issue2> is not tested.
<Issue2> is in the remaining triples:
<Issue2> <http://ex.example/#state> "a".
<Issue2> <http://ex.example/#a> "a".
-----
2) with http://www.w3.org/2013/ShEx/FancyShExDemo and Pre-typed graph node:
<Issue1>
-----
PASS
-----
3) with http://www.w3.org/2013/ShEx/FancyShExDemo and Pre-typed graph node:
<Issue2>
-----
FAIL {
Errors:
☹ mixed matches of <http://ex.example/#state> <
http://www.w3.org/2001/XMLSchema#string>,
<http://ex.example/#state2> <http://www.w3.org/2001/XMLSchema#string>
passed: [[ PASS {
<http://ex.example/#state> <http://www.w3.org/2001/XMLSchema#string>
matched by <Issue2> <http://ex.example/#state> "a".
}]]
empty: [[ FAIL {
<http://ex.example/#state2> <http://www.w3.org/2001/XMLSchema#string>
permitted to not match
}]]
Matches:
<http://ex.example/#a> <http://www.w3.org/2001/XMLSchema#string> matched
by <Issue2> <http://ex.example/#a> "a".
<http://ex.example/#state> <http://www.w3.org/2001/XMLSchema#string>
matched by <Issue2> <http://ex.example/#state> "a".
<http://ex.example/#state2> <http://www.w3.org/2001/XMLSchema#string>
permitted to not match
}
-----
4) with http://www.w3.org/2013/ShEx/FancyShExDemo and selecting "Find node
types"
-----
I get this message: <Issue1> is a <IssueShape>
And no list of remaining triples.
----------------------------------------------------------------------------------------------------------------------------------
In short, I never get a report that clearly states:
<Issue1> was tested against the <IssueShape> shape and PASSed.
<Issue2> was tested against the <IssueShape> shape and FAILed.
Is there a way to get such a report with the actual ShEx spec and
implementation?
Is my requirement related to the concept of closed shapes? (still under
discussion, afaiu).
Received on Tuesday, 3 June 2014 15:56:08 UTC