#BASE <http://base.example/#>
PREFIX ex: <http://ex.example/#>
PREFIX foaf: <http://foaf.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:state (ex:unassigned ex:assigned),
ex:reportedBy @<UserShape>,
ex:reportedOn xsd:dateTime,
(ex:reproducedBy @<EmployeeShape>,
ex:reproducedOn xsd:dateTime)?,
ex:related @<IssueShape>*
}
<UserShape> {
(foaf:name xsd:string
| foaf:givenName xsd:string+,
foaf:familyName xsd:string),
foaf:mbox IRI
}
<EmployeeShape> {
foaf:givenName xsd:string+,
foaf:familyName xsd:string,
foaf:phone IRI+,
foaf:mbox IRI
}
#BASE <http://base.example/#>
PREFIX ex: <http://ex.example/#>
PREFIX foaf: <http://foaf.example/#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
<Issue1>
ex:state ex:unassigned ;
ex:reportedBy <User2> ;
ex:reportedOn "2013-01-23T10:18:00"^^xsd:dateTime ;
ex:reproducedBy <Thompson.J> ;
ex:reproducedOn "2013-01-23T11:00:00"^^xsd:dateTime ;
# ex:related <Issue2>, <Issue3>
.
<User2>
foaf:givenName "Bob" ;
foaf:familyName "Smith" ;
foaf:mbox <mailto:bob@example.org>
.
<Thompson.J>
foaf:givenName "Joe", "Joseph" ;
foaf:familyName "Thompson" ;
foaf:phone <tel:+456> ;
foaf:mbox <mailto:joe@example.org>
.
Comparing placement of
semantic extension tests:
test on triple:
test on group:
test on shape: