packages feed

hydra-rdf-0.17.2: src/main/haskell/Hydra/Shex/Syntax.hs

-- Note: this is an automatically generated file. Do not edit.

-- | A Shex model. Based on the BNF at:
-- |   https://github.com/shexSpec/grammar/blob/master/bnf

module Hydra.Shex.Syntax where

import qualified Hydra.Core as Core
import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)
import qualified Data.Scientific as Sci

-- | ShEx grammar production: Annotation ::= '//' Predicate (Iri | Literal)
data Annotation =
  Annotation {
    annotationPredicate :: Predicate,
    annotationAlts :: AnnotationAlts}
  deriving (Eq, Ord, Read, Show)

_Annotation = Core.Name "hydra.shex.syntax.Annotation"

_Annotation_Predicate = Core.Name "Predicate"

_Annotation_alts = Core.Name "alts"

-- | A synthetic Hydra type representing the alternatives of the ShEx Annotation production
data AnnotationAlts =
  AnnotationAltsIri Iri |
  AnnotationAltsLiteral Literal
  deriving (Eq, Ord, Read, Show)

_AnnotationAlts = Core.Name "hydra.shex.syntax.AnnotationAlts"

_AnnotationAlts_Iri = Core.Name "Iri"

_AnnotationAlts_Literal = Core.Name "Literal"

-- | ShEx grammar production: AtpNameLn ::= '@' PnameNs PnLocal
data AtpNameLn =
  AtpNameLn {
    atpNameLnPnameNs :: PnameNs,
    atpNameLnPnLocal :: PnLocal}
  deriving (Eq, Ord, Read, Show)

_AtpNameLn = Core.Name "hydra.shex.syntax.AtpNameLn"

_AtpNameLn_PnameNs = Core.Name "PnameNs"

_AtpNameLn_PnLocal = Core.Name "PnLocal"

-- | ShEx grammar production: AtpNameNs ::= '@' PnPrefix? ':'
newtype AtpNameNs =
  AtpNameNs {
    unAtpNameNs :: (Maybe PnPrefix)}
  deriving (Eq, Ord, Read, Show)

_AtpNameNs = Core.Name "hydra.shex.syntax.AtpNameNs"

-- | ShEx grammar production: BaseDecl ::= 'BASE' IriRef
newtype BaseDecl =
  BaseDecl {
    unBaseDecl :: IriRef}
  deriving (Eq, Ord, Read, Show)

_BaseDecl = Core.Name "hydra.shex.syntax.BaseDecl"

-- | ShEx grammar production: BlankNode ::= BlankNodeLabel
newtype BlankNode =
  BlankNode {
    unBlankNode :: BlankNodeLabel}
  deriving (Eq, Ord, Read, Show)

_BlankNode = Core.Name "hydra.shex.syntax.BlankNode"

-- | A component of the ShEx BlankNodeLabel production
data BlankNodeLabel =
  BlankNodeLabel {
    blankNodeLabelAlts :: BlankNodeLabelAlts,
    blankNodeLabelListOfAlts :: (Maybe [BlankNodeLabelListOfAltsOptionElmt]),
    blankNodeLabelPnChars :: PnChars}
  deriving (Eq, Ord, Read, Show)

_BlankNodeLabel = Core.Name "hydra.shex.syntax.BlankNodeLabel"

_BlankNodeLabel_alts = Core.Name "alts"

_BlankNodeLabel_ListOfAlts = Core.Name "ListOfAlts"

_BlankNodeLabel_PnChars = Core.Name "PnChars"

-- | A synthetic Hydra type representing the alternatives of the ShEx BlankNodeLabel production
data BlankNodeLabelAlts =
  BlankNodeLabelAltsPnCharsU PnCharsU |
  BlankNodeLabelAltsRegex String
  deriving (Eq, Ord, Read, Show)

_BlankNodeLabelAlts = Core.Name "hydra.shex.syntax.BlankNodeLabelAlts"

_BlankNodeLabelAlts_PnCharsU = Core.Name "PnCharsU"

_BlankNodeLabelAlts_regex = Core.Name "regex"

-- | A synthetic Hydra type representing one alternative of an optional list element within the ShEx BlankNodeLabel production
data BlankNodeLabelListOfAltsOptionElmt =
  BlankNodeLabelListOfAltsOptionElmtPnChars PnChars |
  BlankNodeLabelListOfAltsOptionElmtPeriod
  deriving (Eq, Ord, Read, Show)

_BlankNodeLabelListOfAltsOptionElmt = Core.Name "hydra.shex.syntax.BlankNodeLabelListOfAltsOptionElmt"

_BlankNodeLabelListOfAltsOptionElmt_PnChars = Core.Name "PnChars"

_BlankNodeLabelListOfAltsOptionElmt_Period = Core.Name "Period"

-- | ShEx grammar production: BooleanLiteral ::= 'true' | 'false'
data BooleanLiteral =
  BooleanLiteralTrue |
  BooleanLiteralFalse
  deriving (Eq, Ord, Read, Show)

_BooleanLiteral = Core.Name "hydra.shex.syntax.BooleanLiteral"

_BooleanLiteral_True = Core.Name "True"

_BooleanLiteral_False = Core.Name "False"

-- | A component of the ShEx BracketedTripleExpr production
data BracketedTripleExpr =
  BracketedTripleExpr {
    bracketedTripleExprInnerTripleExpr :: InnerTripleExpr,
    bracketedTripleExprCardinality :: (Maybe Cardinality),
    bracketedTripleExprListOfAnnotation :: [Annotation],
    bracketedTripleExprSemanticActions :: SemanticActions}
  deriving (Eq, Ord, Read, Show)

_BracketedTripleExpr = Core.Name "hydra.shex.syntax.BracketedTripleExpr"

_BracketedTripleExpr_InnerTripleExpr = Core.Name "InnerTripleExpr"

_BracketedTripleExpr_Cardinality = Core.Name "Cardinality"

_BracketedTripleExpr_listOfAnnotation = Core.Name "listOfAnnotation"

_BracketedTripleExpr_SemanticActions = Core.Name "SemanticActions"

-- | ShEx grammar production: Cardinality ::= '*' | '+' | '?' | RepeatRange
data Cardinality =
  CardinalityAst |
  CardinalityPlus |
  CardinalityQuest |
  CardinalityRepeatRange RepeatRange
  deriving (Eq, Ord, Read, Show)

_Cardinality = Core.Name "hydra.shex.syntax.Cardinality"

_Cardinality_Ast = Core.Name "Ast"

_Cardinality_Plus = Core.Name "Plus"

_Cardinality_Quest = Core.Name "Quest"

_Cardinality_RepeatRange = Core.Name "RepeatRange"

-- | A component of the ShEx Code production
newtype Code =
  Code {
    unCode :: [CodeElmt]}
  deriving (Eq, Ord, Read, Show)

_Code = Core.Name "hydra.shex.syntax.Code"

-- | ShEx grammar production: CodeDecl ::= '%' Iri (Code | '%')
data CodeDecl =
  CodeDecl {
    codeDeclIri :: Iri,
    codeDeclAlts :: CodeDeclAlts}
  deriving (Eq, Ord, Read, Show)

_CodeDecl = Core.Name "hydra.shex.syntax.CodeDecl"

_CodeDecl_Iri = Core.Name "Iri"

_CodeDecl_alts = Core.Name "alts"

-- | A synthetic Hydra type representing the alternatives of the ShEx CodeDecl production
data CodeDeclAlts =
  CodeDeclAltsCode Code |
  CodeDeclAltsPercnt
  deriving (Eq, Ord, Read, Show)

_CodeDeclAlts = Core.Name "hydra.shex.syntax.CodeDeclAlts"

_CodeDeclAlts_Code = Core.Name "Code"

_CodeDeclAlts_Percnt = Core.Name "Percnt"

-- | A synthetic Hydra type representing one element of the ShEx Code production
data CodeElmt =
  CodeElmtRegex String |
  CodeElmtSequence String |
  CodeElmtUchar Uchar
  deriving (Eq, Ord, Read, Show)

_CodeElmt = Core.Name "hydra.shex.syntax.CodeElmt"

_CodeElmt_regex = Core.Name "regex"

_CodeElmt_sequence = Core.Name "sequence"

_CodeElmt_Uchar = Core.Name "Uchar"

-- | ShEx grammar production: Datatype ::= Iri
newtype Datatype =
  Datatype {
    unDatatype :: Iri}
  deriving (Eq, Ord, Read, Show)

_Datatype = Core.Name "hydra.shex.syntax.Datatype"

-- | A component of the ShEx Decimal production
newtype Decimal =
  Decimal {
    unDecimal :: String}
  deriving (Eq, Ord, Read, Show)

_Decimal = Core.Name "hydra.shex.syntax.Decimal"

-- | ShEx grammar production: Directive ::= BaseDecl | PrefixDecl
data Directive =
  DirectiveBaseDecl BaseDecl |
  DirectivePrefixDecl PrefixDecl
  deriving (Eq, Ord, Read, Show)

_Directive = Core.Name "hydra.shex.syntax.Directive"

_Directive_BaseDecl = Core.Name "BaseDecl"

_Directive_PrefixDecl = Core.Name "PrefixDecl"

-- | A component of the ShEx Double production
newtype Double_ =
  Double_ {
    unDouble :: String}
  deriving (Eq, Ord, Read, Show)

_Double = Core.Name "hydra.shex.syntax.Double"

-- | ShEx grammar production: Echar ::= '\' [tbnrf\'']
newtype Echar =
  Echar {
    unEchar :: String}
  deriving (Eq, Ord, Read, Show)

_Echar = Core.Name "hydra.shex.syntax.Echar"

-- | ShEx grammar production: Exclusion ::= '-' Iri '~'?
newtype Exclusion =
  Exclusion {
    unExclusion :: Iri}
  deriving (Eq, Ord, Read, Show)

_Exclusion = Core.Name "hydra.shex.syntax.Exclusion"

-- | ShEx grammar production: ExtraPropertySet ::= 'EXTRA' Predicate+
newtype ExtraPropertySet =
  ExtraPropertySet {
    unExtraPropertySet :: [Predicate]}
  deriving (Eq, Ord, Read, Show)

_ExtraPropertySet = Core.Name "hydra.shex.syntax.ExtraPropertySet"

-- | ShEx grammar production: GroupTripleExpr ::= SingleElementGroup | MultiElementGroup
data GroupTripleExpr =
  GroupTripleExprSingleElementGroup SingleElementGroup |
  GroupTripleExprMultiElementGroup MultiElementGroup
  deriving (Eq, Ord, Read, Show)

_GroupTripleExpr = Core.Name "hydra.shex.syntax.GroupTripleExpr"

_GroupTripleExpr_SingleElementGroup = Core.Name "SingleElementGroup"

_GroupTripleExpr_MultiElementGroup = Core.Name "MultiElementGroup"

-- | ShEx grammar production: Hex ::= [0-9] | [A-F] | [a-f]
newtype Hex =
  Hex {
    unHex :: String}
  deriving (Eq, Ord, Read, Show)

_Hex = Core.Name "hydra.shex.syntax.Hex"

-- | ShEx grammar production: Include ::= '&' TripleExprLabel
newtype Include =
  Include {
    unInclude :: TripleExprLabel}
  deriving (Eq, Ord, Read, Show)

_Include = Core.Name "hydra.shex.syntax.Include"

-- | ShEx grammar production: IncludeSet ::= '&' ShapeExprLabel+
newtype IncludeSet =
  IncludeSet {
    unIncludeSet :: [ShapeExprLabel]}
  deriving (Eq, Ord, Read, Show)

_IncludeSet = Core.Name "hydra.shex.syntax.IncludeSet"

-- | ShEx grammar production: InlineShapeAnd ::= InlineShapeNot ('AND' InlineShapeNot)*
data InlineShapeAnd =
  InlineShapeAnd {
    inlineShapeAndInlineShapeNot :: InlineShapeNot,
    inlineShapeAndListOfSequence :: [InlineShapeNot]}
  deriving (Eq, Ord, Read, Show)

_InlineShapeAnd = Core.Name "hydra.shex.syntax.InlineShapeAnd"

_InlineShapeAnd_InlineShapeNot = Core.Name "InlineShapeNot"

_InlineShapeAnd_listOfSequence = Core.Name "listOfSequence"

-- | A component of the ShEx InlineShapeAtom production
data InlineShapeAtom =
  InlineShapeAtomSeq InlineShapeAtomSequence |
  InlineShapeAtomSeq2 InlineShapeAtomSequence2 |
  InlineShapeAtomSequence3 ShapeExpression |
  InlineShapeAtomPeriod
  deriving (Eq, Ord, Read, Show)

_InlineShapeAtom = Core.Name "hydra.shex.syntax.InlineShapeAtom"

_InlineShapeAtom_seq = Core.Name "seq"

_InlineShapeAtom_seq2 = Core.Name "seq2"

_InlineShapeAtom_sequence3 = Core.Name "sequence3"

_InlineShapeAtom_Period = Core.Name "Period"

-- | A synthetic Hydra type representing a sequence within the ShEx InlineShapeAtom production
data InlineShapeAtomSequence =
  InlineShapeAtomSequence {
    inlineShapeAtomSequenceNodeConstraint :: NodeConstraint,
    inlineShapeAtomSequenceInlineShapeOrRef :: (Maybe InlineShapeOrRef)}
  deriving (Eq, Ord, Read, Show)

_InlineShapeAtomSequence = Core.Name "hydra.shex.syntax.InlineShapeAtomSequence"

_InlineShapeAtomSequence_NodeConstraint = Core.Name "NodeConstraint"

_InlineShapeAtomSequence_InlineShapeOrRef = Core.Name "InlineShapeOrRef"

-- | A synthetic Hydra type representing a secondary sequence within the ShEx InlineShapeAtom production
data InlineShapeAtomSequence2 =
  InlineShapeAtomSequence2 {
    inlineShapeAtomSequence2InlineShapeOrRef :: InlineShapeOrRef,
    inlineShapeAtomSequence2NodeConstraint :: (Maybe NodeConstraint)}
  deriving (Eq, Ord, Read, Show)

_InlineShapeAtomSequence2 = Core.Name "hydra.shex.syntax.InlineShapeAtomSequence2"

_InlineShapeAtomSequence2_InlineShapeOrRef = Core.Name "InlineShapeOrRef"

_InlineShapeAtomSequence2_NodeConstraint = Core.Name "NodeConstraint"

-- | A component of the ShEx InlineShapeDefinition production
data InlineShapeDefinition =
  InlineShapeDefinition {
    inlineShapeDefinitionListOfAlts :: [InlineShapeDefinitionListOfAltsElmt],
    inlineShapeDefinitionTripleExpression :: (Maybe TripleExpression)}
  deriving (Eq, Ord, Read, Show)

_InlineShapeDefinition = Core.Name "hydra.shex.syntax.InlineShapeDefinition"

_InlineShapeDefinition_listOfAlts = Core.Name "listOfAlts"

_InlineShapeDefinition_TripleExpression = Core.Name "TripleExpression"

-- | A synthetic Hydra type representing one element of the ShEx InlineShapeDefinitionListOfAlts production
data InlineShapeDefinitionListOfAltsElmt =
  InlineShapeDefinitionListOfAltsElmtIncludeSet IncludeSet |
  InlineShapeDefinitionListOfAltsElmtExtraPropertySet ExtraPropertySet |
  InlineShapeDefinitionListOfAltsElmtCLOSED
  deriving (Eq, Ord, Read, Show)

_InlineShapeDefinitionListOfAltsElmt = Core.Name "hydra.shex.syntax.InlineShapeDefinitionListOfAltsElmt"

_InlineShapeDefinitionListOfAltsElmt_IncludeSet = Core.Name "IncludeSet"

_InlineShapeDefinitionListOfAltsElmt_ExtraPropertySet = Core.Name "ExtraPropertySet"

_InlineShapeDefinitionListOfAltsElmt_CLOSED = Core.Name "CLOSED"

-- | ShEx grammar production: InlineShapeExpression ::= InlineShapeOr
newtype InlineShapeExpression =
  InlineShapeExpression {
    unInlineShapeExpression :: InlineShapeOr}
  deriving (Eq, Ord, Read, Show)

_InlineShapeExpression = Core.Name "hydra.shex.syntax.InlineShapeExpression"

-- | ShEx grammar production: InlineShapeNot ::= 'NOT'? InlineShapeAtom
data InlineShapeNot =
  InlineShapeNot {
    inlineShapeNotNOT :: (Maybe ()),
    inlineShapeNotInlineShapeAtom :: InlineShapeAtom}
  deriving (Eq, Ord, Read, Show)

_InlineShapeNot = Core.Name "hydra.shex.syntax.InlineShapeNot"

_InlineShapeNot_NOT = Core.Name "NOT"

_InlineShapeNot_InlineShapeAtom = Core.Name "InlineShapeAtom"

-- | ShEx grammar production: InlineShapeOr ::= InlineShapeAnd ('OR' InlineShapeAnd)*
data InlineShapeOr =
  InlineShapeOr {
    inlineShapeOrShapeAnd :: ShapeAnd,
    inlineShapeOrListOfSequence :: [InlineShapeAnd]}
  deriving (Eq, Ord, Read, Show)

_InlineShapeOr = Core.Name "hydra.shex.syntax.InlineShapeOr"

_InlineShapeOr_ShapeAnd = Core.Name "ShapeAnd"

_InlineShapeOr_listOfSequence = Core.Name "listOfSequence"

-- | A component of the ShEx InlineShapeOrRef production
data InlineShapeOrRef =
  InlineShapeOrRefInlineShapeDefinition InlineShapeDefinition |
  InlineShapeOrRefAtpNameLn AtpNameLn |
  InlineShapeOrRefAtpNameNs AtpNameNs |
  InlineShapeOrRefSequence ShapeExprLabel
  deriving (Eq, Ord, Read, Show)

_InlineShapeOrRef = Core.Name "hydra.shex.syntax.InlineShapeOrRef"

_InlineShapeOrRef_InlineShapeDefinition = Core.Name "InlineShapeDefinition"

_InlineShapeOrRef_AtpNameLn = Core.Name "AtpNameLn"

_InlineShapeOrRef_AtpNameNs = Core.Name "AtpNameNs"

_InlineShapeOrRef_sequence = Core.Name "sequence"

-- | ShEx grammar production: InnerTripleExpr ::= MultiElementGroup | MultiElementOneOf
data InnerTripleExpr =
  InnerTripleExprMultiElementGroup MultiElementGroup |
  InnerTripleExprMultiElementOneOf MultiElementOneOf
  deriving (Eq, Ord, Read, Show)

_InnerTripleExpr = Core.Name "hydra.shex.syntax.InnerTripleExpr"

_InnerTripleExpr_MultiElementGroup = Core.Name "MultiElementGroup"

_InnerTripleExpr_MultiElementOneOf = Core.Name "MultiElementOneOf"

-- | A component of the ShEx Integer production
newtype Integer_ =
  Integer_ {
    unInteger :: String}
  deriving (Eq, Ord, Read, Show)

_Integer = Core.Name "hydra.shex.syntax.Integer"

-- | ShEx grammar production: Iri ::= IriRef | PrefixedName
data Iri =
  IriIriRef IriRef |
  IriPrefixedName PrefixedName
  deriving (Eq, Ord, Read, Show)

_Iri = Core.Name "hydra.shex.syntax.Iri"

_Iri_IriRef = Core.Name "IriRef"

_Iri_PrefixedName = Core.Name "PrefixedName"

-- | A component of the ShEx IriRange production
data IriRange =
  IriRangeSeq IriRangeSequence |
  IriRangeSequence2 [Exclusion]
  deriving (Eq, Ord, Read, Show)

_IriRange = Core.Name "hydra.shex.syntax.IriRange"

_IriRange_seq = Core.Name "seq"

_IriRange_sequence2 = Core.Name "sequence2"

-- | A synthetic Hydra type representing a sequence within the ShEx IriRange production
data IriRangeSequence =
  IriRangeSequence {
    iriRangeSequenceIri :: Iri,
    iriRangeSequenceSequence :: (Maybe [Exclusion])}
  deriving (Eq, Ord, Read, Show)

_IriRangeSequence = Core.Name "hydra.shex.syntax.IriRangeSequence"

_IriRangeSequence_Iri = Core.Name "Iri"

_IriRangeSequence_Sequence = Core.Name "Sequence"

-- | A component of the ShEx IriRef production
newtype IriRef =
  IriRef {
    unIriRef :: [IriRefElmt]}
  deriving (Eq, Ord, Read, Show)

_IriRef = Core.Name "hydra.shex.syntax.IriRef"

-- | A synthetic Hydra type representing one element of the ShEx IriRef production
data IriRefElmt =
  IriRefElmtRegex String |
  IriRefElmtUchar Uchar
  deriving (Eq, Ord, Read, Show)

_IriRefElmt = Core.Name "hydra.shex.syntax.IriRefElmt"

_IriRefElmt_regex = Core.Name "regex"

_IriRefElmt_Uchar = Core.Name "Uchar"

-- | A component of the ShEx LangTag production
newtype LangTag =
  LangTag {
    unLangTag :: String}
  deriving (Eq, Ord, Read, Show)

_LangTag = Core.Name "hydra.shex.syntax.LangTag"

-- | ShEx grammar production: Literal ::= RdfLiteral | NumericLiteral | BooleanLiteral
data Literal =
  LiteralRdfLiteral RdfLiteral |
  LiteralNumericLiteral NumericLiteral |
  LiteralBooleanLiteral BooleanLiteral
  deriving (Eq, Ord, Read, Show)

_Literal = Core.Name "hydra.shex.syntax.Literal"

_Literal_RdfLiteral = Core.Name "RdfLiteral"

_Literal_NumericLiteral = Core.Name "NumericLiteral"

_Literal_BooleanLiteral = Core.Name "BooleanLiteral"

-- | ShEx grammar production: MultiElementGroup ::= UnaryTripleExpr (';' UnaryTripleExpr)+ ';'?
data MultiElementGroup =
  MultiElementGroup {
    multiElementGroupUnaryTripleExpr :: UnaryTripleExpr,
    multiElementGroupListOfSequence :: [UnaryTripleExpr],
    multiElementGroupSemi :: (Maybe ())}
  deriving (Eq, Ord, Read, Show)

_MultiElementGroup = Core.Name "hydra.shex.syntax.MultiElementGroup"

_MultiElementGroup_UnaryTripleExpr = Core.Name "UnaryTripleExpr"

_MultiElementGroup_listOfSequence = Core.Name "listOfSequence"

_MultiElementGroup_Semi = Core.Name "Semi"

-- | ShEx grammar production: MultiElementOneOf ::= GroupTripleExpr ('|' GroupTripleExpr)+
data MultiElementOneOf =
  MultiElementOneOf {
    multiElementOneOfGroupTripleExpr :: GroupTripleExpr,
    multiElementOneOfListOfSequence :: [GroupTripleExpr]}
  deriving (Eq, Ord, Read, Show)

_MultiElementOneOf = Core.Name "hydra.shex.syntax.MultiElementOneOf"

_MultiElementOneOf_GroupTripleExpr = Core.Name "GroupTripleExpr"

_MultiElementOneOf_listOfSequence = Core.Name "listOfSequence"

-- | A component of the ShEx NodeConstraint production
data NodeConstraint =
  NodeConstraintSequence [XsFacet] |
  NodeConstraintSeq2 NodeConstraintSequence2 |
  NodeConstraintSeq3 NodeConstraintSequence3 |
  NodeConstraintSeq4 NodeConstraintSequence4 |
  NodeConstraintSeq5 NodeConstraintSequence5 |
  NodeConstraintListOfXsFacet [XsFacet]
  deriving (Eq, Ord, Read, Show)

_NodeConstraint = Core.Name "hydra.shex.syntax.NodeConstraint"

_NodeConstraint_sequence = Core.Name "sequence"

_NodeConstraint_seq2 = Core.Name "seq2"

_NodeConstraint_seq3 = Core.Name "seq3"

_NodeConstraint_seq4 = Core.Name "seq4"

_NodeConstraint_seq5 = Core.Name "seq5"

_NodeConstraint_listOfXsFacet = Core.Name "listOfXsFacet"

-- | A synthetic Hydra type representing a secondary sequence within the ShEx NodeConstraint production
data NodeConstraintSequence2 =
  NodeConstraintSequence2 {
    nodeConstraintSequence2NonLiteralKind :: NonLiteralKind,
    nodeConstraintSequence2ListOfStringFacet :: [StringFacet]}
  deriving (Eq, Ord, Read, Show)

_NodeConstraintSequence2 = Core.Name "hydra.shex.syntax.NodeConstraintSequence2"

_NodeConstraintSequence2_NonLiteralKind = Core.Name "NonLiteralKind"

_NodeConstraintSequence2_listOfStringFacet = Core.Name "listOfStringFacet"

-- | A synthetic Hydra type representing a tertiary sequence within the ShEx NodeConstraint production
data NodeConstraintSequence3 =
  NodeConstraintSequence3 {
    nodeConstraintSequence3Datatype :: Datatype,
    nodeConstraintSequence3ListOfXsFacet :: [XsFacet]}
  deriving (Eq, Ord, Read, Show)

_NodeConstraintSequence3 = Core.Name "hydra.shex.syntax.NodeConstraintSequence3"

_NodeConstraintSequence3_Datatype = Core.Name "Datatype"

_NodeConstraintSequence3_listOfXsFacet = Core.Name "listOfXsFacet"

-- | A synthetic Hydra type representing a quaternary sequence within the ShEx NodeConstraint production
data NodeConstraintSequence4 =
  NodeConstraintSequence4 {
    nodeConstraintSequence4ValueSet :: ValueSet,
    nodeConstraintSequence4ListOfXsFacet :: [XsFacet]}
  deriving (Eq, Ord, Read, Show)

_NodeConstraintSequence4 = Core.Name "hydra.shex.syntax.NodeConstraintSequence4"

_NodeConstraintSequence4_ValueSet = Core.Name "ValueSet"

_NodeConstraintSequence4_listOfXsFacet = Core.Name "listOfXsFacet"

-- | A synthetic Hydra type representing a quinary sequence within the ShEx NodeConstraint production
data NodeConstraintSequence5 =
  NodeConstraintSequence5 {
    nodeConstraintSequence5ValueSet :: ValueSet,
    nodeConstraintSequence5ListOfXsFacet :: [XsFacet]}
  deriving (Eq, Ord, Read, Show)

_NodeConstraintSequence5 = Core.Name "hydra.shex.syntax.NodeConstraintSequence5"

_NodeConstraintSequence5_ValueSet = Core.Name "ValueSet"

_NodeConstraintSequence5_listOfXsFacet = Core.Name "listOfXsFacet"

-- | ShEx grammar production: NonLiteralKind ::= 'IRI' | 'BNODE' | 'NONLITERAL'
data NonLiteralKind =
  NonLiteralKindIRI |
  NonLiteralKindBNODE |
  NonLiteralKindNONLITERAL
  deriving (Eq, Ord, Read, Show)

_NonLiteralKind = Core.Name "hydra.shex.syntax.NonLiteralKind"

_NonLiteralKind_IRI = Core.Name "IRI"

_NonLiteralKind_BNODE = Core.Name "BNODE"

_NonLiteralKind_NONLITERAL = Core.Name "NONLITERAL"

