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> ]
      ) ] ]
    ) ]
  ) ] .

