PREFIX ex: <http://a.example>
PREFIX sx: <http://www.w3.org/ns/shex#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

[] a sx:Schema ;
    sx:shapes (<http://a.example/S1>) .

<http://a.example/S1> a sx:ShapeDecl ; sx:shapeExpr [ a sx:ShapeAnd ;
    sx:shapeExprs ( [ a sx:ShapeOr ;
                sx:shapeExprs ( [ a sx:ShapeNot ;
                            sx:shapeExpr [ a sx:Shape ;
                                    sx:expression [ a sx:TripleConstraint ;
                                            sx:predicate <http://a.example/p1> ] ] ] [ a sx:Shape ;
                            sx:expression [ a sx:EachOf ;
                                    sx:expressions ( [ a sx:TripleConstraint ;
                                                sx:predicate <http://a.example/p1> ] [ a sx:TripleConstraint ;
                                                sx:predicate <http://a.example/p2> ] ) ] ] ) ] [ a sx:ShapeOr ;
                sx:shapeExprs ( [ a sx:ShapeNot ;
                            sx:shapeExpr [ a sx:Shape ;
                                    sx:expression [ a sx:TripleConstraint ;
                                            sx:predicate <http://a.example/p3> ] ] ] [ a sx:Shape ;
                            sx:expression [ a sx:EachOf ;
                                    sx:expressions ( [ a sx:TripleConstraint ;
                                                sx:predicate <http://a.example/p3> ] [ a sx:TripleConstraint ;
                                                sx:predicate <http://a.example/p4> ] ) ] ] ) ] [ a sx:ShapeOr ;
                sx:shapeExprs ( [ a sx:ShapeNot ;
                            sx:shapeExpr [ a sx:Shape ;
                                    sx:expression [ a sx:TripleConstraint ;
                                            sx:predicate <http://a.example/p5> ] ] ] [ a sx:Shape ;
                            sx:expression [ a sx:EachOf ;
                                    sx:expressions ( [ a sx:TripleConstraint ;
                                                sx:predicate <http://a.example/p5> ] [ a sx:TripleConstraint ;
                                                sx:predicate <http://a.example/p6> ] ) ] ] ) ] [ a sx:ShapeOr ;
                sx:shapeExprs ( [ a sx:Shape ;
                            sx:expression [ a sx:TripleConstraint ;
                                    sx:predicate <http://a.example/p1> ] ] [ a sx:Shape ;
                            sx:expression [ a sx:TripleConstraint ;
                                    sx:predicate <http://a.example/p3> ] ] [ a sx:Shape ;
                            sx:expression [ a sx:TripleConstraint ;
                                    sx:predicate <http://a.example/p5> ] ] ) ] ) ] .