-- | ShEx grammar production: NotStartAction ::= start | shapeExprDecl
data NotStartAction =
  NotStartActionStart ShapeExpression |
  NotStartActionDeclaration NotStartActionShapeExprDecl
  deriving (Eq, Ord, Read, Show)

_NotStartAction = Core.Name "hydra.shex.syntax.NotStartAction"

_NotStartAction_start = Core.Name "start"

_NotStartAction_declaration = Core.Name "declaration"

-- | A component of the ShEx NotStartActionShapeExprDecl production
data NotStartActionShapeExprDecl =
  NotStartActionShapeExprDecl {
    notStartActionShapeExprDeclShapeExprLabel :: ShapeExprLabel,
    notStartActionShapeExprDeclAlts :: NotStartActionShapeExprDeclAlts}
  deriving (Eq, Ord, Read, Show)

_NotStartActionShapeExprDecl = Core.Name "hydra.shex.syntax.NotStartActionShapeExprDecl"

_NotStartActionShapeExprDecl_ShapeExprLabel = Core.Name "ShapeExprLabel"

_NotStartActionShapeExprDecl_alts = Core.Name "alts"

-- | A synthetic Hydra type representing the alternatives of the ShEx NotStartActionShapeExprDecl production
data NotStartActionShapeExprDeclAlts =
  NotStartActionShapeExprDeclAltsShapeExpression ShapeExpression |
  NotStartActionShapeExprDeclAltsEXTERNAL
  deriving (Eq, Ord, Read, Show)

_NotStartActionShapeExprDeclAlts = Core.Name "hydra.shex.syntax.NotStartActionShapeExprDeclAlts"

_NotStartActionShapeExprDeclAlts_ShapeExpression = Core.Name "ShapeExpression"

_NotStartActionShapeExprDeclAlts_EXTERNAL = Core.Name "EXTERNAL"

-- | A component of the ShEx NumericFacet production
data NumericFacet =
  NumericFacetSeq NumericFacetSequence |
  NumericFacetSeq2 NumericFacetSequence2
  deriving (Eq, Ord, Read, Show)

_NumericFacet = Core.Name "hydra.shex.syntax.NumericFacet"

_NumericFacet_seq = Core.Name "seq"

_NumericFacet_seq2 = Core.Name "seq2"

-- | A synthetic Hydra type representing a sequence within the ShEx NumericFacet production
data NumericFacetSequence =
  NumericFacetSequence {
    numericFacetSequenceNumericRange :: NumericRange,
    numericFacetSequenceNumericLiteral :: NumericLiteral}
  deriving (Eq, Ord, Read, Show)

_NumericFacetSequence = Core.Name "hydra.shex.syntax.NumericFacetSequence"

_NumericFacetSequence_NumericRange = Core.Name "NumericRange"

_NumericFacetSequence_NumericLiteral = Core.Name "NumericLiteral"

-- | A synthetic Hydra type representing a secondary sequence within the ShEx NumericFacet production
data NumericFacetSequence2 =
  NumericFacetSequence2 {
    numericFacetSequence2NumericLength :: NumericLength,
    numericFacetSequence2Integer :: Integer_}
  deriving (Eq, Ord, Read, Show)

_NumericFacetSequence2 = Core.Name "hydra.shex.syntax.NumericFacetSequence2"

_NumericFacetSequence2_NumericLength = Core.Name "NumericLength"

_NumericFacetSequence2_Integer = Core.Name "Integer"

-- | A component of the ShEx NumericLength production
data NumericLength =
  NumericLengthTOTALDIGITS |
  NumericLengthFRACTIONDIGITS
  deriving (Eq, Ord, Read, Show)

_NumericLength = Core.Name "hydra.shex.syntax.NumericLength"

_NumericLength_TOTALDIGITS = Core.Name "TOTALDIGITS"

_NumericLength_FRACTIONDIGITS = Core.Name "FRACTIONDIGITS"

-- | ShEx grammar production: NumericLiteral ::= Integer | Decimal | Double
data NumericLiteral =
  NumericLiteralInteger Integer_ |
  NumericLiteralDecimal Decimal |
  NumericLiteralDouble Double_
  deriving (Eq, Ord, Read, Show)

_NumericLiteral = Core.Name "hydra.shex.syntax.NumericLiteral"

_NumericLiteral_Integer = Core.Name "Integer"

_NumericLiteral_Decimal = Core.Name "Decimal"

_NumericLiteral_Double = Core.Name "Double"

-- | A component of the ShEx NumericRange production
data NumericRange =
  NumericRangeMININCLUSIVE |
  NumericRangeMINEXCLUSIVE |
  NumericRangeMAXINCLUSIVE |
  NumericRangeMAXEXCLUSIVE
  deriving (Eq, Ord, Read, Show)

_NumericRange = Core.Name "hydra.shex.syntax.NumericRange"

_NumericRange_MININCLUSIVE = Core.Name "MININCLUSIVE"

_NumericRange_MINEXCLUSIVE = Core.Name "MINEXCLUSIVE"

_NumericRange_MAXINCLUSIVE = Core.Name "MAXINCLUSIVE"

_NumericRange_MAXEXCLUSIVE = Core.Name "MAXEXCLUSIVE"

-- | ShEx grammar production: OneOfTripleExpr ::= GroupTripleExpr | MultiElementOneOf
data OneOfTripleExpr =
  OneOfTripleExprGroupTripleExpr GroupTripleExpr |
  OneOfTripleExprMultiElementOneOf MultiElementOneOf
  deriving (Eq, Ord, Read, Show)

_OneOfTripleExpr = Core.Name "hydra.shex.syntax.OneOfTripleExpr"

_OneOfTripleExpr_GroupTripleExpr = Core.Name "GroupTripleExpr"

_OneOfTripleExpr_MultiElementOneOf = Core.Name "MultiElementOneOf"

-- | ShEx grammar production: Percent ::= '%' Hex Hex
data Percent =
  Percent {
    percentHex :: Hex,
    percentHex2 :: Hex}
  deriving (Eq, Ord, Read, Show)

_Percent = Core.Name "hydra.shex.syntax.Percent"

_Percent_Hex = Core.Name "Hex"

_Percent_Hex2 = Core.Name "Hex2"

-- | ShEx grammar production: Plx ::= Percent | PnLocalEsc
data Plx =
  PlxPercent Percent |
  PlxPnLocalEsc PnLocalEsc
  deriving (Eq, Ord, Read, Show)

_Plx = Core.Name "hydra.shex.syntax.Plx"

_Plx_Percent = Core.Name "Percent"

_Plx_PnLocalEsc = Core.Name "PnLocalEsc"

-- | A component of the ShEx PnChars production
data PnChars =
  PnCharsPnCharsU PnCharsU |
  PnCharsMinus |
  PnCharsRegex String
  deriving (Eq, Ord, Read, Show)

_PnChars = Core.Name "hydra.shex.syntax.PnChars"

_PnChars_PnCharsU = Core.Name "PnCharsU"

_PnChars_Minus = Core.Name "Minus"

_PnChars_regex = Core.Name "regex"

-- | A component of the ShEx PnCharsBase production
data PnCharsBase =
  PnCharsBaseRegex String |
  PnCharsBaseRegex2 String
  deriving (Eq, Ord, Read, Show)

_PnCharsBase = Core.Name "hydra.shex.syntax.PnCharsBase"

_PnCharsBase_regex = Core.Name "regex"

_PnCharsBase_regex2 = Core.Name "regex2"

-- | ShEx grammar production: PnCharsU ::= PnCharsBase | '_'
data PnCharsU =
  PnCharsUPnCharsBase PnCharsBase |
  PnCharsULowbar
  deriving (Eq, Ord, Read, Show)

_PnCharsU = Core.Name "hydra.shex.syntax.PnCharsU"

_PnCharsU_PnCharsBase = Core.Name "PnCharsBase"

_PnCharsU_Lowbar = Core.Name "Lowbar"

-- | A component of the ShEx PnLocal production
data PnLocal =
  PnLocal {
    pnLocalAlts :: PnLocalAlts,
    pnLocalSequence :: (Maybe PnLocalSequenceOption)}
  deriving (Eq, Ord, Read, Show)

_PnLocal = Core.Name "hydra.shex.syntax.PnLocal"

_PnLocal_alts = Core.Name "alts"

_PnLocal_Sequence = Core.Name "Sequence"

-- | A synthetic Hydra type representing the alternatives of the ShEx PnLocal production
data PnLocalAlts =
  PnLocalAltsPnCharsU PnCharsU |
  PnLocalAltsColon |
  PnLocalAltsRegex String |
  PnLocalAltsPlx Plx
  deriving (Eq, Ord, Read, Show)

_PnLocalAlts = Core.Name "hydra.shex.syntax.PnLocalAlts"

_PnLocalAlts_PnCharsU = Core.Name "PnCharsU"

_PnLocalAlts_Colon = Core.Name "Colon"

_PnLocalAlts_regex = Core.Name "regex"

_PnLocalAlts_Plx = Core.Name "Plx"

-- | A component of the ShEx PnLocalEsc production
newtype PnLocalEsc =
  PnLocalEsc {
    unPnLocalEsc :: String}
  deriving (Eq, Ord, Read, Show)

