@base <http://example.com/ns> .
@prefix ex: <http://example.com/ns#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

ex:PersonShape
	a sh:NodeShape  ;
	sh:targetClass ex:Person ;
        sh:or (
                    [sh:and( [ sh:or (ex:personShapeAgeInteger)] )]
                    [sh:and( [sh:and (ex:personShapeAgeLong [ sh:path ex:age; sh:or([sh:datatype xsd:long])])] )]
                  ).


ex:personShapeAgeInteger
                sh:path ex:age ;
        sh:datatype xsd:integer .

ex:personShapeAgeLong
         sh:path ex:age ;
         sh:datatype xsd:long .
