#BASE <http://base.example/#>
PREFIX ex: <http://ex.example/#>
PREFIX foaf: <http://xmlns.com/foaf/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

start = <IssueShape>  # Issue validation starts with <IssueShape>

<IssueShape> {
    ex:reportedBy @<PersonShape>,
    ex:reproducedBy @<EmployeeShape>?
}

VIRTUAL <PersonShape> {
    (  foaf:name xsd:string
     | foaf:givenName xsd:string+,
       foaf:familyName xsd:string),
    foaf:mbox IRI
}

<UserShape> &<PersonShape> {
    ex:representative @<EmployeeShape>
}

VIRTUAL <RepShape> {
    foaf:phone IRI+
}

<EmployeeShape> &<PersonShape> &<RepShape> {
}