_PnLocalEsc = Core.Name "hydra.shex.syntax.PnLocalEsc"

-- | A synthetic Hydra type representing an optional group within the ShEx PnLocal production
data PnLocalSequenceOption =
  PnLocalSequenceOption {
    pnLocalSequenceOptionListOfAlts :: [PnLocalSequenceOptionListOfAltsElmt],
    pnLocalSequenceOptionAlts :: PnLocalSequenceOptionAlts}
  deriving (Eq, Ord, Read, Show)

_PnLocalSequenceOption = Core.Name "hydra.shex.syntax.PnLocalSequenceOption"

_PnLocalSequenceOption_listOfAlts = Core.Name "listOfAlts"

_PnLocalSequenceOption_alts = Core.Name "alts"

-- | A synthetic Hydra type representing the alternatives of an optional group within the ShEx PnLocal production
data PnLocalSequenceOptionAlts =
  PnLocalSequenceOptionAltsPnChars PnChars |
  PnLocalSequenceOptionAltsColon |
  PnLocalSequenceOptionAltsPlx Plx
  deriving (Eq, Ord, Read, Show)

_PnLocalSequenceOptionAlts = Core.Name "hydra.shex.syntax.PnLocalSequenceOptionAlts"

_PnLocalSequenceOptionAlts_PnChars = Core.Name "PnChars"

_PnLocalSequenceOptionAlts_Colon = Core.Name "Colon"

_PnLocalSequenceOptionAlts_Plx = Core.Name "Plx"

-- | A synthetic Hydra type representing one alternative of an optional repeated group within the ShEx PnLocal production
data PnLocalSequenceOptionListOfAltsElmt =
  PnLocalSequenceOptionListOfAltsElmtPnChars PnChars |
  PnLocalSequenceOptionListOfAltsElmtPeriod |
  PnLocalSequenceOptionListOfAltsElmtColon |
  PnLocalSequenceOptionListOfAltsElmtPlx Plx
  deriving (Eq, Ord, Read, Show)

_PnLocalSequenceOptionListOfAltsElmt = Core.Name "hydra.shex.syntax.PnLocalSequenceOptionListOfAltsElmt"

_PnLocalSequenceOptionListOfAltsElmt_PnChars = Core.Name "PnChars"

_PnLocalSequenceOptionListOfAltsElmt_Period = Core.Name "Period"

_PnLocalSequenceOptionListOfAltsElmt_Colon = Core.Name "Colon"

_PnLocalSequenceOptionListOfAltsElmt_Plx = Core.Name "Plx"

-- | A component of the ShEx PnPrefix production
data PnPrefix =
  PnPrefix {
    pnPrefixPnCharsBase :: PnCharsBase,
    pnPrefixSequence :: (Maybe PnPrefixSequenceOption)}
  deriving (Eq, Ord, Read, Show)

_PnPrefix = Core.Name "hydra.shex.syntax.PnPrefix"

_PnPrefix_PnCharsBase = Core.Name "PnCharsBase"

_PnPrefix_Sequence = Core.Name "Sequence"

-- | A synthetic Hydra type representing an optional group within the ShEx PnPrefix production
data PnPrefixSequenceOption =
  PnPrefixSequenceOption {
    pnPrefixSequenceOptionAlts :: PnPrefixSequenceOptionAlts,
    pnPrefixSequenceOptionPnChars :: PnChars}
  deriving (Eq, Ord, Read, Show)

_PnPrefixSequenceOption = Core.Name "hydra.shex.syntax.PnPrefixSequenceOption"

_PnPrefixSequenceOption_alts = Core.Name "alts"

_PnPrefixSequenceOption_PnChars = Core.Name "PnChars"

-- | A synthetic Hydra type representing the alternatives of an optional group within the ShEx PnPrefix production
data PnPrefixSequenceOptionAlts =
  PnPrefixSequenceOptionAltsPnChars PnChars |
  PnPrefixSequenceOptionAltsPeriod
  deriving (Eq, Ord, Read, Show)

_PnPrefixSequenceOptionAlts = Core.Name "hydra.shex.syntax.PnPrefixSequenceOptionAlts"

_PnPrefixSequenceOptionAlts_PnChars = Core.Name "PnChars"

_PnPrefixSequenceOptionAlts_Period = Core.Name "Period"

-- | ShEx grammar production: PnameLn ::= PnameNs PnLocal
data PnameLn =
  PnameLn {
    pnameLnPnameNs :: PnameNs,
    pnameLnPnLocal :: PnLocal}
  deriving (Eq, Ord, Read, Show)

_PnameLn = Core.Name "hydra.shex.syntax.PnameLn"

_PnameLn_PnameNs = Core.Name "PnameNs"

_PnameLn_PnLocal = Core.Name "PnLocal"

-- | ShEx grammar production: PnameNs ::= PnPrefix? ':'
newtype PnameNs =
  PnameNs {
    unPnameNs :: (Maybe PnPrefix)}
  deriving (Eq, Ord, Read, Show)

_PnameNs = Core.Name "hydra.shex.syntax.PnameNs"

-- | ShEx grammar production: Predicate ::= Iri | RdfType
data Predicate =
  PredicateIri Iri |
  PredicateRdfType RdfType
  deriving (Eq, Ord, Read, Show)

_Predicate = Core.Name "hydra.shex.syntax.Predicate"

_Predicate_Iri = Core.Name "Iri"

_Predicate_RdfType = Core.Name "RdfType"

-- | ShEx grammar production: PrefixDecl ::= 'PREFIX' PnameNs IriRef
data PrefixDecl =
  PrefixDecl {
    prefixDeclPnameNs :: PnameNs,
    prefixDeclIriRef :: IriRef}
  deriving (Eq, Ord, Read, Show)

_PrefixDecl = Core.Name "hydra.shex.syntax.PrefixDecl"

_PrefixDecl_PnameNs = Core.Name "PnameNs"

_PrefixDecl_IriRef = Core.Name "IriRef"

-- | ShEx grammar production: PrefixedName ::= PnameLn | PnameNs
data PrefixedName =
  PrefixedNamePnameLn PnameLn |
  PrefixedNamePnameNs PnameNs
  deriving (Eq, Ord, Read, Show)

_PrefixedName = Core.Name "hydra.shex.syntax.PrefixedName"

_PrefixedName_PnameLn = Core.Name "PnameLn"

_PrefixedName_PnameNs = Core.Name "PnameNs"

-- | ShEx grammar production: RdfLiteral ::= String (LangTag | '^^' Datatype)?
data RdfLiteral =
  RdfLiteral {
    rdfLiteralString :: String_,
    rdfLiteralAlts :: (Maybe RdfLiteralAltsOption)}
  deriving (Eq, Ord, Read, Show)

_RdfLiteral = Core.Name "hydra.shex.syntax.RdfLiteral"

_RdfLiteral_String = Core.Name "String"

_RdfLiteral_Alts = Core.Name "Alts"

-- | A synthetic Hydra type representing an optional alternative within the ShEx RdfLiteral production
data RdfLiteralAltsOption =
  RdfLiteralAltsOptionLangTag LangTag |
  RdfLiteralAltsOptionSequence Datatype
  deriving (Eq, Ord, Read, Show)

_RdfLiteralAltsOption = Core.Name "hydra.shex.syntax.RdfLiteralAltsOption"

_RdfLiteralAltsOption_LangTag = Core.Name "LangTag"

_RdfLiteralAltsOption_sequence = Core.Name "sequence"

-- | ShEx grammar production: RdfType ::= 'a'
newtype RdfType =
  RdfType {
    unRdfType :: ()}
  deriving (Eq, Ord, Read, Show)

_RdfType = Core.Name "hydra.shex.syntax.RdfType"

-- | A component of the ShEx Regexp production
data Regexp =
  Regexp {
    regexpListOfAlts :: [RegexpListOfAltsElmt],
    regexpListOfRegex :: [String]}
  deriving (Eq, Ord, Read, Show)

_Regexp = Core.Name "hydra.shex.syntax.Regexp"

_Regexp_listOfAlts = Core.Name "listOfAlts"

_Regexp_listOfRegex = Core.Name "listOfRegex"

-- | A synthetic Hydra type representing one element of the ShEx RegexpListOfAlts production
data RegexpListOfAltsElmt =
  RegexpListOfAltsElmtRegex String |
  RegexpListOfAltsElmtSequence String |
  RegexpListOfAltsElmtUchar Uchar
  deriving (Eq, Ord, Read, Show)

_RegexpListOfAltsElmt = Core.Name "hydra.shex.syntax.RegexpListOfAltsElmt"

_RegexpListOfAltsElmt_regex = Core.Name "regex"

_RegexpListOfAltsElmt_sequence = Core.Name "sequence"

_RegexpListOfAltsElmt_Uchar = Core.Name "Uchar"

-- | A component of the ShEx RepeatRange production
data RepeatRange =
  RepeatRange {
    repeatRangeInteger :: Integer_,
    repeatRangeSequence :: (Maybe (Maybe (Maybe RepeatRangeSequenceOptionOptionOption)))}
  deriving (Eq, Ord, Read, Show)

_RepeatRange = Core.Name "hydra.shex.syntax.RepeatRange"

_RepeatRange_Integer = Core.Name "Integer"

