in ICV (untested):
Class: my:UserShape SubClassOf: ((foaf:name exactly 1 xsd:string) or ((foaf:givenName min 1 xsd:string) and (foaf:familyName exactly 1 xsd:string))) and (foaf:mbox min 0 owl:Thing) and (foaf:mbox max 1 owl:Thing) DataProperty: foaf:givenName DataProperty: foaf:familyName DataProperty: foaf:name ObjectProperty: foaf:mbox ObjectProperty: foaf:phone
similar to ShExC:
my:UserShape { (foaf:name xsd:string | foaf:givenName xsd:string+, foaf:familyName xsd:string), foaf:mbox IRI }
ex:status (ex:unassigned ex:assigned) ?