_RepeatRange_Sequence = Core.Name "Sequence"

-- | A synthetic Hydra type representing a nested optional group within the ShEx RepeatRange production
data RepeatRangeSequenceOptionOptionOption =
  RepeatRangeSequenceOptionOptionOptionInteger Integer_ |
  RepeatRangeSequenceOptionOptionOptionAst
  deriving (Eq, Ord, Read, Show)

_RepeatRangeSequenceOptionOptionOption = Core.Name "hydra.shex.syntax.RepeatRangeSequenceOptionOptionOption"

_RepeatRangeSequenceOptionOptionOption_Integer = Core.Name "Integer"

_RepeatRangeSequenceOptionOptionOption_Ast = Core.Name "Ast"

-- | ShEx grammar production: SemanticActions ::= CodeDecl*
newtype SemanticActions =
  SemanticActions {
    unSemanticActions :: [CodeDecl]}
  deriving (Eq, Ord, Read, Show)

_SemanticActions = Core.Name "hydra.shex.syntax.SemanticActions"

-- | ShEx grammar production: SenseFlags ::= '^'
newtype SenseFlags =
  SenseFlags {
    unSenseFlags :: ()}
  deriving (Eq, Ord, Read, Show)

_SenseFlags = Core.Name "hydra.shex.syntax.SenseFlags"

-- | ShEx grammar production: ShapeAnd ::= ShapeNot ('AND' ShapeNot)*
data ShapeAnd =
  ShapeAnd {
    shapeAndShapeNot :: ShapeNot,
    shapeAndListOfSequence :: [ShapeNot]}
  deriving (Eq, Ord, Read, Show)

_ShapeAnd = Core.Name "hydra.shex.syntax.ShapeAnd"

_ShapeAnd_ShapeNot = Core.Name "ShapeNot"

_ShapeAnd_listOfSequence = Core.Name "listOfSequence"

-- | A component of the ShEx ShapeAtom production
data ShapeAtom =
  ShapeAtomSeq ShapeAtomSequence |
  ShapeAtomShapeOrRef ShapeOrRef |
  ShapeAtomSequence2 ShapeExpression |
  ShapeAtomPeriod
  deriving (Eq, Ord, Read, Show)

_ShapeAtom = Core.Name "hydra.shex.syntax.ShapeAtom"

_ShapeAtom_seq = Core.Name "seq"

_ShapeAtom_ShapeOrRef = Core.Name "ShapeOrRef"

_ShapeAtom_sequence2 = Core.Name "sequence2"

_ShapeAtom_Period = Core.Name "Period"

-- | A synthetic Hydra type representing a sequence within the ShEx ShapeAtom production
data ShapeAtomSequence =
  ShapeAtomSequence {
    shapeAtomSequenceNodeConstraint :: NodeConstraint,
    shapeAtomSequenceShapeOrRef :: (Maybe ShapeOrRef)}
  deriving (Eq, Ord, Read, Show)

_ShapeAtomSequence = Core.Name "hydra.shex.syntax.ShapeAtomSequence"

_ShapeAtomSequence_NodeConstraint = Core.Name "NodeConstraint"

_ShapeAtomSequence_ShapeOrRef = Core.Name "ShapeOrRef"

-- | A component of the ShEx ShapeDefinition production
data ShapeDefinition =
  ShapeDefinition {
    shapeDefinitionListOfAlts :: [ShapeDefinitionListOfAltsElmt],
    shapeDefinitionTripleExpression :: (Maybe TripleExpression),
    shapeDefinitionListOfAnnotation :: [Annotation],
    shapeDefinitionSemanticActions :: SemanticActions}
  deriving (Eq, Ord, Read, Show)

_ShapeDefinition = Core.Name "hydra.shex.syntax.ShapeDefinition"

_ShapeDefinition_listOfAlts = Core.Name "listOfAlts"

_ShapeDefinition_TripleExpression = Core.Name "TripleExpression"

_ShapeDefinition_listOfAnnotation = Core.Name "listOfAnnotation"

_ShapeDefinition_SemanticActions = Core.Name "SemanticActions"

-- | A synthetic Hydra type representing one element of the ShEx ShapeDefinitionListOfAlts production
data ShapeDefinitionListOfAltsElmt =
  ShapeDefinitionListOfAltsElmtIncludeSet IncludeSet |
  ShapeDefinitionListOfAltsElmtExtraPropertySet ExtraPropertySet |
  ShapeDefinitionListOfAltsElmtCLOSED
  deriving (Eq, Ord, Read, Show)

_ShapeDefinitionListOfAltsElmt = Core.Name "hydra.shex.syntax.ShapeDefinitionListOfAltsElmt"

_ShapeDefinitionListOfAltsElmt_IncludeSet = Core.Name "IncludeSet"

_ShapeDefinitionListOfAltsElmt_ExtraPropertySet = Core.Name "ExtraPropertySet"

_ShapeDefinitionListOfAltsElmt_CLOSED = Core.Name "CLOSED"

-- | ShEx grammar production: ShapeExprLabel ::= Iri | BlankNode
data ShapeExprLabel =
  ShapeExprLabelIri Iri |
  ShapeExprLabelBlankNode BlankNode
  deriving (Eq, Ord, Read, Show)

_ShapeExprLabel = Core.Name "hydra.shex.syntax.ShapeExprLabel"

_ShapeExprLabel_Iri = Core.Name "Iri"

_ShapeExprLabel_BlankNode = Core.Name "BlankNode"

-- | ShEx grammar production: ShapeExpression ::= ShapeOr
newtype ShapeExpression =
  ShapeExpression {
    unShapeExpression :: ShapeOr}
  deriving (Eq, Ord, Read, Show)

_ShapeExpression = Core.Name "hydra.shex.syntax.ShapeExpression"

-- | ShEx grammar production: ShapeNot ::= 'NOT'? ShapeAtom
data ShapeNot =
  ShapeNot {
    shapeNotNOT :: (Maybe ()),
    shapeNotShapeAtom :: ShapeAtom}
  deriving (Eq, Ord, Read, Show)

_ShapeNot = Core.Name "hydra.shex.syntax.ShapeNot"

_ShapeNot_NOT = Core.Name "NOT"

_ShapeNot_ShapeAtom = Core.Name "ShapeAtom"

-- | ShEx grammar production: ShapeOr ::= ShapeAnd ('OR' ShapeAnd)*
data ShapeOr =
  ShapeOr {
    shapeOrShapeAnd :: ShapeAnd,
    shapeOrListOfSequence :: [ShapeAnd]}
  deriving (Eq, Ord, Read, Show)

_ShapeOr = Core.Name "hydra.shex.syntax.ShapeOr"

_ShapeOr_ShapeAnd = Core.Name "ShapeAnd"

_ShapeOr_listOfSequence = Core.Name "listOfSequence"

-- | A component of the ShEx ShapeOrRef production
data ShapeOrRef =
  ShapeOrRefShapeDefinition ShapeDefinition |
  ShapeOrRefAtpNameLn AtpNameLn |
  ShapeOrRefAtpNameNs AtpNameNs |
  ShapeOrRefSequence ShapeExprLabel
  deriving (Eq, Ord, Read, Show)

_ShapeOrRef = Core.Name "hydra.shex.syntax.ShapeOrRef"

_ShapeOrRef_ShapeDefinition = Core.Name "ShapeDefinition"

_ShapeOrRef_AtpNameLn = Core.Name "AtpNameLn"

_ShapeOrRef_AtpNameNs = Core.Name "AtpNameNs"

_ShapeOrRef_sequence = Core.Name "sequence"

-- | ShEx grammar production: ShexDoc ::= Directive* ((NotStartAction | StartActions) Statement*)?
data ShexDoc =
  ShexDoc {
    shexDocListOfDirective :: [Directive],
    shexDocSequence :: (Maybe ShexDocSequenceOption),
    shexDocPrefixDecl :: PrefixDecl}
  deriving (Eq, Ord, Read, Show)

_ShexDoc = Core.Name "hydra.shex.syntax.ShexDoc"

_ShexDoc_listOfDirective = Core.Name "listOfDirective"

_ShexDoc_Sequence = Core.Name "Sequence"

_ShexDoc_PrefixDecl = Core.Name "PrefixDecl"

-- | A synthetic Hydra type representing an optional group within the ShEx ShexDoc production
data ShexDocSequenceOption =
  ShexDocSequenceOption {
    shexDocSequenceOptionAlts :: ShexDocSequenceOptionAlts,
    shexDocSequenceOptionListOfStatement :: [Statement]}
  deriving (Eq, Ord, Read, Show)

_ShexDocSequenceOption = Core.Name "hydra.shex.syntax.ShexDocSequenceOption"

_ShexDocSequenceOption_alts = Core.Name "alts"

_ShexDocSequenceOption_listOfStatement = Core.Name "listOfStatement"

-- | A synthetic Hydra type representing the alternatives of an optional group within the ShEx ShexDoc production
data ShexDocSequenceOptionAlts =
  ShexDocSequenceOptionAltsNotStartAction NotStartAction |
  ShexDocSequenceOptionAltsStartActions StartActions
  deriving (Eq, Ord, Read, Show)

_ShexDocSequenceOptionAlts = Core.Name "hydra.shex.syntax.ShexDocSequenceOptionAlts"

_ShexDocSequenceOptionAlts_NotStartAction = Core.Name "NotStartAction"

_ShexDocSequenceOptionAlts_StartActions = Core.Name "StartActions"

-- | ShEx grammar production: SingleElementGroup ::= UnaryTripleExpr ';'?
data SingleElementGroup =
  SingleElementGroup {
    singleElementGroupUnaryTripleExpr :: UnaryTripleExpr,
    singleElementGroupSemi :: (Maybe ())}
  deriving (Eq, Ord, Read, Show)

_SingleElementGroup = Core.Name "hydra.shex.syntax.SingleElementGroup"

_SingleElementGroup_UnaryTripleExpr = Core.Name "UnaryTripleExpr"

_SingleElementGroup_Semi = Core.Name "Semi"

-- | ShEx grammar production: StartActions ::= CodeDecl+
newtype StartActions =
  StartActions {
    unStartActions :: [CodeDecl]}
  deriving (Eq, Ord, Read, Show)

_StartActions = Core.Name "hydra.shex.syntax.StartActions"

-- | ShEx grammar production: Statement ::= Directive | NotStartAction
data Statement =
  StatementDirective Directive |
  StatementNotStartAction NotStartAction
  deriving (Eq, Ord, Read, Show)

_Statement = Core.Name "hydra.shex.syntax.Statement"

_Statement_Directive = Core.Name "Directive"

_Statement_NotStartAction = Core.Name "NotStartAction"

-- | A component of the ShEx String production
data String_ =
  StringStringLiteral1 StringLiteral1 |
  StringStringLiteralLong1 StringLiteralLong1 |
  StringStringLiteral2 StringLiteral2 |
  StringStringLiteralLong2 StringLiteralLong2
  deriving (Eq, Ord, Read, Show)

_String = Core.Name "hydra.shex.syntax.String"

_String_StringLiteral1 = Core.Name "StringLiteral1"

_String_StringLiteralLong1 = Core.Name "StringLiteralLong1"

_String_StringLiteral2 = Core.Name "StringLiteral2"

_String_StringLiteralLong2 = Core.Name "StringLiteralLong2"

-- | ShEx grammar production: StringFacet ::= StringLength Integer | Regexp
data StringFacet =
  StringFacetSeq StringFacetSequence |
  StringFacetRegexp Regexp
  deriving (Eq, Ord, Read, Show)

_StringFacet = Core.Name "hydra.shex.syntax.StringFacet"

_StringFacet_seq = Core.Name "seq"

_StringFacet_Regexp = Core.Name "Regexp"

-- | A synthetic Hydra type representing a sequence within the ShEx StringFacet production
data StringFacetSequence =
  StringFacetSequence {
    stringFacetSequenceStringLength :: StringLength,
    stringFacetSequenceInteger :: Integer_}
  deriving (Eq, Ord, Read, Show)

_StringFacetSequence = Core.Name "hydra.shex.syntax.StringFacetSequence"

_StringFacetSequence_StringLength = Core.Name "StringLength"

_StringFacetSequence_Integer = Core.Name "Integer"

-- | ShEx grammar production: StringLength ::= 'LENGTH' | 'MINLENGTH' | 'MAXLENGTH'
data StringLength =
  StringLengthLENGTH |
  StringLengthMINLENGTH |
  StringLengthMAXLENGTH
  deriving (Eq, Ord, Read, Show)

_StringLength = Core.Name "hydra.shex.syntax.StringLength"

_StringLength_LENGTH = Core.Name "LENGTH"

_StringLength_MINLENGTH = Core.Name "MINLENGTH"

_StringLength_MAXLENGTH = Core.Name "MAXLENGTH"

-- | A component of the ShEx StringLiteral1 production
newtype StringLiteral1 =
  StringLiteral1 {
    unStringLiteral1 :: [StringLiteral1Elmt]}
  deriving (Eq, Ord, Read, Show)

_StringLiteral1 = Core.Name "hydra.shex.syntax.StringLiteral1"

-- | A synthetic Hydra type representing one element of the ShEx StringLiteral1 production
data StringLiteral1Elmt =
  StringLiteral1ElmtRegex String |
  StringLiteral1ElmtEchar Echar |
  StringLiteral1ElmtUchar Uchar
  deriving (Eq, Ord, Read, Show)

_StringLiteral1Elmt = Core.Name "hydra.shex.syntax.StringLiteral1Elmt"

_StringLiteral1Elmt_regex = Core.Name "regex"

_StringLiteral1Elmt_Echar = Core.Name "Echar"

_StringLiteral1Elmt_Uchar = Core.Name "Uchar"

-- | A component of the ShEx StringLiteral2 production
newtype StringLiteral2 =
  StringLiteral2 {
    unStringLiteral2 :: [StringLiteral2Elmt]}
  deriving (Eq, Ord, Read, Show)

_StringLiteral2 = Core.Name "hydra.shex.syntax.StringLiteral2"

-- | A synthetic Hydra type representing one element of the ShEx StringLiteral2 production
data StringLiteral2Elmt =
  StringLiteral2ElmtRegex String |
  StringLiteral2ElmtEchar Echar |
  StringLiteral2ElmtUchar Uchar
  deriving (Eq, Ord, Read, Show)

_StringLiteral2Elmt = Core.Name "hydra.shex.syntax.StringLiteral2Elmt"

_StringLiteral2Elmt_regex = Core.Name "regex"

_StringLiteral2Elmt_Echar = Core.Name "Echar"

_StringLiteral2Elmt_Uchar = Core.Name "Uchar"

-- | A component of the ShEx StringLiteralLong1 production
newtype StringLiteralLong1 =
  StringLiteralLong1 {
    unStringLiteralLong1 :: [StringLiteralLong1Elmt]}
  deriving (Eq, Ord, Read, Show)

_StringLiteralLong1 = Core.Name "hydra.shex.syntax.StringLiteralLong1"

-- | A synthetic Hydra type representing one element of the ShEx StringLiteralLong1 production
data StringLiteralLong1Elmt =
  StringLiteralLong1ElmtSeq StringLiteralLong1ElmtSequence |
  StringLiteralLong1ElmtEchar Echar |
  StringLiteralLong1ElmtUchar Uchar
  deriving (Eq, Ord, Read, Show)

_StringLiteralLong1Elmt = Core.Name "hydra.shex.syntax.StringLiteralLong1Elmt"

_StringLiteralLong1Elmt_seq = Core.Name "seq"

_StringLiteralLong1Elmt_Echar = Core.Name "Echar"

_StringLiteralLong1Elmt_Uchar = Core.Name "Uchar"

-- | A synthetic Hydra type representing a sequence within an element of the ShEx StringLiteralLong1 production
data StringLiteralLong1ElmtSequence =
  StringLiteralLong1ElmtSequence {
    stringLiteralLong1ElmtSequenceAlts :: (Maybe StringLiteralLong1ElmtSequenceAltsOption),
    stringLiteralLong1ElmtSequenceRegex :: String}
  deriving (Eq, Ord, Read, Show)

_StringLiteralLong1ElmtSequence = Core.Name "hydra.shex.syntax.StringLiteralLong1ElmtSequence"

_StringLiteralLong1ElmtSequence_Alts = Core.Name "Alts"

_StringLiteralLong1ElmtSequence_regex = Core.Name "regex"

-- | A synthetic Hydra type representing an optional alternative of an element of the ShEx StringLiteralLong1 production
data StringLiteralLong1ElmtSequenceAltsOption =
  StringLiteralLong1ElmtSequenceAltsOptionApos |
  StringLiteralLong1ElmtSequenceAltsOptionSeq StringLiteralLong1ElmtSequenceAltsOptionSequence
  deriving (Eq, Ord, Read, Show)

_StringLiteralLong1ElmtSequenceAltsOption = Core.Name "hydra.shex.syntax.StringLiteralLong1ElmtSequenceAltsOption"

_StringLiteralLong1ElmtSequenceAltsOption_Apos = Core.Name "Apos"

_StringLiteralLong1ElmtSequenceAltsOption_seq = Core.Name "seq"

-- | A synthetic Hydra type representing a sequence within an optional alternative of an element of the ShEx StringLiteralLong1 production
type StringLiteralLong1ElmtSequenceAltsOptionSequence = ()

_StringLiteralLong1ElmtSequenceAltsOptionSequence =
    Core.Name "hydra.shex.syntax.StringLiteralLong1ElmtSequenceAltsOptionSequence"

-- | A component of the ShEx StringLiteralLong2 production
newtype StringLiteralLong2 =
  StringLiteralLong2 {
    unStringLiteralLong2 :: [StringLiteralLong2Elmt]}
  deriving (Eq, Ord, Read, Show)

_StringLiteralLong2 = Core.Name "hydra.shex.syntax.StringLiteralLong2"

-- | A synthetic Hydra type representing one element of the ShEx StringLiteralLong2 production
data StringLiteralLong2Elmt =
  StringLiteralLong2ElmtSeq StringLiteralLong2ElmtSequence |
  StringLiteralLong2ElmtEchar Echar |
  StringLiteralLong2ElmtUchar Uchar
  deriving (Eq, Ord, Read, Show)

_StringLiteralLong2Elmt = Core.Name "hydra.shex.syntax.StringLiteralLong2Elmt"

_StringLiteralLong2Elmt_seq = Core.Name "seq"

_StringLiteralLong2Elmt_Echar = Core.Name "Echar"

_StringLiteralLong2Elmt_Uchar = Core.Name "Uchar"

-- | A synthetic Hydra type representing a sequence within an element of the ShEx StringLiteralLong2 production
data StringLiteralLong2ElmtSequence =
  StringLiteralLong2ElmtSequence {
    stringLiteralLong2ElmtSequenceAlts :: (Maybe StringLiteralLong2ElmtSequenceAltsOption),
    stringLiteralLong2ElmtSequenceRegex :: String}
  deriving (Eq, Ord, Read, Show)

_StringLiteralLong2ElmtSequence = Core.Name "hydra.shex.syntax.StringLiteralLong2ElmtSequence"

_StringLiteralLong2ElmtSequence_Alts = Core.Name "Alts"

_StringLiteralLong2ElmtSequence_regex = Core.Name "regex"

-- | A synthetic Hydra type representing an optional alternative of an element of the ShEx StringLiteralLong2 production
data StringLiteralLong2ElmtSequenceAltsOption =
  StringLiteralLong2ElmtSequenceAltsOptionQuot |
  StringLiteralLong2ElmtSequenceAltsOptionSeq StringLiteralLong2ElmtSequenceAltsOptionSequence
  deriving (Eq, Ord, Read, Show)

_StringLiteralLong2ElmtSequenceAltsOption = Core.Name "hydra.shex.syntax.StringLiteralLong2ElmtSequenceAltsOption"

_StringLiteralLong2ElmtSequenceAltsOption_Quot = Core.Name "Quot"

_StringLiteralLong2ElmtSequenceAltsOption_seq = Core.Name "seq"

-- | A synthetic Hydra type representing a sequence within an optional alternative of an element of the ShEx StringLiteralLong2 production
type StringLiteralLong2ElmtSequenceAltsOptionSequence = ()

_StringLiteralLong2ElmtSequenceAltsOptionSequence =
    Core.Name "hydra.shex.syntax.StringLiteralLong2ElmtSequenceAltsOptionSequence"

-- | A component of the ShEx TripleConstraint production
data TripleConstraint =
  TripleConstraint {
    tripleConstraintSenseFlags :: (Maybe SenseFlags),
    tripleConstraintPredicate :: Predicate,
    tripleConstraintInlineShapeExpression :: InlineShapeExpression,
    tripleConstraintCardinality :: (Maybe Cardinality),
    tripleConstraintListOfAnnotation :: [Annotation],
    tripleConstraintSemanticActions :: SemanticActions}
  deriving (Eq, Ord, Read, Show)

_TripleConstraint = Core.Name "hydra.shex.syntax.TripleConstraint"

_TripleConstraint_SenseFlags = Core.Name "SenseFlags"

_TripleConstraint_Predicate = Core.Name "Predicate"

_TripleConstraint_InlineShapeExpression = Core.Name "InlineShapeExpression"

_TripleConstraint_Cardinality = Core.Name "Cardinality"

_TripleConstraint_listOfAnnotation = Core.Name "listOfAnnotation"

_TripleConstraint_SemanticActions = Core.Name "SemanticActions"

-- | ShEx grammar production: TripleExprLabel ::= Iri | BlankNode
data TripleExprLabel =
  TripleExprLabelIri Iri |
  TripleExprLabelBlankNode BlankNode
  deriving (Eq, Ord, Read, Show)

_TripleExprLabel = Core.Name "hydra.shex.syntax.TripleExprLabel"

_TripleExprLabel_Iri = Core.Name "Iri"

_TripleExprLabel_BlankNode = Core.Name "BlankNode"

-- | ShEx grammar production: TripleExpression ::= OneOfTripleExpr
newtype TripleExpression =
  TripleExpression {
    unTripleExpression :: OneOfTripleExpr}
  deriving (Eq, Ord, Read, Show)

_TripleExpression = Core.Name "hydra.shex.syntax.TripleExpression"

-- | A component of the ShEx Uchar production
data Uchar =
  UcharSeq UcharSequence |
  UcharSeq2 UcharSequence2
  deriving (Eq, Ord, Read, Show)

_Uchar = Core.Name "hydra.shex.syntax.Uchar"

_Uchar_seq = Core.Name "seq"

_Uchar_seq2 = Core.Name "seq2"

-- | A synthetic Hydra type representing a sequence within the ShEx Uchar production
data UcharSequence =
  UcharSequence {
    ucharSequenceHex :: Hex,
    ucharSequenceHex2 :: Hex,
    ucharSequenceHex3 :: Hex,
    ucharSequenceHex4 :: Hex}
  deriving (Eq, Ord, Read, Show)

_UcharSequence = Core.Name "hydra.shex.syntax.UcharSequence"

_UcharSequence_Hex = Core.Name "Hex"

_UcharSequence_Hex2 = Core.Name "Hex2"

_UcharSequence_Hex3 = Core.Name "Hex3"

_UcharSequence_Hex4 = Core.Name "Hex4"

-- | A synthetic Hydra type representing a secondary sequence within the ShEx Uchar production
data UcharSequence2 =
  UcharSequence2 {
    ucharSequence2Hex :: Hex,
    ucharSequence2Hex2 :: Hex,
    ucharSequence2Hex3 :: Hex,
    ucharSequence2Hex4 :: Hex,
    ucharSequence2Hex5 :: Hex,
    ucharSequence2Hex6 :: Hex,
    ucharSequence2Hex7 :: Hex,
    ucharSequence2Hex8 :: Hex}
  deriving (Eq, Ord, Read, Show)

_UcharSequence2 = Core.Name "hydra.shex.syntax.UcharSequence2"

_UcharSequence2_Hex = Core.Name "Hex"

_UcharSequence2_Hex2 = Core.Name "Hex2"

_UcharSequence2_Hex3 = Core.Name "Hex3"

_UcharSequence2_Hex4 = Core.Name "Hex4"

_UcharSequence2_Hex5 = Core.Name "Hex5"

_UcharSequence2_Hex6 = Core.Name "Hex6"

_UcharSequence2_Hex7 = Core.Name "Hex7"

_UcharSequence2_Hex8 = Core.Name "Hex8"

-- | A component of the ShEx UnaryTripleExpr production
data UnaryTripleExpr =
  UnaryTripleExprSeq UnaryTripleExprSequence |
  UnaryTripleExprInclude Include
  deriving (Eq, Ord, Read, Show)

_UnaryTripleExpr = Core.Name "hydra.shex.syntax.UnaryTripleExpr"

_UnaryTripleExpr_seq = Core.Name "seq"

_UnaryTripleExpr_Include = Core.Name "Include"

-- | A synthetic Hydra type representing a sequence within the ShEx UnaryTripleExpr production
data UnaryTripleExprSequence =
  UnaryTripleExprSequence {
    unaryTripleExprSequenceSequence :: (Maybe TripleExprLabel),
    unaryTripleExprSequenceAlts :: UnaryTripleExprSequenceAlts}
  deriving (Eq, Ord, Read, Show)

_UnaryTripleExprSequence = Core.Name "hydra.shex.syntax.UnaryTripleExprSequence"

_UnaryTripleExprSequence_Sequence = Core.Name "Sequence"

_UnaryTripleExprSequence_alts = Core.Name "alts"

-- | A synthetic Hydra type representing the alternatives of the ShEx UnaryTripleExprSequence production
data UnaryTripleExprSequenceAlts =
  UnaryTripleExprSequenceAltsTripleConstraint TripleConstraint |
  UnaryTripleExprSequenceAltsBracketedTripleExpr BracketedTripleExpr
  deriving (Eq, Ord, Read, Show)

_UnaryTripleExprSequenceAlts = Core.Name "hydra.shex.syntax.UnaryTripleExprSequenceAlts"

_UnaryTripleExprSequenceAlts_TripleConstraint = Core.Name "TripleConstraint"

_UnaryTripleExprSequenceAlts_BracketedTripleExpr = Core.Name "BracketedTripleExpr"

-- | ShEx grammar production: ValueSet ::= '[' ValueSetValue* ']'
newtype ValueSet =
  ValueSet {
    unValueSet :: [ValueSetValue]}
  deriving (Eq, Ord, Read, Show)

_ValueSet = Core.Name "hydra.shex.syntax.ValueSet"

-- | ShEx grammar production: ValueSetValue ::= IriRange | Literal
data ValueSetValue =
  ValueSetValueIriRange IriRange |
  ValueSetValueLiteral Literal
  deriving (Eq, Ord, Read, Show)

_ValueSetValue = Core.Name "hydra.shex.syntax.ValueSetValue"

_ValueSetValue_IriRange = Core.Name "IriRange"

_ValueSetValue_Literal = Core.Name "Literal"

-- | ShEx grammar production: XsFacet ::= StringFacet | NumericFacet
data XsFacet =
  XsFacetStringFacet StringFacet |
  XsFacetNumericFacet NumericFacet
  deriving (Eq, Ord, Read, Show)

_XsFacet = Core.Name "hydra.shex.syntax.XsFacet"

_XsFacet_StringFacet = Core.Name "StringFacet"

_XsFacet_NumericFacet = Core.Name "NumericFacet"