diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,6 +15,86 @@
 
 ---
 
+## [0.18.0] - 2026-09-29
+
+Module-naming systematization release: every kernel and package module moves onto a uniform
+`hydra.core.*` / `hydra.<pkg>.*` grammar, completing the package ⊃ module ⊃ definition containment
+tower. The rename touches every module, definition, and cross-host reference in the codebase; this
+release exists primarily to ship it as its own coordinated batch. Also lands the translingual regex
+primitive pipeline and several silent-correctness fixes in the coder layer.
+
+### Highlights
+
+- **Module-name grammar systematization** ([#729](https://github.com/CategoricalData/hydra/issues/729)):
+  every `hydra.*` module renamed onto a uniform package-derived prefix — kernel modules move to
+  `hydra.core.*`, package modules to `hydra.<pkg>.*` — closing the long-standing inconsistency where
+  a package name had no structural relationship to the module names it contained. The rename spans
+  every host (Haskell, Java, Python, Scala, TypeScript, all four Lisp dialects) and required fixing
+  stale namespace references, overlay-directory paths, and `hostOverrides` shims across every driver
+  and bootstrap script that had hardcoded the old grammar. Further consolidation (a structurally
+  enforced package↔prefix law) is tracked for 0.18.1. The kernel package itself is still published as
+  `hydra-kernel` (its modules are under `hydra.core.*`); the `hydra-core` package rename #729 called for
+  is under review because that name is taken on PyPI and npm
+  ([#770](https://github.com/CategoricalData/hydra/issues/770)).
+- **Translingual regex primitives** ([#603](https://github.com/CategoricalData/hydra/issues/603)):
+  `hydra.lib.regex` primitives (`find`, `findAll`, `matches`, `replace`, `replaceAll`, `split`) now run
+  every pattern through the shared `hydra.regex` parse/print pipeline instead of handing raw pattern
+  strings to each host's native engine, so a pattern means the same thing on every host. Includes a
+  host-independent conformance suite and a leftmost-longest alternation fix in the PCRE/POSIX printers.
+- **Silent-corruption fixes across the coder layer**
+  ([#744](https://github.com/CategoricalData/hydra/issues/744),
+  [#765](https://github.com/CategoricalData/hydra/issues/765),
+  [#649](https://github.com/CategoricalData/hydra/issues/649)): fixed data-corrupting bugs in the
+  JSON-Schema/Avro/GraphQL/GraphSON/Protobuf coders (extended integer widths, map-key handling), the
+  kernel's encode/decode generators (reversed type-parameter order on 2+-param polymorphic types), and
+  the Python coder (silently dropping a module's types when types and terms share a file path).
+- **Self-hosted specification docs** ([#723](https://github.com/CategoricalData/hydra/issues/723)):
+  the module-reference pages under `docs/specification/` are now generated directly from the kernel
+  (`bin/regenerate-spec.sh`) via a new metadata-only doc coder, rather than hand-maintained.
+
+### New features
+
+- **[#603](https://github.com/CategoricalData/hydra/issues/603)** host-independent regex conformance
+  suite covering the minimal-core grammar (literals, classes, quantifiers, alternation, anchors,
+  grouping) across all 9 hosts.
+- **[#723](https://github.com/CategoricalData/hydra/issues/723)** `hydra.markdown` type module and
+  `generateModuleDoc`, the metadata-only doc coder backing the self-generated spec pages.
+- **[#382](https://github.com/CategoricalData/hydra/issues/382)** the Rust coder is split out of
+  `hydra-ext` into its own first-class `hydra-rust` package.
+
+### Bug fixes
+
+- **[#744](https://github.com/CategoricalData/hydra/issues/744)** silent data corruption in
+  JSON-Schema/Avro/GraphQL/GraphSON/Protobuf coders for extended integer widths and map-key handling.
+- **[#765](https://github.com/CategoricalData/hydra/issues/765)** kernel encode/decode generators
+  emitted reversed type-parameter order for 2+-param polymorphic types.
+- **[#649](https://github.com/CategoricalData/hydra/issues/649)** Python coder silently dropped a
+  module's types when types and terms targeted the same output file path.
+- **[#572](https://github.com/CategoricalData/hydra/issues/572)** TypeScript kernel-JSON test
+  bridge's compact-form decode heuristic mishandled nullary union arms.
+- **[#761](https://github.com/CategoricalData/hydra/issues/761)** cold-seed generation ignored
+  `hostOverrides.java=local`, silently pulling the published Java host jar instead.
+- **[#736](https://github.com/CategoricalData/hydra/issues/736)** Java build now pins JDK 11 via a
+  Gradle toolchain block, instead of depending on ambient `JAVA_HOME`.
+
+### Improvements
+
+- **[#327](https://github.com/CategoricalData/hydra/issues/327)** new `hydra.diff` schema-diff type
+  module; `Term.Inject` comparison is now by variant name.
+- **[#573](https://github.com/CategoricalData/hydra/issues/573)** per-registry publish sets (Hackage,
+  Maven, PyPI, npm) are now derived from the package registry itself instead of 13 hand-maintained
+  lists — closes a recurring class of silent release-time drift.
+- **[#735](https://github.com/CategoricalData/hydra/issues/735)** cross-host decimal-scale test
+  filtering now driven by a translingual `scaleDistinct` capability tag instead of hand-copied
+  per-host skip lists.
+
+### Documentation
+
+- **[#655](https://github.com/CategoricalData/hydra/issues/655)** documented the overlay-emission
+  "implementation wins" decision for bare primitive references (`docs/overlays.md`).
+
+---
+
 ## [0.17.7] - 2026-09-14
 
 Correctness-hardening point release on the 0.17.x line, consolidating the 0.17.6 breaking batch. It
diff --git a/hydra-rdf.cabal b/hydra-rdf.cabal
--- a/hydra-rdf.cabal
+++ b/hydra-rdf.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           hydra-rdf
-version:        0.17.7
+version:        0.18.0
 synopsis:       Hydra's RDF/SHACL/OWL model and coder support
 description:    Hydra is an implementation of the LambdaGraph data model, which takes advantage of an isomorphism between labeled hypergraphs and typed lambda calculus: in Hydra, "graphs are programs, and programs are graphs". RDF support for Hydra
 category:       Data
@@ -27,18 +27,18 @@
 
 library
   exposed-modules:
-      Hydra.Dsl.Rdf.Syntax
-      Hydra.Dsl.Shacl.Model
-      Hydra.Owl.Syntax
+      Hydra.Rdf.Dsl.Shacl.Model
+      Hydra.Rdf.Dsl.Syntax
+      Hydra.Rdf.Owl.Syntax
       Hydra.Rdf.Serde
+      Hydra.Rdf.Shacl.Coder
+      Hydra.Rdf.Shacl.Language
+      Hydra.Rdf.Shacl.Model
       Hydra.Rdf.ShaclRdf
+      Hydra.Rdf.Shex.Syntax
       Hydra.Rdf.Syntax
       Hydra.Rdf.Utils
-      Hydra.Shacl.Coder
-      Hydra.Shacl.Language
-      Hydra.Shacl.Model
-      Hydra.Shex.Syntax
-      Hydra.Xml.Schema
+      Hydra.Rdf.Xml.Schema
   other-modules:
       Paths_hydra_rdf
   hs-source-dirs:
@@ -46,6 +46,6 @@
   build-depends:
       base >=4.19.0 && <4.22
     , containers >=0.6.7 && <0.8
-    , hydra-kernel ==0.17.7
+    , hydra-kernel ==0.18.0
     , scientific >=0.3.7 && <0.4
   default-language: Haskell2010
diff --git a/src/main/haskell/Hydra/Dsl/Rdf/Syntax.hs b/src/main/haskell/Hydra/Dsl/Rdf/Syntax.hs
deleted file mode 100644
--- a/src/main/haskell/Hydra/Dsl/Rdf/Syntax.hs
+++ /dev/null
@@ -1,824 +0,0 @@
--- Note: this is an automatically generated file. Do not edit.
-
--- | DSL functions for hydra.rdf.syntax
-
-module Hydra.Dsl.Rdf.Syntax where
-
-import qualified Hydra.Core as Core
-import qualified Hydra.Rdf.Syntax as Syntax
-import qualified Hydra.Typed as Typed
-import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
-import qualified Data.Scientific as Sci
-import Data.Void
-import qualified Data.Map as M
-import qualified Data.Set as S
-
--- | DSL constructor for the hydra.rdf.syntax.BlankNode wrapper
-blankNode :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.BlankNode
-blankNode x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.rdf.syntax.BlankNode"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.rdf.syntax.BlankNode
-blankNodeBlankNode :: Typed.TypedName Syntax.BlankNode
-blankNodeBlankNode = Typed.TypedName (Core.Name "hydra.rdf.syntax.BlankNode")
-
--- | DSL constructor for the hydra.rdf.syntax.Dataset wrapper
-dataset :: Typed.TypedTerm (S.Set Syntax.Quad) -> Typed.TypedTerm Syntax.Dataset
-dataset x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.rdf.syntax.Dataset"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.rdf.syntax.Dataset
-datasetDataset :: Typed.TypedName Syntax.Dataset
-datasetDataset = Typed.TypedName (Core.Name "hydra.rdf.syntax.Dataset")
-
--- | DSL constructor for hydra.rdf.syntax.Description
-description :: Typed.TypedTerm Syntax.Node -> Typed.TypedTerm Syntax.Graph -> Typed.TypedTerm Syntax.Description
-description subject graph =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.rdf.syntax.Description"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "subject"),
-          Core.fieldTerm = (Typed.unTypedTerm subject)},
-        Core.Field {
-          Core.fieldName = (Core.Name "graph"),
-          Core.fieldTerm = (Typed.unTypedTerm graph)}]}))
-
--- | DSL name token for hydra.rdf.syntax.Description
-descriptionDescription :: Typed.TypedName Syntax.Description
-descriptionDescription = Typed.TypedName (Core.Name "hydra.rdf.syntax.Description")
-
--- | DSL accessor for the graph field of hydra.rdf.syntax.Description
-descriptionGraph :: Typed.TypedTerm Syntax.Description -> Typed.TypedTerm Syntax.Graph
-descriptionGraph x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Description"),
-        Core.projectionFieldName = (Core.Name "graph")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the subject field of hydra.rdf.syntax.Description
-descriptionSubject :: Typed.TypedTerm Syntax.Description -> Typed.TypedTerm Syntax.Node
-descriptionSubject x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Description"),
-        Core.projectionFieldName = (Core.Name "subject")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the graph field of hydra.rdf.syntax.Description
-descriptionWithGraph :: Typed.TypedTerm Syntax.Description -> Typed.TypedTerm Syntax.Graph -> Typed.TypedTerm Syntax.Description
-descriptionWithGraph original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.rdf.syntax.Description"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "subject"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Description"),
-              Core.projectionFieldName = (Core.Name "subject")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "graph"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the subject field of hydra.rdf.syntax.Description
-descriptionWithSubject :: Typed.TypedTerm Syntax.Description -> Typed.TypedTerm Syntax.Node -> Typed.TypedTerm Syntax.Description
-descriptionWithSubject original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.rdf.syntax.Description"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "subject"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "graph"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Description"),
-              Core.projectionFieldName = (Core.Name "graph")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for the hydra.rdf.syntax.Graph wrapper
-graph :: Typed.TypedTerm (S.Set Syntax.Triple) -> Typed.TypedTerm Syntax.Graph
-graph x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.rdf.syntax.Graph"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.rdf.syntax.Graph
-graphGraph :: Typed.TypedName Syntax.Graph
-graphGraph = Typed.TypedName (Core.Name "hydra.rdf.syntax.Graph")
-
--- | DSL constructor for the hydra.rdf.syntax.Iri wrapper
-iri :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Iri
-iri x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.rdf.syntax.Iri"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.rdf.syntax.Iri
-iriIri :: Typed.TypedName Syntax.Iri
-iriIri = Typed.TypedName (Core.Name "hydra.rdf.syntax.Iri")
-
--- | DSL injection for the iri variant of hydra.rdf.syntax.IriOrLiteral
-iriOrLiteralIri :: Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm Syntax.IriOrLiteral
-iriOrLiteralIri x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.rdf.syntax.IriOrLiteral"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "iri"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.rdf.syntax.IriOrLiteral
-iriOrLiteralIriOrLiteral :: Typed.TypedName Syntax.IriOrLiteral
-iriOrLiteralIriOrLiteral = Typed.TypedName (Core.Name "hydra.rdf.syntax.IriOrLiteral")
-
--- | DSL injection for the literal variant of hydra.rdf.syntax.IriOrLiteral
-iriOrLiteralLiteral :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Syntax.IriOrLiteral
-iriOrLiteralLiteral x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.rdf.syntax.IriOrLiteral"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "literal"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for the hydra.rdf.syntax.LangStrings wrapper
-langStrings :: Typed.TypedTerm (M.Map (Maybe Syntax.LanguageTag) String) -> Typed.TypedTerm Syntax.LangStrings
-langStrings x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.rdf.syntax.LangStrings"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.rdf.syntax.LangStrings
-langStringsLangStrings :: Typed.TypedName Syntax.LangStrings
-langStringsLangStrings = Typed.TypedName (Core.Name "hydra.rdf.syntax.LangStrings")
-
--- | DSL constructor for the hydra.rdf.syntax.LanguageTag wrapper
-languageTag :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.LanguageTag
-languageTag x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.rdf.syntax.LanguageTag"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.rdf.syntax.LanguageTag
-languageTagLanguageTag :: Typed.TypedName Syntax.LanguageTag
-languageTagLanguageTag = Typed.TypedName (Core.Name "hydra.rdf.syntax.LanguageTag")
-
--- | DSL constructor for hydra.rdf.syntax.Literal
-literal :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm (Maybe Syntax.LanguageTag) -> Typed.TypedTerm Syntax.Literal
-literal lexicalForm datatypeIri languageTag =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.rdf.syntax.Literal"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lexicalForm"),
-          Core.fieldTerm = (Typed.unTypedTerm lexicalForm)},
-        Core.Field {
-          Core.fieldName = (Core.Name "datatypeIri"),
-          Core.fieldTerm = (Typed.unTypedTerm datatypeIri)},
-        Core.Field {
-          Core.fieldName = (Core.Name "languageTag"),
-          Core.fieldTerm = (Typed.unTypedTerm languageTag)}]}))
-
--- | DSL accessor for the datatypeIri field of hydra.rdf.syntax.Literal
-literalDatatypeIri :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Syntax.Iri
-literalDatatypeIri x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Literal"),
-        Core.projectionFieldName = (Core.Name "datatypeIri")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the languageTag field of hydra.rdf.syntax.Literal
-literalLanguageTag :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm (Maybe Syntax.LanguageTag)
-literalLanguageTag x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Literal"),
-        Core.projectionFieldName = (Core.Name "languageTag")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the lexicalForm field of hydra.rdf.syntax.Literal
-literalLexicalForm :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm String
-literalLexicalForm x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Literal"),
-        Core.projectionFieldName = (Core.Name "lexicalForm")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.rdf.syntax.Literal
-literalLiteral :: Typed.TypedName Syntax.Literal
-literalLiteral = Typed.TypedName (Core.Name "hydra.rdf.syntax.Literal")
-
--- | DSL updater for the datatypeIri field of hydra.rdf.syntax.Literal
-literalWithDatatypeIri :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm Syntax.Literal
-literalWithDatatypeIri original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.rdf.syntax.Literal"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lexicalForm"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Literal"),
-              Core.projectionFieldName = (Core.Name "lexicalForm")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "datatypeIri"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "languageTag"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Literal"),
-              Core.projectionFieldName = (Core.Name "languageTag")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the languageTag field of hydra.rdf.syntax.Literal
-literalWithLanguageTag :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm (Maybe Syntax.LanguageTag) -> Typed.TypedTerm Syntax.Literal
-literalWithLanguageTag original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.rdf.syntax.Literal"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lexicalForm"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Literal"),
-              Core.projectionFieldName = (Core.Name "lexicalForm")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "datatypeIri"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Literal"),
-              Core.projectionFieldName = (Core.Name "datatypeIri")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "languageTag"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the lexicalForm field of hydra.rdf.syntax.Literal
-literalWithLexicalForm :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.Literal
-literalWithLexicalForm original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.rdf.syntax.Literal"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "lexicalForm"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "datatypeIri"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Literal"),
-              Core.projectionFieldName = (Core.Name "datatypeIri")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "languageTag"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Literal"),
-              Core.projectionFieldName = (Core.Name "languageTag")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL injection for the bnode variant of hydra.rdf.syntax.Node
-nodeBnode :: Typed.TypedTerm Syntax.BlankNode -> Typed.TypedTerm Syntax.Node
-nodeBnode x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.rdf.syntax.Node"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "bnode"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the iri variant of hydra.rdf.syntax.Node
-nodeIri :: Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm Syntax.Node
-nodeIri x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.rdf.syntax.Node"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "iri"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the literal variant of hydra.rdf.syntax.Node
-nodeLiteral :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Syntax.Node
-nodeLiteral x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.rdf.syntax.Node"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "literal"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.rdf.syntax.Node
-nodeNode :: Typed.TypedName Syntax.Node
-nodeNode = Typed.TypedName (Core.Name "hydra.rdf.syntax.Node")
-
--- | DSL constructor for hydra.rdf.syntax.Property
-property :: Typed.TypedTerm (S.Set Syntax.RdfsClass) -> Typed.TypedTerm (S.Set Syntax.RdfsClass) -> Typed.TypedTerm (S.Set Syntax.Property) -> Typed.TypedTerm Syntax.Property
-property domain range subPropertyOf =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.rdf.syntax.Property"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "domain"),
-          Core.fieldTerm = (Typed.unTypedTerm domain)},
-        Core.Field {
-          Core.fieldName = (Core.Name "range"),
-          Core.fieldTerm = (Typed.unTypedTerm range)},
-        Core.Field {
-          Core.fieldName = (Core.Name "subPropertyOf"),
-          Core.fieldTerm = (Typed.unTypedTerm subPropertyOf)}]}))
-
--- | DSL accessor for the domain field of hydra.rdf.syntax.Property
-propertyDomain :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm (S.Set Syntax.RdfsClass)
-propertyDomain x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Property"),
-        Core.projectionFieldName = (Core.Name "domain")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.rdf.syntax.Property
-propertyProperty :: Typed.TypedName Syntax.Property
-propertyProperty = Typed.TypedName (Core.Name "hydra.rdf.syntax.Property")
-
--- | DSL accessor for the range field of hydra.rdf.syntax.Property
-propertyRange :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm (S.Set Syntax.RdfsClass)
-propertyRange x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Property"),
-        Core.projectionFieldName = (Core.Name "range")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the subPropertyOf field of hydra.rdf.syntax.Property
-propertySubPropertyOf :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm (S.Set Syntax.Property)
-propertySubPropertyOf x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Property"),
-        Core.projectionFieldName = (Core.Name "subPropertyOf")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the domain field of hydra.rdf.syntax.Property
-propertyWithDomain :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm (S.Set Syntax.RdfsClass) -> Typed.TypedTerm Syntax.Property
-propertyWithDomain original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.rdf.syntax.Property"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "domain"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "range"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Property"),
-              Core.projectionFieldName = (Core.Name "range")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "subPropertyOf"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Property"),
-              Core.projectionFieldName = (Core.Name "subPropertyOf")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the range field of hydra.rdf.syntax.Property
-propertyWithRange :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm (S.Set Syntax.RdfsClass) -> Typed.TypedTerm Syntax.Property
-propertyWithRange original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.rdf.syntax.Property"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "domain"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Property"),
-              Core.projectionFieldName = (Core.Name "domain")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "range"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "subPropertyOf"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Property"),
-              Core.projectionFieldName = (Core.Name "subPropertyOf")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the subPropertyOf field of hydra.rdf.syntax.Property
-propertyWithSubPropertyOf :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm (S.Set Syntax.Property) -> Typed.TypedTerm Syntax.Property
-propertyWithSubPropertyOf original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.rdf.syntax.Property"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "domain"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Property"),
-              Core.projectionFieldName = (Core.Name "domain")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "range"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Property"),
-              Core.projectionFieldName = (Core.Name "range")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "subPropertyOf"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.rdf.syntax.Quad
-quad :: Typed.TypedTerm Syntax.Resource -> Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm Syntax.Node -> Typed.TypedTerm (Maybe Syntax.Iri) -> Typed.TypedTerm Syntax.Quad
-quad subject predicate object graph =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.rdf.syntax.Quad"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "subject"),
-          Core.fieldTerm = (Typed.unTypedTerm subject)},
-        Core.Field {
-          Core.fieldName = (Core.Name "predicate"),
-          Core.fieldTerm = (Typed.unTypedTerm predicate)},
-        Core.Field {
-          Core.fieldName = (Core.Name "object"),
-          Core.fieldTerm = (Typed.unTypedTerm object)},
-        Core.Field {
-          Core.fieldName = (Core.Name "graph"),
-          Core.fieldTerm = (Typed.unTypedTerm graph)}]}))
-
--- | DSL accessor for the graph field of hydra.rdf.syntax.Quad
-quadGraph :: Typed.TypedTerm Syntax.Quad -> Typed.TypedTerm (Maybe Syntax.Iri)
-quadGraph x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Quad"),
-        Core.projectionFieldName = (Core.Name "graph")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the object field of hydra.rdf.syntax.Quad
-quadObject :: Typed.TypedTerm Syntax.Quad -> Typed.TypedTerm Syntax.Node
-quadObject x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Quad"),
-        Core.projectionFieldName = (Core.Name "object")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the predicate field of hydra.rdf.syntax.Quad
-quadPredicate :: Typed.TypedTerm Syntax.Quad -> Typed.TypedTerm Syntax.Iri
-quadPredicate x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Quad"),
-        Core.projectionFieldName = (Core.Name "predicate")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.rdf.syntax.Quad
-quadQuad :: Typed.TypedName Syntax.Quad
-quadQuad = Typed.TypedName (Core.Name "hydra.rdf.syntax.Quad")
-
--- | DSL accessor for the subject field of hydra.rdf.syntax.Quad
-quadSubject :: Typed.TypedTerm Syntax.Quad -> Typed.TypedTerm Syntax.Resource
-quadSubject x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Quad"),
-        Core.projectionFieldName = (Core.Name "subject")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the graph field of hydra.rdf.syntax.Quad
-quadWithGraph :: Typed.TypedTerm Syntax.Quad -> Typed.TypedTerm (Maybe Syntax.Iri) -> Typed.TypedTerm Syntax.Quad
-quadWithGraph original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.rdf.syntax.Quad"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "subject"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Quad"),
-              Core.projectionFieldName = (Core.Name "subject")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "predicate"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Quad"),
-              Core.projectionFieldName = (Core.Name "predicate")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "object"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Quad"),
-              Core.projectionFieldName = (Core.Name "object")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "graph"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the object field of hydra.rdf.syntax.Quad
-quadWithObject :: Typed.TypedTerm Syntax.Quad -> Typed.TypedTerm Syntax.Node -> Typed.TypedTerm Syntax.Quad
-quadWithObject original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.rdf.syntax.Quad"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "subject"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Quad"),
-              Core.projectionFieldName = (Core.Name "subject")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "predicate"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Quad"),
-              Core.projectionFieldName = (Core.Name "predicate")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "object"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "graph"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Quad"),
-              Core.projectionFieldName = (Core.Name "graph")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the predicate field of hydra.rdf.syntax.Quad
-quadWithPredicate :: Typed.TypedTerm Syntax.Quad -> Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm Syntax.Quad
-quadWithPredicate original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.rdf.syntax.Quad"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "subject"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Quad"),
-              Core.projectionFieldName = (Core.Name "subject")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "predicate"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "object"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Quad"),
-              Core.projectionFieldName = (Core.Name "object")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "graph"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Quad"),
-              Core.projectionFieldName = (Core.Name "graph")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the subject field of hydra.rdf.syntax.Quad
-quadWithSubject :: Typed.TypedTerm Syntax.Quad -> Typed.TypedTerm Syntax.Resource -> Typed.TypedTerm Syntax.Quad
-quadWithSubject original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.rdf.syntax.Quad"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "subject"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "predicate"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Quad"),
-              Core.projectionFieldName = (Core.Name "predicate")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "object"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Quad"),
-              Core.projectionFieldName = (Core.Name "object")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "graph"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Quad"),
-              Core.projectionFieldName = (Core.Name "graph")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for the hydra.rdf.syntax.RdfsClass wrapper
-rdfsClass :: Typed.TypedTerm () -> Typed.TypedTerm Syntax.RdfsClass
-rdfsClass x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.rdf.syntax.RdfsClass"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.rdf.syntax.RdfsClass
-rdfsClassRdfsClass :: Typed.TypedName Syntax.RdfsClass
-rdfsClassRdfsClass = Typed.TypedName (Core.Name "hydra.rdf.syntax.RdfsClass")
-
--- | DSL injection for the bnode variant of hydra.rdf.syntax.Resource
-resourceBnode :: Typed.TypedTerm Syntax.BlankNode -> Typed.TypedTerm Syntax.Resource
-resourceBnode x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.rdf.syntax.Resource"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "bnode"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the iri variant of hydra.rdf.syntax.Resource
-resourceIri :: Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm Syntax.Resource
-resourceIri x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.rdf.syntax.Resource"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "iri"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.rdf.syntax.Resource
-resourceResource :: Typed.TypedName Syntax.Resource
-resourceResource = Typed.TypedName (Core.Name "hydra.rdf.syntax.Resource")
-
--- | DSL constructor for hydra.rdf.syntax.Triple
-triple :: Typed.TypedTerm Syntax.Resource -> Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm Syntax.Node -> Typed.TypedTerm Syntax.Triple
-triple subject predicate object =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.rdf.syntax.Triple"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "subject"),
-          Core.fieldTerm = (Typed.unTypedTerm subject)},
-        Core.Field {
-          Core.fieldName = (Core.Name "predicate"),
-          Core.fieldTerm = (Typed.unTypedTerm predicate)},
-        Core.Field {
-          Core.fieldName = (Core.Name "object"),
-          Core.fieldTerm = (Typed.unTypedTerm object)}]}))
-
--- | DSL accessor for the object field of hydra.rdf.syntax.Triple
-tripleObject :: Typed.TypedTerm Syntax.Triple -> Typed.TypedTerm Syntax.Node
-tripleObject x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Triple"),
-        Core.projectionFieldName = (Core.Name "object")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the predicate field of hydra.rdf.syntax.Triple
-triplePredicate :: Typed.TypedTerm Syntax.Triple -> Typed.TypedTerm Syntax.Iri
-triplePredicate x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Triple"),
-        Core.projectionFieldName = (Core.Name "predicate")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the subject field of hydra.rdf.syntax.Triple
-tripleSubject :: Typed.TypedTerm Syntax.Triple -> Typed.TypedTerm Syntax.Resource
-tripleSubject x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Triple"),
-        Core.projectionFieldName = (Core.Name "subject")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.rdf.syntax.Triple
-tripleTriple :: Typed.TypedName Syntax.Triple
-tripleTriple = Typed.TypedName (Core.Name "hydra.rdf.syntax.Triple")
-
--- | DSL updater for the object field of hydra.rdf.syntax.Triple
-tripleWithObject :: Typed.TypedTerm Syntax.Triple -> Typed.TypedTerm Syntax.Node -> Typed.TypedTerm Syntax.Triple
-tripleWithObject original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.rdf.syntax.Triple"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "subject"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Triple"),
-              Core.projectionFieldName = (Core.Name "subject")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "predicate"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Triple"),
-              Core.projectionFieldName = (Core.Name "predicate")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "object"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the predicate field of hydra.rdf.syntax.Triple
-tripleWithPredicate :: Typed.TypedTerm Syntax.Triple -> Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm Syntax.Triple
-tripleWithPredicate original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.rdf.syntax.Triple"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "subject"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Triple"),
-              Core.projectionFieldName = (Core.Name "subject")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "predicate"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "object"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Triple"),
-              Core.projectionFieldName = (Core.Name "object")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the subject field of hydra.rdf.syntax.Triple
-tripleWithSubject :: Typed.TypedTerm Syntax.Triple -> Typed.TypedTerm Syntax.Resource -> Typed.TypedTerm Syntax.Triple
-tripleWithSubject original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.rdf.syntax.Triple"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "subject"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "predicate"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Triple"),
-              Core.projectionFieldName = (Core.Name "predicate")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "object"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.rdf.syntax.Triple"),
-              Core.projectionFieldName = (Core.Name "object")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL accessor for the body of hydra.rdf.syntax.BlankNode
-unBlankNode :: Typed.TypedTerm Syntax.BlankNode -> Typed.TypedTerm String
-unBlankNode x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.rdf.syntax.BlankNode")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.rdf.syntax.Dataset
-unDataset :: Typed.TypedTerm Syntax.Dataset -> Typed.TypedTerm (S.Set Syntax.Quad)
-unDataset x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.rdf.syntax.Dataset")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.rdf.syntax.Graph
-unGraph :: Typed.TypedTerm Syntax.Graph -> Typed.TypedTerm (S.Set Syntax.Triple)
-unGraph x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.rdf.syntax.Graph")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.rdf.syntax.Iri
-unIri :: Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm String
-unIri x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.rdf.syntax.Iri")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.rdf.syntax.LangStrings
-unLangStrings :: Typed.TypedTerm Syntax.LangStrings -> Typed.TypedTerm (M.Map (Maybe Syntax.LanguageTag) String)
-unLangStrings x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.rdf.syntax.LangStrings")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.rdf.syntax.LanguageTag
-unLanguageTag :: Typed.TypedTerm Syntax.LanguageTag -> Typed.TypedTerm String
-unLanguageTag x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.rdf.syntax.LanguageTag")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the body of hydra.rdf.syntax.RdfsClass
-unRdfsClass :: Typed.TypedTerm Syntax.RdfsClass -> Typed.TypedTerm ()
-unRdfsClass x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.rdf.syntax.RdfsClass")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
diff --git a/src/main/haskell/Hydra/Dsl/Shacl/Model.hs b/src/main/haskell/Hydra/Dsl/Shacl/Model.hs
deleted file mode 100644
--- a/src/main/haskell/Hydra/Dsl/Shacl/Model.hs
+++ /dev/null
@@ -1,1926 +0,0 @@
--- Note: this is an automatically generated file. Do not edit.
-
--- | DSL functions for hydra.shacl.model
-
-module Hydra.Dsl.Shacl.Model where
-
-import qualified Hydra.Core as Core
-import qualified Hydra.Dsl.Rdf.Syntax as RdfSyntax
-import qualified Hydra.Errors as Errors
-import qualified Hydra.Graph as Graph
-import qualified Hydra.Rdf.Syntax as Syntax
-import qualified Hydra.Shacl.Model as Model
-import qualified Hydra.Typed as Typed
-import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
-import qualified Data.Scientific as Sci
-import Data.Void
-import qualified Data.Set as S
-
--- | DSL constructor for hydra.shacl.model.Closed
-closed :: Typed.TypedTerm Bool -> Typed.TypedTerm (Maybe (S.Set Syntax.Property)) -> Typed.TypedTerm Model.Closed
-closed isClosed ignoredProperties =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.Closed"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "isClosed"),
-          Core.fieldTerm = (Typed.unTypedTerm isClosed)},
-        Core.Field {
-          Core.fieldName = (Core.Name "ignoredProperties"),
-          Core.fieldTerm = (Typed.unTypedTerm ignoredProperties)}]}))
-
--- | DSL name token for hydra.shacl.model.Closed
-closedClosed :: Typed.TypedName Model.Closed
-closedClosed = Typed.TypedName (Core.Name "hydra.shacl.model.Closed")
-
--- | DSL accessor for the ignoredProperties field of hydra.shacl.model.Closed
-closedIgnoredProperties :: Typed.TypedTerm Model.Closed -> Typed.TypedTerm (Maybe (S.Set Syntax.Property))
-closedIgnoredProperties x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.Closed"),
-        Core.projectionFieldName = (Core.Name "ignoredProperties")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the isClosed field of hydra.shacl.model.Closed
-closedIsClosed :: Typed.TypedTerm Model.Closed -> Typed.TypedTerm Bool
-closedIsClosed x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.Closed"),
-        Core.projectionFieldName = (Core.Name "isClosed")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the ignoredProperties field of hydra.shacl.model.Closed
-closedWithIgnoredProperties :: Typed.TypedTerm Model.Closed -> Typed.TypedTerm (Maybe (S.Set Syntax.Property)) -> Typed.TypedTerm Model.Closed
-closedWithIgnoredProperties original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.Closed"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "isClosed"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.Closed"),
-              Core.projectionFieldName = (Core.Name "isClosed")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "ignoredProperties"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the isClosed field of hydra.shacl.model.Closed
-closedWithIsClosed :: Typed.TypedTerm Model.Closed -> Typed.TypedTerm Bool -> Typed.TypedTerm Model.Closed
-closedWithIsClosed original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.Closed"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "isClosed"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "ignoredProperties"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.Closed"),
-              Core.projectionFieldName = (Core.Name "ignoredProperties")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL injection for the and variant of hydra.shacl.model.CommonConstraint
-commonConstraintAnd :: Typed.TypedTerm (S.Set (Model.Reference Model.Shape)) -> Typed.TypedTerm Model.CommonConstraint
-commonConstraintAnd x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.CommonConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "and"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the class variant of hydra.shacl.model.CommonConstraint
-commonConstraintClass :: Typed.TypedTerm (S.Set Syntax.RdfsClass) -> Typed.TypedTerm Model.CommonConstraint
-commonConstraintClass x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.CommonConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "class"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the closed variant of hydra.shacl.model.CommonConstraint
-commonConstraintClosed :: Typed.TypedTerm Model.Closed -> Typed.TypedTerm Model.CommonConstraint
-commonConstraintClosed x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.CommonConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "closed"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.shacl.model.CommonConstraint
-commonConstraintCommonConstraint :: Typed.TypedName Model.CommonConstraint
-commonConstraintCommonConstraint = Typed.TypedName (Core.Name "hydra.shacl.model.CommonConstraint")
-
--- | DSL injection for the datatype variant of hydra.shacl.model.CommonConstraint
-commonConstraintDatatype :: Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm Model.CommonConstraint
-commonConstraintDatatype x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.CommonConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "datatype"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the disjoint variant of hydra.shacl.model.CommonConstraint
-commonConstraintDisjoint :: Typed.TypedTerm (S.Set Syntax.Property) -> Typed.TypedTerm Model.CommonConstraint
-commonConstraintDisjoint x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.CommonConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "disjoint"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the equals variant of hydra.shacl.model.CommonConstraint
-commonConstraintEquals :: Typed.TypedTerm (S.Set Syntax.Property) -> Typed.TypedTerm Model.CommonConstraint
-commonConstraintEquals x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.CommonConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "equals"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the hasValue variant of hydra.shacl.model.CommonConstraint
-commonConstraintHasValue :: Typed.TypedTerm (S.Set Syntax.Node) -> Typed.TypedTerm Model.CommonConstraint
-commonConstraintHasValue x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.CommonConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "hasValue"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the in variant of hydra.shacl.model.CommonConstraint
-commonConstraintIn :: Typed.TypedTerm [Syntax.Node] -> Typed.TypedTerm Model.CommonConstraint
-commonConstraintIn x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.CommonConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "in"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the languageIn variant of hydra.shacl.model.CommonConstraint
-commonConstraintLanguageIn :: Typed.TypedTerm (S.Set Syntax.LanguageTag) -> Typed.TypedTerm Model.CommonConstraint
-commonConstraintLanguageIn x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.CommonConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "languageIn"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the maxExclusive variant of hydra.shacl.model.CommonConstraint
-commonConstraintMaxExclusive :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Model.CommonConstraint
-commonConstraintMaxExclusive x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.CommonConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "maxExclusive"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the maxInclusive variant of hydra.shacl.model.CommonConstraint
-commonConstraintMaxInclusive :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Model.CommonConstraint
-commonConstraintMaxInclusive x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.CommonConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "maxInclusive"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the maxLength variant of hydra.shacl.model.CommonConstraint
-commonConstraintMaxLength :: Typed.TypedTerm Integer -> Typed.TypedTerm Model.CommonConstraint
-commonConstraintMaxLength x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.CommonConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "maxLength"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the minExclusive variant of hydra.shacl.model.CommonConstraint
-commonConstraintMinExclusive :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Model.CommonConstraint
-commonConstraintMinExclusive x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.CommonConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "minExclusive"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the minInclusive variant of hydra.shacl.model.CommonConstraint
-commonConstraintMinInclusive :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Model.CommonConstraint
-commonConstraintMinInclusive x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.CommonConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "minInclusive"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the minLength variant of hydra.shacl.model.CommonConstraint
-commonConstraintMinLength :: Typed.TypedTerm Integer -> Typed.TypedTerm Model.CommonConstraint
-commonConstraintMinLength x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.CommonConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "minLength"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the node variant of hydra.shacl.model.CommonConstraint
-commonConstraintNode :: Typed.TypedTerm (S.Set (Model.Reference Model.NodeShape)) -> Typed.TypedTerm Model.CommonConstraint
-commonConstraintNode x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.CommonConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "node"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the nodeKind variant of hydra.shacl.model.CommonConstraint
-commonConstraintNodeKind :: Typed.TypedTerm Model.NodeKind -> Typed.TypedTerm Model.CommonConstraint
-commonConstraintNodeKind x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.CommonConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "nodeKind"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the not variant of hydra.shacl.model.CommonConstraint
-commonConstraintNot :: Typed.TypedTerm (S.Set (Model.Reference Model.Shape)) -> Typed.TypedTerm Model.CommonConstraint
-commonConstraintNot x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.CommonConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "not"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the or variant of hydra.shacl.model.CommonConstraint
-commonConstraintOr :: Typed.TypedTerm (S.Set (Model.Reference Model.Shape)) -> Typed.TypedTerm Model.CommonConstraint
-commonConstraintOr x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.CommonConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "or"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the pattern variant of hydra.shacl.model.CommonConstraint
-commonConstraintPattern :: Typed.TypedTerm Model.Pattern -> Typed.TypedTerm Model.CommonConstraint
-commonConstraintPattern x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.CommonConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "pattern"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the property variant of hydra.shacl.model.CommonConstraint
-commonConstraintProperty :: Typed.TypedTerm (S.Set (Model.Reference Model.PropertyShape)) -> Typed.TypedTerm Model.CommonConstraint
-commonConstraintProperty x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.CommonConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "property"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the xone variant of hydra.shacl.model.CommonConstraint
-commonConstraintXone :: Typed.TypedTerm (S.Set (Model.Reference Model.Shape)) -> Typed.TypedTerm Model.CommonConstraint
-commonConstraintXone x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.CommonConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "xone"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL constructor for hydra.shacl.model.CommonProperties
-commonProperties :: Typed.TypedTerm (S.Set Model.CommonConstraint) -> Typed.TypedTerm (Maybe Bool) -> Typed.TypedTerm Syntax.LangStrings -> Typed.TypedTerm Model.Severity -> Typed.TypedTerm (S.Set Syntax.RdfsClass) -> Typed.TypedTerm (S.Set Syntax.IriOrLiteral) -> Typed.TypedTerm (S.Set Syntax.Property) -> Typed.TypedTerm (S.Set Syntax.Property) -> Typed.TypedTerm Model.CommonProperties
-commonProperties constraints deactivated message severity targetClass targetNode targetObjectsOf targetSubjectsOf =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "constraints"),
-          Core.fieldTerm = (Typed.unTypedTerm constraints)},
-        Core.Field {
-          Core.fieldName = (Core.Name "deactivated"),
-          Core.fieldTerm = (Typed.unTypedTerm deactivated)},
-        Core.Field {
-          Core.fieldName = (Core.Name "message"),
-          Core.fieldTerm = (Typed.unTypedTerm message)},
-        Core.Field {
-          Core.fieldName = (Core.Name "severity"),
-          Core.fieldTerm = (Typed.unTypedTerm severity)},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetClass"),
-          Core.fieldTerm = (Typed.unTypedTerm targetClass)},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetNode"),
-          Core.fieldTerm = (Typed.unTypedTerm targetNode)},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetObjectsOf"),
-          Core.fieldTerm = (Typed.unTypedTerm targetObjectsOf)},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetSubjectsOf"),
-          Core.fieldTerm = (Typed.unTypedTerm targetSubjectsOf)}]}))
-
--- | DSL name token for hydra.shacl.model.CommonProperties
-commonPropertiesCommonProperties :: Typed.TypedName Model.CommonProperties
-commonPropertiesCommonProperties = Typed.TypedName (Core.Name "hydra.shacl.model.CommonProperties")
-
--- | DSL accessor for the constraints field of hydra.shacl.model.CommonProperties
-commonPropertiesConstraints :: Typed.TypedTerm Model.CommonProperties -> Typed.TypedTerm (S.Set Model.CommonConstraint)
-commonPropertiesConstraints x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-        Core.projectionFieldName = (Core.Name "constraints")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the deactivated field of hydra.shacl.model.CommonProperties
-commonPropertiesDeactivated :: Typed.TypedTerm Model.CommonProperties -> Typed.TypedTerm (Maybe Bool)
-commonPropertiesDeactivated x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-        Core.projectionFieldName = (Core.Name "deactivated")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the message field of hydra.shacl.model.CommonProperties
-commonPropertiesMessage :: Typed.TypedTerm Model.CommonProperties -> Typed.TypedTerm Syntax.LangStrings
-commonPropertiesMessage x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-        Core.projectionFieldName = (Core.Name "message")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the severity field of hydra.shacl.model.CommonProperties
-commonPropertiesSeverity :: Typed.TypedTerm Model.CommonProperties -> Typed.TypedTerm Model.Severity
-commonPropertiesSeverity x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-        Core.projectionFieldName = (Core.Name "severity")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the targetClass field of hydra.shacl.model.CommonProperties
-commonPropertiesTargetClass :: Typed.TypedTerm Model.CommonProperties -> Typed.TypedTerm (S.Set Syntax.RdfsClass)
-commonPropertiesTargetClass x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-        Core.projectionFieldName = (Core.Name "targetClass")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the targetNode field of hydra.shacl.model.CommonProperties
-commonPropertiesTargetNode :: Typed.TypedTerm Model.CommonProperties -> Typed.TypedTerm (S.Set Syntax.IriOrLiteral)
-commonPropertiesTargetNode x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-        Core.projectionFieldName = (Core.Name "targetNode")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the targetObjectsOf field of hydra.shacl.model.CommonProperties
-commonPropertiesTargetObjectsOf :: Typed.TypedTerm Model.CommonProperties -> Typed.TypedTerm (S.Set Syntax.Property)
-commonPropertiesTargetObjectsOf x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-        Core.projectionFieldName = (Core.Name "targetObjectsOf")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the targetSubjectsOf field of hydra.shacl.model.CommonProperties
-commonPropertiesTargetSubjectsOf :: Typed.TypedTerm Model.CommonProperties -> Typed.TypedTerm (S.Set Syntax.Property)
-commonPropertiesTargetSubjectsOf x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-        Core.projectionFieldName = (Core.Name "targetSubjectsOf")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the constraints field of hydra.shacl.model.CommonProperties
-commonPropertiesWithConstraints :: Typed.TypedTerm Model.CommonProperties -> Typed.TypedTerm (S.Set Model.CommonConstraint) -> Typed.TypedTerm Model.CommonProperties
-commonPropertiesWithConstraints original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "constraints"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "deactivated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "deactivated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "message"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "message")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "severity"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "severity")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetClass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetClass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetObjectsOf"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetObjectsOf")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetSubjectsOf"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetSubjectsOf")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the deactivated field of hydra.shacl.model.CommonProperties
-commonPropertiesWithDeactivated :: Typed.TypedTerm Model.CommonProperties -> Typed.TypedTerm (Maybe Bool) -> Typed.TypedTerm Model.CommonProperties
-commonPropertiesWithDeactivated original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "constraints"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "constraints")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "deactivated"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "message"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "message")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "severity"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "severity")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetClass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetClass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetObjectsOf"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetObjectsOf")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetSubjectsOf"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetSubjectsOf")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the message field of hydra.shacl.model.CommonProperties
-commonPropertiesWithMessage :: Typed.TypedTerm Model.CommonProperties -> Typed.TypedTerm Syntax.LangStrings -> Typed.TypedTerm Model.CommonProperties
-commonPropertiesWithMessage original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "constraints"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "constraints")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "deactivated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "deactivated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "message"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "severity"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "severity")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetClass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetClass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetObjectsOf"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetObjectsOf")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetSubjectsOf"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetSubjectsOf")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the severity field of hydra.shacl.model.CommonProperties
-commonPropertiesWithSeverity :: Typed.TypedTerm Model.CommonProperties -> Typed.TypedTerm Model.Severity -> Typed.TypedTerm Model.CommonProperties
-commonPropertiesWithSeverity original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "constraints"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "constraints")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "deactivated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "deactivated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "message"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "message")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "severity"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetClass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetClass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetObjectsOf"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetObjectsOf")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetSubjectsOf"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetSubjectsOf")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the targetClass field of hydra.shacl.model.CommonProperties
-commonPropertiesWithTargetClass :: Typed.TypedTerm Model.CommonProperties -> Typed.TypedTerm (S.Set Syntax.RdfsClass) -> Typed.TypedTerm Model.CommonProperties
-commonPropertiesWithTargetClass original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "constraints"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "constraints")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "deactivated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "deactivated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "message"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "message")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "severity"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "severity")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetClass"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetObjectsOf"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetObjectsOf")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetSubjectsOf"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetSubjectsOf")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the targetNode field of hydra.shacl.model.CommonProperties
-commonPropertiesWithTargetNode :: Typed.TypedTerm Model.CommonProperties -> Typed.TypedTerm (S.Set Syntax.IriOrLiteral) -> Typed.TypedTerm Model.CommonProperties
-commonPropertiesWithTargetNode original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "constraints"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "constraints")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "deactivated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "deactivated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "message"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "message")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "severity"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "severity")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetClass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetClass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetNode"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetObjectsOf"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetObjectsOf")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetSubjectsOf"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetSubjectsOf")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the targetObjectsOf field of hydra.shacl.model.CommonProperties
-commonPropertiesWithTargetObjectsOf :: Typed.TypedTerm Model.CommonProperties -> Typed.TypedTerm (S.Set Syntax.Property) -> Typed.TypedTerm Model.CommonProperties
-commonPropertiesWithTargetObjectsOf original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "constraints"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "constraints")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "deactivated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "deactivated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "message"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "message")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "severity"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "severity")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetClass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetClass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetObjectsOf"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetSubjectsOf"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetSubjectsOf")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the targetSubjectsOf field of hydra.shacl.model.CommonProperties
-commonPropertiesWithTargetSubjectsOf :: Typed.TypedTerm Model.CommonProperties -> Typed.TypedTerm (S.Set Syntax.Property) -> Typed.TypedTerm Model.CommonProperties
-commonPropertiesWithTargetSubjectsOf original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "constraints"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "constraints")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "deactivated"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "deactivated")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "message"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "message")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "severity"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "severity")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetClass"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetClass")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetNode"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetNode")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetObjectsOf"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.CommonProperties"),
-              Core.projectionFieldName = (Core.Name "targetObjectsOf")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "targetSubjectsOf"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL composition builder for the decoder of hydra.shacl.model.Definition
-decodeDefinition :: Typed.TypedTerm (Graph.Graph -> Core.Term -> Either Errors.DecodingError a) -> Typed.TypedTerm (Graph.Graph -> Core.Term -> Either Errors.DecodingError (Model.Definition a))
-decodeDefinition a =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.decode.shacl.model.definition")),
-      Core.applicationArgument = (Typed.unTypedTerm a)}))
-
--- | DSL composition builder for the decoder of hydra.shacl.model.Reference
-decodeReference :: Typed.TypedTerm (Graph.Graph -> Core.Term -> Either Errors.DecodingError a) -> Typed.TypedTerm (Graph.Graph -> Core.Term -> Either Errors.DecodingError (Model.Reference a))
-decodeReference a =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.decode.shacl.model.reference")),
-      Core.applicationArgument = (Typed.unTypedTerm a)}))
-
--- | DSL constructor for hydra.shacl.model.Definition
-definition :: Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm a -> Typed.TypedTerm (Model.Definition a)
-definition iri target =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.Definition"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "iri"),
-          Core.fieldTerm = (Typed.unTypedTerm iri)},
-        Core.Field {
-          Core.fieldName = (Core.Name "target"),
-          Core.fieldTerm = (Typed.unTypedTerm target)}]}))
-
--- | DSL name token for hydra.shacl.model.Definition
-definitionDefinition :: Typed.TypedName (Model.Definition a)
-definitionDefinition = Typed.TypedName (Core.Name "hydra.shacl.model.Definition")
-
--- | DSL accessor for the iri field of hydra.shacl.model.Definition
-definitionIri :: Typed.TypedTerm (Model.Definition a) -> Typed.TypedTerm Syntax.Iri
-definitionIri x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.Definition"),
-        Core.projectionFieldName = (Core.Name "iri")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the target field of hydra.shacl.model.Definition
-definitionTarget :: Typed.TypedTerm (Model.Definition a) -> Typed.TypedTerm a
-definitionTarget x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.Definition"),
-        Core.projectionFieldName = (Core.Name "target")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the iri field of hydra.shacl.model.Definition
-definitionWithIri :: Typed.TypedTerm (Model.Definition a) -> Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm (Model.Definition a)
-definitionWithIri original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.Definition"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "iri"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "target"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.Definition"),
-              Core.projectionFieldName = (Core.Name "target")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the target field of hydra.shacl.model.Definition
-definitionWithTarget :: Typed.TypedTerm (Model.Definition a) -> Typed.TypedTerm a -> Typed.TypedTerm (Model.Definition a)
-definitionWithTarget original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.Definition"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "iri"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.Definition"),
-              Core.projectionFieldName = (Core.Name "iri")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "target"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL composition builder for the encoder of hydra.shacl.model.Definition
-encodeDefinition :: Typed.TypedTerm (a -> Core.Term) -> Typed.TypedTerm (Model.Definition a -> Core.Term)
-encodeDefinition a =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.encode.shacl.model.definition")),
-      Core.applicationArgument = (Typed.unTypedTerm a)}))
-
--- | DSL composition builder for the encoder of hydra.shacl.model.Reference
-encodeReference :: Typed.TypedTerm (a -> Core.Term) -> Typed.TypedTerm (Model.Reference a -> Core.Term)
-encodeReference a =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.encode.shacl.model.reference")),
-      Core.applicationArgument = (Typed.unTypedTerm a)}))
-
--- | DSL injection for the blankNode variant of hydra.shacl.model.NodeKind
-nodeKindBlankNode :: Typed.TypedTerm Model.NodeKind
-nodeKindBlankNode =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.NodeKind"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "blankNode"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the blankNodeOrIri variant of hydra.shacl.model.NodeKind
-nodeKindBlankNodeOrIri :: Typed.TypedTerm Model.NodeKind
-nodeKindBlankNodeOrIri =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.NodeKind"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "blankNodeOrIri"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the blankNodeOrLiteral variant of hydra.shacl.model.NodeKind
-nodeKindBlankNodeOrLiteral :: Typed.TypedTerm Model.NodeKind
-nodeKindBlankNodeOrLiteral =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.NodeKind"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "blankNodeOrLiteral"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the iri variant of hydra.shacl.model.NodeKind
-nodeKindIri :: Typed.TypedTerm Model.NodeKind
-nodeKindIri =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.NodeKind"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "iri"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the iriOrLiteral variant of hydra.shacl.model.NodeKind
-nodeKindIriOrLiteral :: Typed.TypedTerm Model.NodeKind
-nodeKindIriOrLiteral =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.NodeKind"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "iriOrLiteral"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the literal variant of hydra.shacl.model.NodeKind
-nodeKindLiteral :: Typed.TypedTerm Model.NodeKind
-nodeKindLiteral =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.NodeKind"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "literal"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL name token for hydra.shacl.model.NodeKind
-nodeKindNodeKind :: Typed.TypedName Model.NodeKind
-nodeKindNodeKind = Typed.TypedName (Core.Name "hydra.shacl.model.NodeKind")
-
--- | DSL constructor for hydra.shacl.model.NodeShape
-nodeShape :: Typed.TypedTerm Model.CommonProperties -> Typed.TypedTerm Model.NodeShape
-nodeShape common =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.NodeShape"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "common"),
-          Core.fieldTerm = (Typed.unTypedTerm common)}]}))
-
--- | DSL accessor for the common field of hydra.shacl.model.NodeShape
-nodeShapeCommon :: Typed.TypedTerm Model.NodeShape -> Typed.TypedTerm Model.CommonProperties
-nodeShapeCommon x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.NodeShape"),
-        Core.projectionFieldName = (Core.Name "common")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.shacl.model.NodeShape
-nodeShapeNodeShape :: Typed.TypedName Model.NodeShape
-nodeShapeNodeShape = Typed.TypedName (Core.Name "hydra.shacl.model.NodeShape")
-
--- | DSL updater for the common field of hydra.shacl.model.NodeShape
-nodeShapeWithCommon :: Typed.TypedTerm Model.NodeShape -> Typed.TypedTerm Model.CommonProperties -> Typed.TypedTerm Model.NodeShape
-nodeShapeWithCommon original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.NodeShape"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "common"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.shacl.model.Pattern
-pattern :: Typed.TypedTerm String -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Model.Pattern
-pattern regex flags =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.Pattern"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "regex"),
-          Core.fieldTerm = (Typed.unTypedTerm regex)},
-        Core.Field {
-          Core.fieldName = (Core.Name "flags"),
-          Core.fieldTerm = (Typed.unTypedTerm flags)}]}))
-
--- | DSL accessor for the flags field of hydra.shacl.model.Pattern
-patternFlags :: Typed.TypedTerm Model.Pattern -> Typed.TypedTerm (Maybe String)
-patternFlags x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.Pattern"),
-        Core.projectionFieldName = (Core.Name "flags")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.shacl.model.Pattern
-patternPattern :: Typed.TypedName Model.Pattern
-patternPattern = Typed.TypedName (Core.Name "hydra.shacl.model.Pattern")
-
--- | DSL accessor for the regex field of hydra.shacl.model.Pattern
-patternRegex :: Typed.TypedTerm Model.Pattern -> Typed.TypedTerm String
-patternRegex x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.Pattern"),
-        Core.projectionFieldName = (Core.Name "regex")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the flags field of hydra.shacl.model.Pattern
-patternWithFlags :: Typed.TypedTerm Model.Pattern -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm Model.Pattern
-patternWithFlags original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.Pattern"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "regex"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.Pattern"),
-              Core.projectionFieldName = (Core.Name "regex")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "flags"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL updater for the regex field of hydra.shacl.model.Pattern
-patternWithRegex :: Typed.TypedTerm Model.Pattern -> Typed.TypedTerm String -> Typed.TypedTerm Model.Pattern
-patternWithRegex original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.Pattern"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "regex"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "flags"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.Pattern"),
-              Core.projectionFieldName = (Core.Name "flags")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL constructor for hydra.shacl.model.PropertyShape
-propertyShape :: Typed.TypedTerm Model.CommonProperties -> Typed.TypedTerm (S.Set Model.PropertyShapeConstraint) -> Typed.TypedTerm (Maybe Syntax.Node) -> Typed.TypedTerm Syntax.LangStrings -> Typed.TypedTerm Syntax.LangStrings -> Typed.TypedTerm (Maybe Integer) -> Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm Model.PropertyShape
-propertyShape common constraints defaultValue description name order path =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "common"),
-          Core.fieldTerm = (Typed.unTypedTerm common)},
-        Core.Field {
-          Core.fieldName = (Core.Name "constraints"),
-          Core.fieldTerm = (Typed.unTypedTerm constraints)},
-        Core.Field {
-          Core.fieldName = (Core.Name "defaultValue"),
-          Core.fieldTerm = (Typed.unTypedTerm defaultValue)},
-        Core.Field {
-          Core.fieldName = (Core.Name "description"),
-          Core.fieldTerm = (Typed.unTypedTerm description)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm name)},
-        Core.Field {
-          Core.fieldName = (Core.Name "order"),
-          Core.fieldTerm = (Typed.unTypedTerm order)},
-        Core.Field {
-          Core.fieldName = (Core.Name "path"),
-          Core.fieldTerm = (Typed.unTypedTerm path)}]}))
-
--- | DSL accessor for the common field of hydra.shacl.model.PropertyShape
-propertyShapeCommon :: Typed.TypedTerm Model.PropertyShape -> Typed.TypedTerm Model.CommonProperties
-propertyShapeCommon x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-        Core.projectionFieldName = (Core.Name "common")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL injection for the lessThan variant of hydra.shacl.model.PropertyShapeConstraint
-propertyShapeConstraintLessThan :: Typed.TypedTerm (S.Set Syntax.Property) -> Typed.TypedTerm Model.PropertyShapeConstraint
-propertyShapeConstraintLessThan x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.PropertyShapeConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "lessThan"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the lessThanOrEquals variant of hydra.shacl.model.PropertyShapeConstraint
-propertyShapeConstraintLessThanOrEquals :: Typed.TypedTerm (S.Set Syntax.Property) -> Typed.TypedTerm Model.PropertyShapeConstraint
-propertyShapeConstraintLessThanOrEquals x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.PropertyShapeConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "lessThanOrEquals"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the maxCount variant of hydra.shacl.model.PropertyShapeConstraint
-propertyShapeConstraintMaxCount :: Typed.TypedTerm Integer -> Typed.TypedTerm Model.PropertyShapeConstraint
-propertyShapeConstraintMaxCount x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.PropertyShapeConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "maxCount"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the minCount variant of hydra.shacl.model.PropertyShapeConstraint
-propertyShapeConstraintMinCount :: Typed.TypedTerm Integer -> Typed.TypedTerm Model.PropertyShapeConstraint
-propertyShapeConstraintMinCount x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.PropertyShapeConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "minCount"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.shacl.model.PropertyShapeConstraint
-propertyShapeConstraintPropertyShapeConstraint :: Typed.TypedName Model.PropertyShapeConstraint
-propertyShapeConstraintPropertyShapeConstraint = Typed.TypedName (Core.Name "hydra.shacl.model.PropertyShapeConstraint")
-
--- | DSL injection for the qualifiedValueShape variant of hydra.shacl.model.PropertyShapeConstraint
-propertyShapeConstraintQualifiedValueShape :: Typed.TypedTerm Model.QualifiedValueShape -> Typed.TypedTerm Model.PropertyShapeConstraint
-propertyShapeConstraintQualifiedValueShape x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.PropertyShapeConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "qualifiedValueShape"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the uniqueLang variant of hydra.shacl.model.PropertyShapeConstraint
-propertyShapeConstraintUniqueLang :: Typed.TypedTerm Bool -> Typed.TypedTerm Model.PropertyShapeConstraint
-propertyShapeConstraintUniqueLang x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.PropertyShapeConstraint"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "uniqueLang"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL accessor for the constraints field of hydra.shacl.model.PropertyShape
-propertyShapeConstraints :: Typed.TypedTerm Model.PropertyShape -> Typed.TypedTerm (S.Set Model.PropertyShapeConstraint)
-propertyShapeConstraints x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-        Core.projectionFieldName = (Core.Name "constraints")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the defaultValue field of hydra.shacl.model.PropertyShape
-propertyShapeDefaultValue :: Typed.TypedTerm Model.PropertyShape -> Typed.TypedTerm (Maybe Syntax.Node)
-propertyShapeDefaultValue x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-        Core.projectionFieldName = (Core.Name "defaultValue")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the description field of hydra.shacl.model.PropertyShape
-propertyShapeDescription :: Typed.TypedTerm Model.PropertyShape -> Typed.TypedTerm Syntax.LangStrings
-propertyShapeDescription x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-        Core.projectionFieldName = (Core.Name "description")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the name field of hydra.shacl.model.PropertyShape
-propertyShapeName :: Typed.TypedTerm Model.PropertyShape -> Typed.TypedTerm Syntax.LangStrings
-propertyShapeName x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-        Core.projectionFieldName = (Core.Name "name")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the order field of hydra.shacl.model.PropertyShape
-propertyShapeOrder :: Typed.TypedTerm Model.PropertyShape -> Typed.TypedTerm (Maybe Integer)
-propertyShapeOrder x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-        Core.projectionFieldName = (Core.Name "order")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the path field of hydra.shacl.model.PropertyShape
-propertyShapePath :: Typed.TypedTerm Model.PropertyShape -> Typed.TypedTerm Syntax.Iri
-propertyShapePath x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-        Core.projectionFieldName = (Core.Name "path")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.shacl.model.PropertyShape
-propertyShapePropertyShape :: Typed.TypedName Model.PropertyShape
-propertyShapePropertyShape = Typed.TypedName (Core.Name "hydra.shacl.model.PropertyShape")
-
--- | DSL updater for the common field of hydra.shacl.model.PropertyShape
-propertyShapeWithCommon :: Typed.TypedTerm Model.PropertyShape -> Typed.TypedTerm Model.CommonProperties -> Typed.TypedTerm Model.PropertyShape
-propertyShapeWithCommon original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "common"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "constraints"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "constraints")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "defaultValue"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "defaultValue")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "description"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "description")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "order"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "order")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "path"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "path")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the constraints field of hydra.shacl.model.PropertyShape
-propertyShapeWithConstraints :: Typed.TypedTerm Model.PropertyShape -> Typed.TypedTerm (S.Set Model.PropertyShapeConstraint) -> Typed.TypedTerm Model.PropertyShape
-propertyShapeWithConstraints original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "common"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "common")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "constraints"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "defaultValue"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "defaultValue")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "description"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "description")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "order"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "order")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "path"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "path")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the defaultValue field of hydra.shacl.model.PropertyShape
-propertyShapeWithDefaultValue :: Typed.TypedTerm Model.PropertyShape -> Typed.TypedTerm (Maybe Syntax.Node) -> Typed.TypedTerm Model.PropertyShape
-propertyShapeWithDefaultValue original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "common"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "common")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "constraints"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "constraints")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "defaultValue"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "description"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "description")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "order"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "order")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "path"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "path")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the description field of hydra.shacl.model.PropertyShape
-propertyShapeWithDescription :: Typed.TypedTerm Model.PropertyShape -> Typed.TypedTerm Syntax.LangStrings -> Typed.TypedTerm Model.PropertyShape
-propertyShapeWithDescription original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "common"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "common")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "constraints"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "constraints")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "defaultValue"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "defaultValue")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "description"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "order"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "order")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "path"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "path")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the name field of hydra.shacl.model.PropertyShape
-propertyShapeWithName :: Typed.TypedTerm Model.PropertyShape -> Typed.TypedTerm Syntax.LangStrings -> Typed.TypedTerm Model.PropertyShape
-propertyShapeWithName original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "common"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "common")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "constraints"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "constraints")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "defaultValue"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "defaultValue")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "description"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "description")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "order"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "order")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "path"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "path")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the order field of hydra.shacl.model.PropertyShape
-propertyShapeWithOrder :: Typed.TypedTerm Model.PropertyShape -> Typed.TypedTerm (Maybe Integer) -> Typed.TypedTerm Model.PropertyShape
-propertyShapeWithOrder original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "common"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "common")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "constraints"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "constraints")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "defaultValue"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "defaultValue")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "description"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "description")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "order"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "path"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "path")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the path field of hydra.shacl.model.PropertyShape
-propertyShapeWithPath :: Typed.TypedTerm Model.PropertyShape -> Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm Model.PropertyShape
-propertyShapeWithPath original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "common"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "common")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "constraints"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "constraints")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "defaultValue"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "defaultValue")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "description"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "description")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "name"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "name")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "order"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.PropertyShape"),
-              Core.projectionFieldName = (Core.Name "order")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "path"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL constructor for hydra.shacl.model.QualifiedValueShape
-qualifiedValueShape :: Typed.TypedTerm (Model.Reference Model.Shape) -> Typed.TypedTerm Integer -> Typed.TypedTerm Integer -> Typed.TypedTerm (Maybe Bool) -> Typed.TypedTerm Model.QualifiedValueShape
-qualifiedValueShape qualifiedValueShape qualifiedMaxCount qualifiedMinCount qualifiedValueShapesDisjoint =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.QualifiedValueShape"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "qualifiedValueShape"),
-          Core.fieldTerm = (Typed.unTypedTerm qualifiedValueShape)},
-        Core.Field {
-          Core.fieldName = (Core.Name "qualifiedMaxCount"),
-          Core.fieldTerm = (Typed.unTypedTerm qualifiedMaxCount)},
-        Core.Field {
-          Core.fieldName = (Core.Name "qualifiedMinCount"),
-          Core.fieldTerm = (Typed.unTypedTerm qualifiedMinCount)},
-        Core.Field {
-          Core.fieldName = (Core.Name "qualifiedValueShapesDisjoint"),
-          Core.fieldTerm = (Typed.unTypedTerm qualifiedValueShapesDisjoint)}]}))
-
--- | DSL accessor for the qualifiedMaxCount field of hydra.shacl.model.QualifiedValueShape
-qualifiedValueShapeQualifiedMaxCount :: Typed.TypedTerm Model.QualifiedValueShape -> Typed.TypedTerm Integer
-qualifiedValueShapeQualifiedMaxCount x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.QualifiedValueShape"),
-        Core.projectionFieldName = (Core.Name "qualifiedMaxCount")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the qualifiedMinCount field of hydra.shacl.model.QualifiedValueShape
-qualifiedValueShapeQualifiedMinCount :: Typed.TypedTerm Model.QualifiedValueShape -> Typed.TypedTerm Integer
-qualifiedValueShapeQualifiedMinCount x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.QualifiedValueShape"),
-        Core.projectionFieldName = (Core.Name "qualifiedMinCount")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.shacl.model.QualifiedValueShape
-qualifiedValueShapeQualifiedValueShape :: Typed.TypedName Model.QualifiedValueShape
-qualifiedValueShapeQualifiedValueShape = Typed.TypedName (Core.Name "hydra.shacl.model.QualifiedValueShape")
-
--- | DSL accessor for the qualifiedValueShape field of hydra.shacl.model.QualifiedValueShape
-qualifiedValueShapeQualifiedValueShape2 :: Typed.TypedTerm Model.QualifiedValueShape -> Typed.TypedTerm (Model.Reference Model.Shape)
-qualifiedValueShapeQualifiedValueShape2 x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.QualifiedValueShape"),
-        Core.projectionFieldName = (Core.Name "qualifiedValueShape")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL accessor for the qualifiedValueShapesDisjoint field of hydra.shacl.model.QualifiedValueShape
-qualifiedValueShapeQualifiedValueShapesDisjoint :: Typed.TypedTerm Model.QualifiedValueShape -> Typed.TypedTerm (Maybe Bool)
-qualifiedValueShapeQualifiedValueShapesDisjoint x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermProject (Core.Projection {
-        Core.projectionTypeName = (Core.Name "hydra.shacl.model.QualifiedValueShape"),
-        Core.projectionFieldName = (Core.Name "qualifiedValueShapesDisjoint")})),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
-
--- | DSL updater for the qualifiedMaxCount field of hydra.shacl.model.QualifiedValueShape
-qualifiedValueShapeWithQualifiedMaxCount :: Typed.TypedTerm Model.QualifiedValueShape -> Typed.TypedTerm Integer -> Typed.TypedTerm Model.QualifiedValueShape
-qualifiedValueShapeWithQualifiedMaxCount original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.QualifiedValueShape"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "qualifiedValueShape"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.QualifiedValueShape"),
-              Core.projectionFieldName = (Core.Name "qualifiedValueShape")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "qualifiedMaxCount"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "qualifiedMinCount"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.QualifiedValueShape"),
-              Core.projectionFieldName = (Core.Name "qualifiedMinCount")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "qualifiedValueShapesDisjoint"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.QualifiedValueShape"),
-              Core.projectionFieldName = (Core.Name "qualifiedValueShapesDisjoint")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the qualifiedMinCount field of hydra.shacl.model.QualifiedValueShape
-qualifiedValueShapeWithQualifiedMinCount :: Typed.TypedTerm Model.QualifiedValueShape -> Typed.TypedTerm Integer -> Typed.TypedTerm Model.QualifiedValueShape
-qualifiedValueShapeWithQualifiedMinCount original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.QualifiedValueShape"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "qualifiedValueShape"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.QualifiedValueShape"),
-              Core.projectionFieldName = (Core.Name "qualifiedValueShape")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "qualifiedMaxCount"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.QualifiedValueShape"),
-              Core.projectionFieldName = (Core.Name "qualifiedMaxCount")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "qualifiedMinCount"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "qualifiedValueShapesDisjoint"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.QualifiedValueShape"),
-              Core.projectionFieldName = (Core.Name "qualifiedValueShapesDisjoint")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the qualifiedValueShape field of hydra.shacl.model.QualifiedValueShape
-qualifiedValueShapeWithQualifiedValueShape :: Typed.TypedTerm Model.QualifiedValueShape -> Typed.TypedTerm (Model.Reference Model.Shape) -> Typed.TypedTerm Model.QualifiedValueShape
-qualifiedValueShapeWithQualifiedValueShape original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.QualifiedValueShape"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "qualifiedValueShape"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)},
-        Core.Field {
-          Core.fieldName = (Core.Name "qualifiedMaxCount"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.QualifiedValueShape"),
-              Core.projectionFieldName = (Core.Name "qualifiedMaxCount")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "qualifiedMinCount"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.QualifiedValueShape"),
-              Core.projectionFieldName = (Core.Name "qualifiedMinCount")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "qualifiedValueShapesDisjoint"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.QualifiedValueShape"),
-              Core.projectionFieldName = (Core.Name "qualifiedValueShapesDisjoint")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))}]}))
-
--- | DSL updater for the qualifiedValueShapesDisjoint field of hydra.shacl.model.QualifiedValueShape
-qualifiedValueShapeWithQualifiedValueShapesDisjoint :: Typed.TypedTerm Model.QualifiedValueShape -> Typed.TypedTerm (Maybe Bool) -> Typed.TypedTerm Model.QualifiedValueShape
-qualifiedValueShapeWithQualifiedValueShapesDisjoint original newVal =
-    Typed.TypedTerm (Core.TermRecord (Core.Record {
-      Core.recordTypeName = (Core.Name "hydra.shacl.model.QualifiedValueShape"),
-      Core.recordFields = [
-        Core.Field {
-          Core.fieldName = (Core.Name "qualifiedValueShape"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.QualifiedValueShape"),
-              Core.projectionFieldName = (Core.Name "qualifiedValueShape")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "qualifiedMaxCount"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.QualifiedValueShape"),
-              Core.projectionFieldName = (Core.Name "qualifiedMaxCount")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "qualifiedMinCount"),
-          Core.fieldTerm = (Core.TermApplication (Core.Application {
-            Core.applicationFunction = (Core.TermProject (Core.Projection {
-              Core.projectionTypeName = (Core.Name "hydra.shacl.model.QualifiedValueShape"),
-              Core.projectionFieldName = (Core.Name "qualifiedMinCount")})),
-            Core.applicationArgument = (Typed.unTypedTerm original)}))},
-        Core.Field {
-          Core.fieldName = (Core.Name "qualifiedValueShapesDisjoint"),
-          Core.fieldTerm = (Typed.unTypedTerm newVal)}]}))
-
--- | DSL injection for the anonymous variant of hydra.shacl.model.Reference
-referenceAnonymous :: Typed.TypedTerm a -> Typed.TypedTerm (Model.Reference a)
-referenceAnonymous x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.Reference"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "anonymous"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the definition variant of hydra.shacl.model.Reference
-referenceDefinition :: Typed.TypedTerm (Model.Definition a) -> Typed.TypedTerm (Model.Reference a)
-referenceDefinition x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.Reference"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "definition"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the named variant of hydra.shacl.model.Reference
-referenceNamed :: Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm (Model.Reference a)
-referenceNamed x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.Reference"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "named"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.shacl.model.Reference
-referenceReference :: Typed.TypedName (Model.Reference a)
-referenceReference = Typed.TypedName (Core.Name "hydra.shacl.model.Reference")
-
--- | DSL injection for the info variant of hydra.shacl.model.Severity
-severityInfo :: Typed.TypedTerm Model.Severity
-severityInfo =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.Severity"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "info"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL name token for hydra.shacl.model.Severity
-severitySeverity :: Typed.TypedName Model.Severity
-severitySeverity = Typed.TypedName (Core.Name "hydra.shacl.model.Severity")
-
--- | DSL injection for the violation variant of hydra.shacl.model.Severity
-severityViolation :: Typed.TypedTerm Model.Severity
-severityViolation =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.Severity"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "violation"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the warning variant of hydra.shacl.model.Severity
-severityWarning :: Typed.TypedTerm Model.Severity
-severityWarning =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.Severity"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "warning"),
-        Core.fieldTerm = Core.TermUnit}}))
-
--- | DSL injection for the node variant of hydra.shacl.model.Shape
-shapeNode :: Typed.TypedTerm Model.NodeShape -> Typed.TypedTerm Model.Shape
-shapeNode x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.Shape"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "node"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL injection for the property variant of hydra.shacl.model.Shape
-shapeProperty :: Typed.TypedTerm Model.PropertyShape -> Typed.TypedTerm Model.Shape
-shapeProperty x =
-    Typed.TypedTerm (Core.TermInject (Core.Injection {
-      Core.injectionTypeName = (Core.Name "hydra.shacl.model.Shape"),
-      Core.injectionField = Core.Field {
-        Core.fieldName = (Core.Name "property"),
-        Core.fieldTerm = (Typed.unTypedTerm x)}}))
-
--- | DSL name token for hydra.shacl.model.Shape
-shapeShape :: Typed.TypedName Model.Shape
-shapeShape = Typed.TypedName (Core.Name "hydra.shacl.model.Shape")
-
--- | DSL constructor for the hydra.shacl.model.ShapesGraph wrapper
-shapesGraph :: Typed.TypedTerm (S.Set (Model.Definition Model.Shape)) -> Typed.TypedTerm Model.ShapesGraph
-shapesGraph x =
-    Typed.TypedTerm (Core.TermWrap (Core.WrappedTerm {
-      Core.wrappedTermTypeName = (Core.Name "hydra.shacl.model.ShapesGraph"),
-      Core.wrappedTermBody = (Typed.unTypedTerm x)}))
-
--- | DSL name token for hydra.shacl.model.ShapesGraph
-shapesGraphShapesGraph :: Typed.TypedName Model.ShapesGraph
-shapesGraphShapesGraph = Typed.TypedName (Core.Name "hydra.shacl.model.ShapesGraph")
-
--- | DSL accessor for the body of hydra.shacl.model.ShapesGraph
-unShapesGraph :: Typed.TypedTerm Model.ShapesGraph -> Typed.TypedTerm (S.Set (Model.Definition Model.Shape))
-unShapesGraph x =
-    Typed.TypedTerm (Core.TermApplication (Core.Application {
-      Core.applicationFunction = (Core.TermUnwrap (Core.Name "hydra.shacl.model.ShapesGraph")),
-      Core.applicationArgument = (Typed.unTypedTerm x)}))
diff --git a/src/main/haskell/Hydra/Owl/Syntax.hs b/src/main/haskell/Hydra/Owl/Syntax.hs
deleted file mode 100644
--- a/src/main/haskell/Hydra/Owl/Syntax.hs
+++ /dev/null
@@ -1,1283 +0,0 @@
--- Note: this is an automatically generated file. Do not edit.
-
--- | An OWL 2 syntax model. See https://www.w3.org/TR/owl2-syntax
-
-module Hydra.Owl.Syntax where
-
-import qualified Hydra.Core as Core
-import qualified Hydra.Rdf.Syntax as Syntax
-import qualified Hydra.Xml.Schema as Schema
-import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
-import qualified Data.Scientific as Sci
-import Data.Void
-
--- | An OWL annotation on an axiom, consisting of a property and value
-data Annotation =
-  Annotation {
-    annotationAnnotations :: [Annotation],
-    annotationProperty :: AnnotationProperty,
-    annotationValue :: AnnotationValue}
-  deriving (Eq, Ord, Read, Show)
-
-_Annotation = Core.Name "hydra.owl.syntax.Annotation"
-
-_Annotation_annotations = Core.Name "annotations"
-
-_Annotation_property = Core.Name "property"
-
-_Annotation_value = Core.Name "value"
-
--- | An OWL annotation assertion axiom
-data AnnotationAssertion =
-  AnnotationAssertion {
-    annotationAssertionAnnotations :: [Annotation],
-    annotationAssertionProperty :: AnnotationProperty,
-    annotationAssertionSubject :: AnnotationSubject,
-    annotationAssertionValue :: AnnotationValue}
-  deriving (Eq, Ord, Read, Show)
-
-_AnnotationAssertion = Core.Name "hydra.owl.syntax.AnnotationAssertion"
-
-_AnnotationAssertion_annotations = Core.Name "annotations"
-
-_AnnotationAssertion_property = Core.Name "property"
-
-_AnnotationAssertion_subject = Core.Name "subject"
-
-_AnnotationAssertion_value = Core.Name "value"
-
--- | An OWL annotation axiom
-data AnnotationAxiom =
-  AnnotationAxiomAnnotationAssertion AnnotationAssertion |
-  AnnotationAxiomAnnotationPropertyDomain AnnotationPropertyDomain |
-  AnnotationAxiomAnnotationPropertyRange AnnotationPropertyRange |
-  AnnotationAxiomSubAnnotationPropertyOf SubAnnotationPropertyOf
-  deriving (Eq, Ord, Read, Show)
-
-_AnnotationAxiom = Core.Name "hydra.owl.syntax.AnnotationAxiom"
-
-_AnnotationAxiom_annotationAssertion = Core.Name "annotationAssertion"
-
-_AnnotationAxiom_annotationPropertyDomain = Core.Name "annotationPropertyDomain"
-
-_AnnotationAxiom_annotationPropertyRange = Core.Name "annotationPropertyRange"
-
-_AnnotationAxiom_subAnnotationPropertyOf = Core.Name "subAnnotationPropertyOf"
-
--- | An OWL annotation property, identified by an IRI
-newtype AnnotationProperty =
-  AnnotationProperty {
-    unAnnotationProperty :: ()}
-  deriving (Eq, Ord, Read, Show)
-
-_AnnotationProperty = Core.Name "hydra.owl.syntax.AnnotationProperty"
-
--- | An OWL axiom asserting the domain of an annotation property
-data AnnotationPropertyDomain =
-  AnnotationPropertyDomain {
-    annotationPropertyDomainAnnotations :: [Annotation],
-    annotationPropertyDomainProperty :: AnnotationProperty,
-    annotationPropertyDomainIri :: Syntax.Iri}
-  deriving (Eq, Ord, Read, Show)
-
-_AnnotationPropertyDomain = Core.Name "hydra.owl.syntax.AnnotationPropertyDomain"
-
-_AnnotationPropertyDomain_annotations = Core.Name "annotations"
-
-_AnnotationPropertyDomain_property = Core.Name "property"
-
-_AnnotationPropertyDomain_iri = Core.Name "iri"
-
--- | An OWL axiom asserting the range of an annotation property
-data AnnotationPropertyRange =
-  AnnotationPropertyRange {
-    annotationPropertyRangeAnnotations :: [Annotation],
-    annotationPropertyRangeProperty :: AnnotationProperty,
-    annotationPropertyRangeIri :: Syntax.Iri}
-  deriving (Eq, Ord, Read, Show)
-
-_AnnotationPropertyRange = Core.Name "hydra.owl.syntax.AnnotationPropertyRange"
-
-_AnnotationPropertyRange_annotations = Core.Name "annotations"
-
-_AnnotationPropertyRange_property = Core.Name "property"
-
-_AnnotationPropertyRange_iri = Core.Name "iri"
-
--- | An OWL annotation subject: an IRI or an anonymous individual
-data AnnotationSubject =
-  AnnotationSubjectIri Syntax.Iri |
-  AnnotationSubjectAnonymousIndividual AnonymousIndividual
-  deriving (Eq, Ord, Read, Show)
-
-_AnnotationSubject = Core.Name "hydra.owl.syntax.AnnotationSubject"
-
-_AnnotationSubject_iri = Core.Name "iri"
-
-_AnnotationSubject_anonymousIndividual = Core.Name "anonymousIndividual"
-
--- | An OWL annotation value: an anonymous individual, IRI, or literal
-data AnnotationValue =
-  AnnotationValueAnonymousIndividual AnonymousIndividual |
-  AnnotationValueIri Syntax.Iri |
-  AnnotationValueLiteral Syntax.Literal
-  deriving (Eq, Ord, Read, Show)
-
-_AnnotationValue = Core.Name "hydra.owl.syntax.AnnotationValue"
-
-_AnnotationValue_anonymousIndividual = Core.Name "anonymousIndividual"
-
-_AnnotationValue_iri = Core.Name "iri"
-
-_AnnotationValue_literal = Core.Name "literal"
-
--- | An OWL anonymous individual, identified by a blank node id
-newtype AnonymousIndividual =
-  AnonymousIndividual {
-    unAnonymousIndividual :: ()}
-  deriving (Eq, Ord, Read, Show)
-
-_AnonymousIndividual = Core.Name "hydra.owl.syntax.AnonymousIndividual"
-
--- | An OWL assertion axiom about individuals
-data Assertion =
-  AssertionClassAssertion ClassAssertion |
-  AssertionDataPropertyAssertion DataPropertyAssertion |
-  AssertionDifferentIndividuals DifferentIndividuals |
-  AssertionObjectPropertyAssertion ObjectPropertyAssertion |
-  AssertionNegativeDataPropertyAssertion NegativeDataPropertyAssertion |
-  AssertionNegativeObjectPropertyAssertion NegativeObjectPropertyAssertion |
-  AssertionSameIndividual SameIndividual
-  deriving (Eq, Ord, Read, Show)
-
-_Assertion = Core.Name "hydra.owl.syntax.Assertion"
-
-_Assertion_classAssertion = Core.Name "classAssertion"
-
-_Assertion_dataPropertyAssertion = Core.Name "dataPropertyAssertion"
-
-_Assertion_differentIndividuals = Core.Name "differentIndividuals"
-
-_Assertion_objectPropertyAssertion = Core.Name "objectPropertyAssertion"
-
-_Assertion_negativeDataPropertyAssertion = Core.Name "negativeDataPropertyAssertion"
-
-_Assertion_negativeObjectPropertyAssertion = Core.Name "negativeObjectPropertyAssertion"
-
-_Assertion_sameIndividual = Core.Name "sameIndividual"
-
--- | An OWL axiom asserting a characteristic (e.g. symmetric, transitive) of an object property
-data AsymmetricObjectProperty =
-  AsymmetricObjectProperty {
-    asymmetricObjectPropertyAnnotations :: [Annotation],
-    asymmetricObjectPropertyProperty :: ObjectPropertyExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_AsymmetricObjectProperty = Core.Name "hydra.owl.syntax.AsymmetricObjectProperty"
-
-_AsymmetricObjectProperty_annotations = Core.Name "annotations"
-
-_AsymmetricObjectProperty_property = Core.Name "property"
-
--- | An OWL axiom
-data Axiom =
-  AxiomAnnotationAxiom AnnotationAxiom |
-  AxiomAssertion Assertion |
-  AxiomClassAxiom ClassAxiom |
-  AxiomDataPropertyAxiom DataPropertyAxiom |
-  AxiomDatatypeDefinition DatatypeDefinition |
-  AxiomDeclaration Declaration |
-  AxiomHasKey HasKey |
-  AxiomObjectPropertyAxiom ObjectPropertyAxiom
-  deriving (Eq, Ord, Read, Show)
-
-_Axiom = Core.Name "hydra.owl.syntax.Axiom"
-
-_Axiom_annotationAxiom = Core.Name "annotationAxiom"
-
-_Axiom_assertion = Core.Name "assertion"
-
-_Axiom_classAxiom = Core.Name "classAxiom"
-
-_Axiom_dataPropertyAxiom = Core.Name "dataPropertyAxiom"
-
-_Axiom_datatypeDefinition = Core.Name "datatypeDefinition"
-
-_Axiom_declaration = Core.Name "declaration"
-
-_Axiom_hasKey = Core.Name "hasKey"
-
-_Axiom_objectPropertyAxiom = Core.Name "objectPropertyAxiom"
-
--- | An OWL class, identified by an IRI
-newtype Class =
-  Class {
-    unClass :: ()}
-  deriving (Eq, Ord, Read, Show)
-
-_Class = Core.Name "hydra.owl.syntax.Class"
-
--- | An OWL axiom asserting that an individual belongs to a class
-data ClassAssertion =
-  ClassAssertion {
-    classAssertionAnnotations :: [Annotation],
-    classAssertionClass :: ClassExpression,
-    classAssertionIndividual :: Individual}
-  deriving (Eq, Ord, Read, Show)
-
-_ClassAssertion = Core.Name "hydra.owl.syntax.ClassAssertion"
-
-_ClassAssertion_annotations = Core.Name "annotations"
-
-_ClassAssertion_class = Core.Name "class"
-
-_ClassAssertion_individual = Core.Name "individual"
-
--- | An OWL axiom about classes
-data ClassAxiom =
-  ClassAxiomDisjointClasses DisjointClasses |
-  ClassAxiomDisjointUnion DisjointUnion |
-  ClassAxiomEquivalentClasses EquivalentClasses |
-  ClassAxiomSubClassOf SubClassOf
-  deriving (Eq, Ord, Read, Show)
-
-_ClassAxiom = Core.Name "hydra.owl.syntax.ClassAxiom"
-
-_ClassAxiom_disjointClasses = Core.Name "disjointClasses"
-
-_ClassAxiom_disjointUnion = Core.Name "disjointUnion"
-
-_ClassAxiom_equivalentClasses = Core.Name "equivalentClasses"
-
-_ClassAxiom_subClassOf = Core.Name "subClassOf"
-
--- | An OWL class expression
-data ClassExpression =
-  ClassExpressionClass Class |
-  ClassExpressionDataSomeValuesFrom DataSomeValuesFrom |
-  ClassExpressionDataAllValuesFrom DataAllValuesFrom |
-  ClassExpressionDataHasValue DataHasValue |
-  ClassExpressionDataMinCardinality DataMinCardinality |
-  ClassExpressionDataMaxCardinality DataMaxCardinality |
-  ClassExpressionDataExactCardinality DataExactCardinality |
-  ClassExpressionObjectAllValuesFrom ObjectAllValuesFrom |
-  ClassExpressionObjectExactCardinality ObjectExactCardinality |
-  ClassExpressionObjectHasSelf ObjectHasSelf |
-  ClassExpressionObjectHasValue ObjectHasValue |
-  ClassExpressionObjectIntersectionOf ObjectIntersectionOf |
-  ClassExpressionObjectMaxCardinality ObjectMaxCardinality |
-  ClassExpressionObjectMinCardinality ObjectMinCardinality |
-  ClassExpressionObjectOneOf ObjectOneOf |
-  ClassExpressionObjectSomeValuesFrom ObjectSomeValuesFrom |
-  ClassExpressionObjectUnionOf ObjectUnionOf
-  deriving (Eq, Ord, Read, Show)
-
-_ClassExpression = Core.Name "hydra.owl.syntax.ClassExpression"
-
-_ClassExpression_class = Core.Name "class"
-
-_ClassExpression_dataSomeValuesFrom = Core.Name "dataSomeValuesFrom"
-
-_ClassExpression_dataAllValuesFrom = Core.Name "dataAllValuesFrom"
-
-_ClassExpression_dataHasValue = Core.Name "dataHasValue"
-
-_ClassExpression_dataMinCardinality = Core.Name "dataMinCardinality"
-
-_ClassExpression_dataMaxCardinality = Core.Name "dataMaxCardinality"
-
-_ClassExpression_dataExactCardinality = Core.Name "dataExactCardinality"
-
-_ClassExpression_objectAllValuesFrom = Core.Name "objectAllValuesFrom"
-
-_ClassExpression_objectExactCardinality = Core.Name "objectExactCardinality"
-
-_ClassExpression_objectHasSelf = Core.Name "objectHasSelf"
-
-_ClassExpression_objectHasValue = Core.Name "objectHasValue"
-
-_ClassExpression_objectIntersectionOf = Core.Name "objectIntersectionOf"
-
-_ClassExpression_objectMaxCardinality = Core.Name "objectMaxCardinality"
-
-_ClassExpression_objectMinCardinality = Core.Name "objectMinCardinality"
-
-_ClassExpression_objectOneOf = Core.Name "objectOneOf"
-
-_ClassExpression_objectSomeValuesFrom = Core.Name "objectSomeValuesFrom"
-
-_ClassExpression_objectUnionOf = Core.Name "objectUnionOf"
-
--- | An OWL universal data property restriction
-data DataAllValuesFrom =
-  DataAllValuesFrom {
-    dataAllValuesFromProperty :: [DataPropertyExpression],
-    dataAllValuesFromRange :: DataRange}
-  deriving (Eq, Ord, Read, Show)
-
-_DataAllValuesFrom = Core.Name "hydra.owl.syntax.DataAllValuesFrom"
-
-_DataAllValuesFrom_property = Core.Name "property"
-
-_DataAllValuesFrom_range = Core.Name "range"
-
--- | An OWL data range which is the complement of another data range
-newtype DataComplementOf =
-  DataComplementOf {
-    unDataComplementOf :: DataRange}
-  deriving (Eq, Ord, Read, Show)
-
-_DataComplementOf = Core.Name "hydra.owl.syntax.DataComplementOf"
-
--- | An OWL exact-cardinality restriction on a data property
-data DataExactCardinality =
-  DataExactCardinality {
-    dataExactCardinalityBound :: Integer,
-    dataExactCardinalityProperty :: DataPropertyExpression,
-    dataExactCardinalityRange :: [DataRange]}
-  deriving (Eq, Ord, Read, Show)
-
-_DataExactCardinality = Core.Name "hydra.owl.syntax.DataExactCardinality"
-
-_DataExactCardinality_bound = Core.Name "bound"
-
-_DataExactCardinality_property = Core.Name "property"
-
-_DataExactCardinality_range = Core.Name "range"
-
--- | An OWL data property restriction requiring a specific literal value
-data DataHasValue =
-  DataHasValue {
-    dataHasValueProperty :: DataPropertyExpression,
-    dataHasValueValue :: Syntax.Literal}
-  deriving (Eq, Ord, Read, Show)
-
-_DataHasValue = Core.Name "hydra.owl.syntax.DataHasValue"
-
-_DataHasValue_property = Core.Name "property"
-
-_DataHasValue_value = Core.Name "value"
-
--- | An OWL data range which is the intersection of two or more data ranges
-newtype DataIntersectionOf =
-  DataIntersectionOf {
-    unDataIntersectionOf :: [DataRange]}
-  deriving (Eq, Ord, Read, Show)
-
-_DataIntersectionOf = Core.Name "hydra.owl.syntax.DataIntersectionOf"
-
--- | An OWL maximum-cardinality restriction on a data property
-data DataMaxCardinality =
-  DataMaxCardinality {
-    dataMaxCardinalityBound :: Integer,
-    dataMaxCardinalityProperty :: DataPropertyExpression,
-    dataMaxCardinalityRange :: [DataRange]}
-  deriving (Eq, Ord, Read, Show)
-
-_DataMaxCardinality = Core.Name "hydra.owl.syntax.DataMaxCardinality"
-
-_DataMaxCardinality_bound = Core.Name "bound"
-
-_DataMaxCardinality_property = Core.Name "property"
-
-_DataMaxCardinality_range = Core.Name "range"
-
--- | An OWL minimum-cardinality restriction on a data property
-data DataMinCardinality =
-  DataMinCardinality {
-    dataMinCardinalityBound :: Integer,
-    dataMinCardinalityProperty :: DataPropertyExpression,
-    dataMinCardinalityRange :: [DataRange]}
-  deriving (Eq, Ord, Read, Show)
-
-_DataMinCardinality = Core.Name "hydra.owl.syntax.DataMinCardinality"
-
-_DataMinCardinality_bound = Core.Name "bound"
-
-_DataMinCardinality_property = Core.Name "property"
-
-_DataMinCardinality_range = Core.Name "range"
-
--- | An OWL data range enumerating one or more literals
-newtype DataOneOf =
-  DataOneOf {
-    unDataOneOf :: [Syntax.Literal]}
-  deriving (Eq, Ord, Read, Show)
-
-_DataOneOf = Core.Name "hydra.owl.syntax.DataOneOf"
-
--- | An OWL data property, identified by an IRI
-newtype DataProperty =
-  DataProperty {
-    unDataProperty :: ()}
-  deriving (Eq, Ord, Read, Show)
-
-_DataProperty = Core.Name "hydra.owl.syntax.DataProperty"
-
--- | An OWL axiom asserting a data property relationship between an individual and a literal
-data DataPropertyAssertion =
-  DataPropertyAssertion {
-    dataPropertyAssertionAnnotations :: [Annotation],
-    dataPropertyAssertionProperty :: DataPropertyExpression,
-    dataPropertyAssertionSource :: Individual,
-    dataPropertyAssertionTarget :: Individual}
-  deriving (Eq, Ord, Read, Show)
-
-_DataPropertyAssertion = Core.Name "hydra.owl.syntax.DataPropertyAssertion"
-
-_DataPropertyAssertion_annotations = Core.Name "annotations"
-
-_DataPropertyAssertion_property = Core.Name "property"
-
-_DataPropertyAssertion_source = Core.Name "source"
-
-_DataPropertyAssertion_target = Core.Name "target"
-
--- | An OWL axiom about data properties
-data DataPropertyAxiom =
-  DataPropertyAxiomDataPropertyAxiom DataPropertyAxiom |
-  DataPropertyAxiomDataPropertyRange DataPropertyRange |
-  DataPropertyAxiomDisjointDataProperties DisjointDataProperties |
-  DataPropertyAxiomEquivalentDataProperties EquivalentDataProperties |
-  DataPropertyAxiomFunctionalDataProperty FunctionalDataProperty |
-  DataPropertyAxiomSubDataPropertyOf SubDataPropertyOf
-  deriving (Eq, Ord, Read, Show)
-
-_DataPropertyAxiom = Core.Name "hydra.owl.syntax.DataPropertyAxiom"
-
-_DataPropertyAxiom_dataPropertyAxiom = Core.Name "dataPropertyAxiom"
-
-_DataPropertyAxiom_dataPropertyRange = Core.Name "dataPropertyRange"
-
-_DataPropertyAxiom_disjointDataProperties = Core.Name "disjointDataProperties"
-
-_DataPropertyAxiom_equivalentDataProperties = Core.Name "equivalentDataProperties"
-
-_DataPropertyAxiom_functionalDataProperty = Core.Name "functionalDataProperty"
-
-_DataPropertyAxiom_subDataPropertyOf = Core.Name "subDataPropertyOf"
-
--- | An OWL axiom asserting the domain of a data property
-data DataPropertyDomain =
-  DataPropertyDomain {
-    dataPropertyDomainAnnotations :: [Annotation],
-    dataPropertyDomainProperty :: DataPropertyExpression,
-    dataPropertyDomainDomain :: ClassExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_DataPropertyDomain = Core.Name "hydra.owl.syntax.DataPropertyDomain"
-
-_DataPropertyDomain_annotations = Core.Name "annotations"
-
-_DataPropertyDomain_property = Core.Name "property"
-
-_DataPropertyDomain_domain = Core.Name "domain"
-
--- | An OWL data property expression
-newtype DataPropertyExpression =
-  DataPropertyExpression {
-    unDataPropertyExpression :: DataProperty}
-  deriving (Eq, Ord, Read, Show)
-
-_DataPropertyExpression = Core.Name "hydra.owl.syntax.DataPropertyExpression"
-
--- | An OWL axiom asserting the range of a data property
-data DataPropertyRange =
-  DataPropertyRange {
-    dataPropertyRangeAnnotations :: [Annotation],
-    dataPropertyRangeProperty :: DataPropertyExpression,
-    dataPropertyRangeRange :: ClassExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_DataPropertyRange = Core.Name "hydra.owl.syntax.DataPropertyRange"
-
-_DataPropertyRange_annotations = Core.Name "annotations"
-
-_DataPropertyRange_property = Core.Name "property"
-
-_DataPropertyRange_range = Core.Name "range"
-
--- | An OWL data range
-data DataRange =
-  DataRangeDataComplementOf DataComplementOf |
-  DataRangeDataIntersectionOf DataIntersectionOf |
-  DataRangeDataOneOf DataOneOf |
-  DataRangeDataUnionOf DataUnionOf |
-  DataRangeDatatype Datatype |
-  DataRangeDatatypeRestriction DatatypeRestriction
-  deriving (Eq, Ord, Read, Show)
-
-_DataRange = Core.Name "hydra.owl.syntax.DataRange"
-
-_DataRange_dataComplementOf = Core.Name "dataComplementOf"
-
-_DataRange_dataIntersectionOf = Core.Name "dataIntersectionOf"
-
-_DataRange_dataOneOf = Core.Name "dataOneOf"
-
-_DataRange_dataUnionOf = Core.Name "dataUnionOf"
-
-_DataRange_datatype = Core.Name "datatype"
-
-_DataRange_datatypeRestriction = Core.Name "datatypeRestriction"
-
--- | An OWL existential data property restriction
-data DataSomeValuesFrom =
-  DataSomeValuesFrom {
-    dataSomeValuesFromProperty :: [DataPropertyExpression],
-    dataSomeValuesFromRange :: DataRange}
-  deriving (Eq, Ord, Read, Show)
-
-_DataSomeValuesFrom = Core.Name "hydra.owl.syntax.DataSomeValuesFrom"
-
-_DataSomeValuesFrom_property = Core.Name "property"
-
-_DataSomeValuesFrom_range = Core.Name "range"
-
--- | An OWL data range which is the union of two or more data ranges
-newtype DataUnionOf =
-  DataUnionOf {
-    unDataUnionOf :: [DataRange]}
-  deriving (Eq, Ord, Read, Show)
-
-_DataUnionOf = Core.Name "hydra.owl.syntax.DataUnionOf"
-
--- | An OWL datatype, identified by an IRI
-data Datatype =
-  -- | Note: XML Schema datatypes are treated as a special case in this model (not in the OWL 2 specification itself) because they are particularly common
-  DatatypeXmlSchema Schema.Datatype |
-  DatatypeOther Syntax.Iri
-  deriving (Eq, Ord, Read, Show)
-
-_Datatype = Core.Name "hydra.owl.syntax.Datatype"
-
-_Datatype_xmlSchema = Core.Name "xmlSchema"
-
-_Datatype_other = Core.Name "other"
-
--- | An OWL axiom defining a datatype in terms of a data range
-data DatatypeDefinition =
-  DatatypeDefinition {
-    datatypeDefinitionAnnotations :: [Annotation],
-    datatypeDefinitionDatatype :: Datatype,
-    datatypeDefinitionRange :: DataRange}
-  deriving (Eq, Ord, Read, Show)
-
-_DatatypeDefinition = Core.Name "hydra.owl.syntax.DatatypeDefinition"
-
-_DatatypeDefinition_annotations = Core.Name "annotations"
-
-_DatatypeDefinition_datatype = Core.Name "datatype"
-
-_DatatypeDefinition_range = Core.Name "range"
-
--- | An OWL datatype restricted by one or more constraining facets
-data DatatypeRestriction =
-  DatatypeRestriction {
-    datatypeRestrictionDatatype :: Datatype,
-    datatypeRestrictionConstraints :: [DatatypeRestrictionConstraint]}
-  deriving (Eq, Ord, Read, Show)
-
-_DatatypeRestriction = Core.Name "hydra.owl.syntax.DatatypeRestriction"
-
-_DatatypeRestriction_datatype = Core.Name "datatype"
-
-_DatatypeRestriction_constraints = Core.Name "constraints"
-
--- | A constraining facet used in an OWL datatype restriction
-data DatatypeRestrictionConstrainingFacet =
-  -- | Note: XML Schema constraining facets are treated as a special case in this model (not in the OWL 2 specification itself) because they are particularly common
-  DatatypeRestrictionConstrainingFacetXmlSchema Schema.ConstrainingFacet |
-  DatatypeRestrictionConstrainingFacetOther Syntax.Iri
-  deriving (Eq, Ord, Read, Show)
-
-_DatatypeRestrictionConstrainingFacet = Core.Name "hydra.owl.syntax.DatatypeRestrictionConstrainingFacet"
-
-_DatatypeRestrictionConstrainingFacet_xmlSchema = Core.Name "xmlSchema"
-
-_DatatypeRestrictionConstrainingFacet_other = Core.Name "other"
-
--- | A single constraining facet and its restriction value in an OWL datatype restriction
-data DatatypeRestrictionConstraint =
-  DatatypeRestrictionConstraint {
-    datatypeRestrictionConstraintConstrainingFacet :: DatatypeRestrictionConstrainingFacet,
-    datatypeRestrictionConstraintRestrictionValue :: Syntax.Literal}
-  deriving (Eq, Ord, Read, Show)
-
-_DatatypeRestrictionConstraint = Core.Name "hydra.owl.syntax.DatatypeRestrictionConstraint"
-
-_DatatypeRestrictionConstraint_constrainingFacet = Core.Name "constrainingFacet"
-
-_DatatypeRestrictionConstraint_restrictionValue = Core.Name "restrictionValue"
-
--- | An OWL entity declaration
-data Declaration =
-  Declaration {
-    declarationAnnotations :: [Annotation],
-    declarationEntity :: Entity}
-  deriving (Eq, Ord, Read, Show)
-
-_Declaration = Core.Name "hydra.owl.syntax.Declaration"
-
-_Declaration_annotations = Core.Name "annotations"
-
-_Declaration_entity = Core.Name "entity"
-
--- | An OWL axiom asserting that two or more individuals are pairwise distinct
-data DifferentIndividuals =
-  DifferentIndividuals {
-    differentIndividualsAnnotations :: [Annotation],
-    differentIndividualsIndividuals :: [Individual]}
-  deriving (Eq, Ord, Read, Show)
-
-_DifferentIndividuals = Core.Name "hydra.owl.syntax.DifferentIndividuals"
-
-_DifferentIndividuals_annotations = Core.Name "annotations"
-
-_DifferentIndividuals_individuals = Core.Name "individuals"
-
--- | An OWL axiom asserting that two or more classes are pairwise disjoint
-data DisjointClasses =
-  DisjointClasses {
-    disjointClassesAnnotations :: [Annotation],
-    disjointClassesClasses :: [ClassExpression]}
-  deriving (Eq, Ord, Read, Show)
-
-_DisjointClasses = Core.Name "hydra.owl.syntax.DisjointClasses"
-
-_DisjointClasses_annotations = Core.Name "annotations"
-
-_DisjointClasses_classes = Core.Name "classes"
-
--- | An OWL axiom asserting that two or more data properties are pairwise disjoint
-data DisjointDataProperties =
-  DisjointDataProperties {
-    disjointDataPropertiesAnnotations :: [Annotation],
-    disjointDataPropertiesProperties :: [DataPropertyExpression]}
-  deriving (Eq, Ord, Read, Show)
-
-_DisjointDataProperties = Core.Name "hydra.owl.syntax.DisjointDataProperties"
-
-_DisjointDataProperties_annotations = Core.Name "annotations"
-
-_DisjointDataProperties_properties = Core.Name "properties"
-
--- | An OWL axiom asserting that two or more object properties are pairwise disjoint
-data DisjointObjectProperties =
-  DisjointObjectProperties {
-    disjointObjectPropertiesAnnotations :: [Annotation],
-    disjointObjectPropertiesProperties :: [ObjectPropertyExpression]}
-  deriving (Eq, Ord, Read, Show)
-
-_DisjointObjectProperties = Core.Name "hydra.owl.syntax.DisjointObjectProperties"
-
-_DisjointObjectProperties_annotations = Core.Name "annotations"
-
-_DisjointObjectProperties_properties = Core.Name "properties"
-
--- | An OWL axiom asserting that a class is the disjoint union of other class expressions
-data DisjointUnion =
-  DisjointUnion {
-    disjointUnionAnnotations :: [Annotation],
-    disjointUnionClass :: Class,
-    disjointUnionClasses :: [ClassExpression]}
-  deriving (Eq, Ord, Read, Show)
-
-_DisjointUnion = Core.Name "hydra.owl.syntax.DisjointUnion"
-
-_DisjointUnion_annotations = Core.Name "annotations"
-
-_DisjointUnion_class = Core.Name "class"
-
-_DisjointUnion_classes = Core.Name "classes"
-
--- | An OWL entity: a class, datatype, object/data/annotation property, or named individual
-data Entity =
-  EntityAnnotationProperty AnnotationProperty |
-  EntityClass Class |
-  EntityDataProperty DataProperty |
-  EntityDatatype Datatype |
-  EntityNamedIndividual NamedIndividual |
-  EntityObjectProperty ObjectProperty
-  deriving (Eq, Ord, Read, Show)
-
-_Entity = Core.Name "hydra.owl.syntax.Entity"
-
-_Entity_annotationProperty = Core.Name "annotationProperty"
-
-_Entity_class = Core.Name "class"
-
-_Entity_dataProperty = Core.Name "dataProperty"
-
-_Entity_datatype = Core.Name "datatype"
-
-_Entity_namedIndividual = Core.Name "namedIndividual"
-
-_Entity_objectProperty = Core.Name "objectProperty"
-
--- | An OWL axiom asserting that two or more classes are equivalent
-data EquivalentClasses =
-  EquivalentClasses {
-    equivalentClassesAnnotations :: [Annotation],
-    equivalentClassesClasses :: [ClassExpression]}
-  deriving (Eq, Ord, Read, Show)
-
-_EquivalentClasses = Core.Name "hydra.owl.syntax.EquivalentClasses"
-
-_EquivalentClasses_annotations = Core.Name "annotations"
-
-_EquivalentClasses_classes = Core.Name "classes"
-
--- | An OWL axiom asserting that two or more data properties are equivalent
-data EquivalentDataProperties =
-  EquivalentDataProperties {
-    equivalentDataPropertiesAnnotations :: [Annotation],
-    equivalentDataPropertiesProperties :: [DataPropertyExpression]}
-  deriving (Eq, Ord, Read, Show)
-
-_EquivalentDataProperties = Core.Name "hydra.owl.syntax.EquivalentDataProperties"
-
-_EquivalentDataProperties_annotations = Core.Name "annotations"
-
-_EquivalentDataProperties_properties = Core.Name "properties"
-
--- | An OWL axiom asserting that two or more object properties are equivalent
-data EquivalentObjectProperties =
-  EquivalentObjectProperties {
-    equivalentObjectPropertiesAnnotations :: [Annotation],
-    equivalentObjectPropertiesProperties :: [ObjectPropertyExpression]}
-  deriving (Eq, Ord, Read, Show)
-
-_EquivalentObjectProperties = Core.Name "hydra.owl.syntax.EquivalentObjectProperties"
-
-_EquivalentObjectProperties_annotations = Core.Name "annotations"
-
-_EquivalentObjectProperties_properties = Core.Name "properties"
-
--- | An OWL axiom asserting that a data property is functional
-data FunctionalDataProperty =
-  FunctionalDataProperty {
-    functionalDataPropertyAnnotations :: [Annotation],
-    functionalDataPropertyProperty :: DataPropertyExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_FunctionalDataProperty = Core.Name "hydra.owl.syntax.FunctionalDataProperty"
-
-_FunctionalDataProperty_annotations = Core.Name "annotations"
-
-_FunctionalDataProperty_property = Core.Name "property"
-
--- | An OWL axiom asserting a characteristic (e.g. symmetric, transitive) of an object property
-data FunctionalObjectProperty =
-  FunctionalObjectProperty {
-    functionalObjectPropertyAnnotations :: [Annotation],
-    functionalObjectPropertyProperty :: ObjectPropertyExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_FunctionalObjectProperty = Core.Name "hydra.owl.syntax.FunctionalObjectProperty"
-
-_FunctionalObjectProperty_annotations = Core.Name "annotations"
-
-_FunctionalObjectProperty_property = Core.Name "property"
-
--- | An OWL axiom asserting that a set of properties functions as a key for a class
-data HasKey =
-  HasKey {
-    hasKeyAnnotations :: [Annotation],
-    hasKeyClass :: ClassExpression,
-    hasKeyObjectProperties :: [ObjectPropertyExpression],
-    hasKeyDataProperties :: [DataPropertyExpression]}
-  deriving (Eq, Ord, Read, Show)
-
-_HasKey = Core.Name "hydra.owl.syntax.HasKey"
-
-_HasKey_annotations = Core.Name "annotations"
-
-_HasKey_class = Core.Name "class"
-
-_HasKey_objectProperties = Core.Name "objectProperties"
-
-_HasKey_dataProperties = Core.Name "dataProperties"
-
--- | An OWL individual: a named individual or an anonymous individual
-data Individual =
-  IndividualNamed NamedIndividual |
-  IndividualAnonymous AnonymousIndividual
-  deriving (Eq, Ord, Read, Show)
-
-_Individual = Core.Name "hydra.owl.syntax.Individual"
-
-_Individual_named = Core.Name "named"
-
-_Individual_anonymous = Core.Name "anonymous"
-
--- | An OWL axiom asserting a characteristic (e.g. symmetric, transitive) of an object property
-data InverseFunctionalObjectProperty =
-  InverseFunctionalObjectProperty {
-    inverseFunctionalObjectPropertyAnnotations :: [Annotation],
-    inverseFunctionalObjectPropertyProperty :: ObjectPropertyExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_InverseFunctionalObjectProperty = Core.Name "hydra.owl.syntax.InverseFunctionalObjectProperty"
-
-_InverseFunctionalObjectProperty_annotations = Core.Name "annotations"
-
-_InverseFunctionalObjectProperty_property = Core.Name "property"
-
--- | An OWL axiom asserting that two object properties are inverses of each other
-data InverseObjectProperties =
-  InverseObjectProperties {
-    inverseObjectPropertiesAnnotations :: [Annotation],
-    inverseObjectPropertiesProperty1 :: ObjectPropertyExpression,
-    inverseObjectPropertiesProperty2 :: ObjectPropertyExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_InverseObjectProperties = Core.Name "hydra.owl.syntax.InverseObjectProperties"
-
-_InverseObjectProperties_annotations = Core.Name "annotations"
-
-_InverseObjectProperties_property1 = Core.Name "property1"
-
-_InverseObjectProperties_property2 = Core.Name "property2"
-
--- | The inverse of an OWL object property
-newtype InverseObjectProperty =
-  InverseObjectProperty {
-    unInverseObjectProperty :: ObjectProperty}
-  deriving (Eq, Ord, Read, Show)
-
-_InverseObjectProperty = Core.Name "hydra.owl.syntax.InverseObjectProperty"
-
--- | An OWL axiom asserting a characteristic (e.g. symmetric, transitive) of an object property
-data IrreflexiveObjectProperty =
-  IrreflexiveObjectProperty {
-    irreflexiveObjectPropertyAnnotations :: [Annotation],
-    irreflexiveObjectPropertyProperty :: ObjectPropertyExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_IrreflexiveObjectProperty = Core.Name "hydra.owl.syntax.IrreflexiveObjectProperty"
-
-_IrreflexiveObjectProperty_annotations = Core.Name "annotations"
-
-_IrreflexiveObjectProperty_property = Core.Name "property"
-
--- | An OWL named individual, identified by an IRI
-newtype NamedIndividual =
-  NamedIndividual {
-    unNamedIndividual :: ()}
-  deriving (Eq, Ord, Read, Show)
-
-_NamedIndividual = Core.Name "hydra.owl.syntax.NamedIndividual"
-
--- | An OWL axiom asserting that a data property relationship does NOT hold
-data NegativeDataPropertyAssertion =
-  NegativeDataPropertyAssertion {
-    negativeDataPropertyAssertionAnnotations :: [Annotation],
-    negativeDataPropertyAssertionProperty :: DataPropertyExpression,
-    negativeDataPropertyAssertionSource :: Individual,
-    negativeDataPropertyAssertionTarget :: Individual}
-  deriving (Eq, Ord, Read, Show)
-
-_NegativeDataPropertyAssertion = Core.Name "hydra.owl.syntax.NegativeDataPropertyAssertion"
-
-_NegativeDataPropertyAssertion_annotations = Core.Name "annotations"
-
-_NegativeDataPropertyAssertion_property = Core.Name "property"
-
-_NegativeDataPropertyAssertion_source = Core.Name "source"
-
-_NegativeDataPropertyAssertion_target = Core.Name "target"
-
--- | An OWL axiom asserting that an object property relationship does NOT hold
-data NegativeObjectPropertyAssertion =
-  NegativeObjectPropertyAssertion {
-    negativeObjectPropertyAssertionAnnotations :: [Annotation],
-    negativeObjectPropertyAssertionProperty :: ObjectPropertyExpression,
-    negativeObjectPropertyAssertionSource :: Individual,
-    negativeObjectPropertyAssertionTarget :: Individual}
-  deriving (Eq, Ord, Read, Show)
-
-_NegativeObjectPropertyAssertion = Core.Name "hydra.owl.syntax.NegativeObjectPropertyAssertion"
-
-_NegativeObjectPropertyAssertion_annotations = Core.Name "annotations"
-
-_NegativeObjectPropertyAssertion_property = Core.Name "property"
-
-_NegativeObjectPropertyAssertion_source = Core.Name "source"
-
-_NegativeObjectPropertyAssertion_target = Core.Name "target"
-
--- | An OWL universal object property restriction
-data ObjectAllValuesFrom =
-  ObjectAllValuesFrom {
-    objectAllValuesFromProperty :: ObjectPropertyExpression,
-    objectAllValuesFromClass :: ClassExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_ObjectAllValuesFrom = Core.Name "hydra.owl.syntax.ObjectAllValuesFrom"
-
-_ObjectAllValuesFrom_property = Core.Name "property"
-
-_ObjectAllValuesFrom_class = Core.Name "class"
-
--- | An OWL class expression which is the complement of another class expression
-newtype ObjectComplementOf =
-  ObjectComplementOf {
-    unObjectComplementOf :: ClassExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_ObjectComplementOf = Core.Name "hydra.owl.syntax.ObjectComplementOf"
-
--- | An OWL exact-cardinality restriction on an object property
-data ObjectExactCardinality =
-  ObjectExactCardinality {
-    objectExactCardinalityBound :: Integer,
-    objectExactCardinalityProperty :: ObjectPropertyExpression,
-    objectExactCardinalityClass :: [ClassExpression]}
-  deriving (Eq, Ord, Read, Show)
-
-_ObjectExactCardinality = Core.Name "hydra.owl.syntax.ObjectExactCardinality"
-
-_ObjectExactCardinality_bound = Core.Name "bound"
-
-_ObjectExactCardinality_property = Core.Name "property"
-
-_ObjectExactCardinality_class = Core.Name "class"
-
--- | An OWL class expression restricting an object property to self-relationships
-newtype ObjectHasSelf =
-  ObjectHasSelf {
-    unObjectHasSelf :: ObjectPropertyExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_ObjectHasSelf = Core.Name "hydra.owl.syntax.ObjectHasSelf"
-
--- | An OWL object property restriction requiring a specific individual value
-data ObjectHasValue =
-  ObjectHasValue {
-    objectHasValueProperty :: ObjectPropertyExpression,
-    objectHasValueIndividual :: Individual}
-  deriving (Eq, Ord, Read, Show)
-
-_ObjectHasValue = Core.Name "hydra.owl.syntax.ObjectHasValue"
-
-_ObjectHasValue_property = Core.Name "property"
-
-_ObjectHasValue_individual = Core.Name "individual"
-
--- | An OWL class expression which is the intersection of two or more class expressions
-newtype ObjectIntersectionOf =
-  ObjectIntersectionOf {
-    unObjectIntersectionOf :: [ClassExpression]}
-  deriving (Eq, Ord, Read, Show)
-
-_ObjectIntersectionOf = Core.Name "hydra.owl.syntax.ObjectIntersectionOf"
-
--- | An OWL maximum-cardinality restriction on an object property
-data ObjectMaxCardinality =
-  ObjectMaxCardinality {
-    objectMaxCardinalityBound :: Integer,
-    objectMaxCardinalityProperty :: ObjectPropertyExpression,
-    objectMaxCardinalityClass :: [ClassExpression]}
-  deriving (Eq, Ord, Read, Show)
-
-_ObjectMaxCardinality = Core.Name "hydra.owl.syntax.ObjectMaxCardinality"
-
-_ObjectMaxCardinality_bound = Core.Name "bound"
-
-_ObjectMaxCardinality_property = Core.Name "property"
-
-_ObjectMaxCardinality_class = Core.Name "class"
-
--- | An OWL minimum-cardinality restriction on an object property
-data ObjectMinCardinality =
-  ObjectMinCardinality {
-    objectMinCardinalityBound :: Integer,
-    objectMinCardinalityProperty :: ObjectPropertyExpression,
-    objectMinCardinalityClass :: [ClassExpression]}
-  deriving (Eq, Ord, Read, Show)
-
-_ObjectMinCardinality = Core.Name "hydra.owl.syntax.ObjectMinCardinality"
-
-_ObjectMinCardinality_bound = Core.Name "bound"
-
-_ObjectMinCardinality_property = Core.Name "property"
-
-_ObjectMinCardinality_class = Core.Name "class"
-
--- | An OWL class expression enumerating one or more individuals
-newtype ObjectOneOf =
-  ObjectOneOf {
-    unObjectOneOf :: [Individual]}
-  deriving (Eq, Ord, Read, Show)
-
-_ObjectOneOf = Core.Name "hydra.owl.syntax.ObjectOneOf"
-
--- | An OWL object property, identified by an IRI
-newtype ObjectProperty =
-  ObjectProperty {
-    unObjectProperty :: ()}
-  deriving (Eq, Ord, Read, Show)
-
-_ObjectProperty = Core.Name "hydra.owl.syntax.ObjectProperty"
-
--- | An OWL axiom asserting an object property relationship between two individuals
-data ObjectPropertyAssertion =
-  ObjectPropertyAssertion {
-    objectPropertyAssertionAnnotations :: [Annotation],
-    objectPropertyAssertionProperty :: ObjectPropertyExpression,
-    objectPropertyAssertionSource :: Individual,
-    objectPropertyAssertionTarget :: Individual}
-  deriving (Eq, Ord, Read, Show)
-
-_ObjectPropertyAssertion = Core.Name "hydra.owl.syntax.ObjectPropertyAssertion"
-
-_ObjectPropertyAssertion_annotations = Core.Name "annotations"
-
-_ObjectPropertyAssertion_property = Core.Name "property"
-
-_ObjectPropertyAssertion_source = Core.Name "source"
-
-_ObjectPropertyAssertion_target = Core.Name "target"
-
--- | An OWL axiom about object properties
-data ObjectPropertyAxiom =
-  ObjectPropertyAxiomAsymmetricObjectProperty AsymmetricObjectProperty |
-  ObjectPropertyAxiomDisjointObjectProperties DisjointObjectProperties |
-  ObjectPropertyAxiomEquivalentObjectProperties EquivalentObjectProperties |
-  ObjectPropertyAxiomFunctionalObjectProperty FunctionalObjectProperty |
-  ObjectPropertyAxiomInverseFunctionalObjectProperty InverseFunctionalObjectProperty |
-  ObjectPropertyAxiomInverseObjectProperties InverseObjectProperties |
-  ObjectPropertyAxiomIrreflexiveObjectProperty IrreflexiveObjectProperty |
-  ObjectPropertyAxiomObjectPropertyDomain ObjectPropertyDomain |
-  ObjectPropertyAxiomObjectPropertyRange ObjectPropertyRange |
-  ObjectPropertyAxiomReflexiveObjectProperty ReflexiveObjectProperty |
-  ObjectPropertyAxiomSubObjectPropertyOf SubObjectPropertyOf |
-  ObjectPropertyAxiomSymmetricObjectProperty SymmetricObjectProperty |
-  ObjectPropertyAxiomTransitiveObjectProperty TransitiveObjectProperty
-  deriving (Eq, Ord, Read, Show)
-
-_ObjectPropertyAxiom = Core.Name "hydra.owl.syntax.ObjectPropertyAxiom"
-
-_ObjectPropertyAxiom_asymmetricObjectProperty = Core.Name "asymmetricObjectProperty"
-
-_ObjectPropertyAxiom_disjointObjectProperties = Core.Name "disjointObjectProperties"
-
-_ObjectPropertyAxiom_equivalentObjectProperties = Core.Name "equivalentObjectProperties"
-
-_ObjectPropertyAxiom_functionalObjectProperty = Core.Name "functionalObjectProperty"
-
-_ObjectPropertyAxiom_inverseFunctionalObjectProperty = Core.Name "inverseFunctionalObjectProperty"
-
-_ObjectPropertyAxiom_inverseObjectProperties = Core.Name "inverseObjectProperties"
-
-_ObjectPropertyAxiom_irreflexiveObjectProperty = Core.Name "irreflexiveObjectProperty"
-
-_ObjectPropertyAxiom_objectPropertyDomain = Core.Name "objectPropertyDomain"
-
-_ObjectPropertyAxiom_objectPropertyRange = Core.Name "objectPropertyRange"
-
-_ObjectPropertyAxiom_reflexiveObjectProperty = Core.Name "reflexiveObjectProperty"
-
-_ObjectPropertyAxiom_subObjectPropertyOf = Core.Name "subObjectPropertyOf"
-
-_ObjectPropertyAxiom_symmetricObjectProperty = Core.Name "symmetricObjectProperty"
-
-_ObjectPropertyAxiom_transitiveObjectProperty = Core.Name "transitiveObjectProperty"
-
--- | An OWL axiom asserting the domain of an object property
-data ObjectPropertyDomain =
-  ObjectPropertyDomain {
-    objectPropertyDomainAnnotations :: [Annotation],
-    objectPropertyDomainProperty :: ObjectPropertyExpression,
-    objectPropertyDomainDomain :: ClassExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_ObjectPropertyDomain = Core.Name "hydra.owl.syntax.ObjectPropertyDomain"
-
-_ObjectPropertyDomain_annotations = Core.Name "annotations"
-
-_ObjectPropertyDomain_property = Core.Name "property"
-
-_ObjectPropertyDomain_domain = Core.Name "domain"
-
--- | An OWL object property expression: an object property or its inverse
-data ObjectPropertyExpression =
-  ObjectPropertyExpressionObject ObjectProperty |
-  ObjectPropertyExpressionInverseObject InverseObjectProperty
-  deriving (Eq, Ord, Read, Show)
-
-_ObjectPropertyExpression = Core.Name "hydra.owl.syntax.ObjectPropertyExpression"
-
-_ObjectPropertyExpression_object = Core.Name "object"
-
-_ObjectPropertyExpression_inverseObject = Core.Name "inverseObject"
-
--- | An OWL axiom asserting the range of an object property
-data ObjectPropertyRange =
-  ObjectPropertyRange {
-    objectPropertyRangeAnnotations :: [Annotation],
-    objectPropertyRangeProperty :: ObjectPropertyExpression,
-    objectPropertyRangeRange :: ClassExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_ObjectPropertyRange = Core.Name "hydra.owl.syntax.ObjectPropertyRange"
-
-_ObjectPropertyRange_annotations = Core.Name "annotations"
-
-_ObjectPropertyRange_property = Core.Name "property"
-
-_ObjectPropertyRange_range = Core.Name "range"
-
--- | An OWL existential object property restriction
-data ObjectSomeValuesFrom =
-  ObjectSomeValuesFrom {
-    objectSomeValuesFromProperty :: ObjectPropertyExpression,
-    objectSomeValuesFromClass :: ClassExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_ObjectSomeValuesFrom = Core.Name "hydra.owl.syntax.ObjectSomeValuesFrom"
-
-_ObjectSomeValuesFrom_property = Core.Name "property"
-
-_ObjectSomeValuesFrom_class = Core.Name "class"
-
--- | An OWL class expression which is the union of two or more class expressions
-newtype ObjectUnionOf =
-  ObjectUnionOf {
-    unObjectUnionOf :: [ClassExpression]}
-  deriving (Eq, Ord, Read, Show)
-
-_ObjectUnionOf = Core.Name "hydra.owl.syntax.ObjectUnionOf"
-
--- | An OWL ontology: a set of imports, annotations, and axioms
-data Ontology =
-  Ontology {
-    ontologyDirectImports :: [Ontology],
-    ontologyAnnotations :: [Annotation],
-    ontologyAxioms :: [Axiom]}
-  deriving (Eq, Ord, Read, Show)
-
-_Ontology = Core.Name "hydra.owl.syntax.Ontology"
-
-_Ontology_directImports = Core.Name "directImports"
-
-_Ontology_annotations = Core.Name "annotations"
-
-_Ontology_axioms = Core.Name "axioms"
-
--- | An OWL axiom asserting a characteristic (e.g. symmetric, transitive) of an object property
-data ReflexiveObjectProperty =
-  ReflexiveObjectProperty {
-    reflexiveObjectPropertyAnnotations :: [Annotation],
-    reflexiveObjectPropertyProperty :: ObjectPropertyExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_ReflexiveObjectProperty = Core.Name "hydra.owl.syntax.ReflexiveObjectProperty"
-
-_ReflexiveObjectProperty_annotations = Core.Name "annotations"
-
-_ReflexiveObjectProperty_property = Core.Name "property"
-
--- | An OWL axiom asserting that two or more individuals are the same
-data SameIndividual =
-  SameIndividual {
-    sameIndividualAnnotations :: [Annotation],
-    sameIndividualIndividuals :: [Individual]}
-  deriving (Eq, Ord, Read, Show)
-
-_SameIndividual = Core.Name "hydra.owl.syntax.SameIndividual"
-
-_SameIndividual_annotations = Core.Name "annotations"
-
-_SameIndividual_individuals = Core.Name "individuals"
-
--- | An OWL axiom asserting an annotation-property subsumption relationship
-data SubAnnotationPropertyOf =
-  SubAnnotationPropertyOf {
-    subAnnotationPropertyOfAnnotations :: [Annotation],
-    subAnnotationPropertyOfSubProperty :: AnnotationProperty,
-    subAnnotationPropertyOfSuperProperty :: AnnotationProperty}
-  deriving (Eq, Ord, Read, Show)
-
-_SubAnnotationPropertyOf = Core.Name "hydra.owl.syntax.SubAnnotationPropertyOf"
-
-_SubAnnotationPropertyOf_annotations = Core.Name "annotations"
-
-_SubAnnotationPropertyOf_subProperty = Core.Name "subProperty"
-
-_SubAnnotationPropertyOf_superProperty = Core.Name "superProperty"
-
--- | An OWL axiom asserting a subclass relationship
-data SubClassOf =
-  SubClassOf {
-    subClassOfAnnotations :: [Annotation],
-    subClassOfSubClass :: ClassExpression,
-    subClassOfSuperClass :: ClassExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_SubClassOf = Core.Name "hydra.owl.syntax.SubClassOf"
-
-_SubClassOf_annotations = Core.Name "annotations"
-
-_SubClassOf_subClass = Core.Name "subClass"
-
-_SubClassOf_superClass = Core.Name "superClass"
-
--- | An OWL axiom asserting a data-property subsumption relationship
-data SubDataPropertyOf =
-  SubDataPropertyOf {
-    subDataPropertyOfAnnotations :: [Annotation],
-    subDataPropertyOfSubProperty :: DataPropertyExpression,
-    subDataPropertyOfSuperProperty :: DataPropertyExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_SubDataPropertyOf = Core.Name "hydra.owl.syntax.SubDataPropertyOf"
-
-_SubDataPropertyOf_annotations = Core.Name "annotations"
-
-_SubDataPropertyOf_subProperty = Core.Name "subProperty"
-
-_SubDataPropertyOf_superProperty = Core.Name "superProperty"
-
--- | An OWL axiom asserting an object-property subsumption relationship
-data SubObjectPropertyOf =
-  SubObjectPropertyOf {
-    subObjectPropertyOfAnnotations :: [Annotation],
-    subObjectPropertyOfSubProperty :: [ObjectPropertyExpression],
-    subObjectPropertyOfSuperProperty :: ObjectPropertyExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_SubObjectPropertyOf = Core.Name "hydra.owl.syntax.SubObjectPropertyOf"
-
-_SubObjectPropertyOf_annotations = Core.Name "annotations"
-
-_SubObjectPropertyOf_subProperty = Core.Name "subProperty"
-
-_SubObjectPropertyOf_superProperty = Core.Name "superProperty"
-
--- | An OWL axiom asserting a characteristic (e.g. symmetric, transitive) of an object property
-data SymmetricObjectProperty =
-  SymmetricObjectProperty {
-    symmetricObjectPropertyAnnotations :: [Annotation],
-    symmetricObjectPropertyProperty :: ObjectPropertyExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_SymmetricObjectProperty = Core.Name "hydra.owl.syntax.SymmetricObjectProperty"
-
-_SymmetricObjectProperty_annotations = Core.Name "annotations"
-
-_SymmetricObjectProperty_property = Core.Name "property"
-
--- | An OWL axiom asserting a characteristic (e.g. symmetric, transitive) of an object property
-data TransitiveObjectProperty =
-  TransitiveObjectProperty {
-    transitiveObjectPropertyAnnotations :: [Annotation],
-    transitiveObjectPropertyProperty :: ObjectPropertyExpression}
-  deriving (Eq, Ord, Read, Show)
-
-_TransitiveObjectProperty = Core.Name "hydra.owl.syntax.TransitiveObjectProperty"
-
-_TransitiveObjectProperty_annotations = Core.Name "annotations"
-
-_TransitiveObjectProperty_property = Core.Name "property"
diff --git a/src/main/haskell/Hydra/Rdf/Dsl/Shacl/Model.hs b/src/main/haskell/Hydra/Rdf/Dsl/Shacl/Model.hs
new file mode 100644
--- /dev/null
+++ b/src/main/haskell/Hydra/Rdf/Dsl/Shacl/Model.hs
@@ -0,0 +1,1927 @@
+-- Note: this is an automatically generated file. Do not edit.
+
+-- | DSL functions for hydra.rdf.shacl.model
+
+module Hydra.Rdf.Dsl.Shacl.Model where
+
+import qualified Hydra.Core.Errors as Errors
+import qualified Hydra.Core.Graph as Graph
+import qualified Hydra.Core.Model as Model
+import qualified Hydra.Core.Typed as Typed
+import qualified Hydra.Rdf.Dsl.Syntax as DslSyntax
+import qualified Hydra.Rdf.Shacl.Model as ShaclModel
+import qualified Hydra.Rdf.Syntax as Syntax
+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
+import qualified Data.Scientific as Sci
+import Data.Void
+import qualified Data.Set as S
+
+-- | DSL constructor for hydra.rdf.shacl.model.Closed
+closed :: Typed.TypedTerm Bool -> Typed.TypedTerm (Maybe (S.Set Syntax.Property)) -> Typed.TypedTerm ShaclModel.Closed
+closed isClosed ignoredProperties =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.Closed"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "isClosed"),
+          Model.fieldTerm = (Typed.unTypedTerm isClosed)},
+        Model.Field {
+          Model.fieldName = (Model.Name "ignoredProperties"),
+          Model.fieldTerm = (Typed.unTypedTerm ignoredProperties)}]}))
+
+-- | DSL name token for hydra.rdf.shacl.model.Closed
+closedClosed :: Typed.TypedName ShaclModel.Closed
+closedClosed = Typed.TypedName (Model.Name "hydra.rdf.shacl.model.Closed")
+
+-- | DSL accessor for the ignoredProperties field of hydra.rdf.shacl.model.Closed
+closedIgnoredProperties :: Typed.TypedTerm ShaclModel.Closed -> Typed.TypedTerm (Maybe (S.Set Syntax.Property))
+closedIgnoredProperties x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.Closed"),
+        Model.projectionFieldName = (Model.Name "ignoredProperties")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the isClosed field of hydra.rdf.shacl.model.Closed
+closedIsClosed :: Typed.TypedTerm ShaclModel.Closed -> Typed.TypedTerm Bool
+closedIsClosed x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.Closed"),
+        Model.projectionFieldName = (Model.Name "isClosed")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the ignoredProperties field of hydra.rdf.shacl.model.Closed
+closedWithIgnoredProperties :: Typed.TypedTerm ShaclModel.Closed -> Typed.TypedTerm (Maybe (S.Set Syntax.Property)) -> Typed.TypedTerm ShaclModel.Closed
+closedWithIgnoredProperties original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.Closed"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "isClosed"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.Closed"),
+              Model.projectionFieldName = (Model.Name "isClosed")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "ignoredProperties"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the isClosed field of hydra.rdf.shacl.model.Closed
+closedWithIsClosed :: Typed.TypedTerm ShaclModel.Closed -> Typed.TypedTerm Bool -> Typed.TypedTerm ShaclModel.Closed
+closedWithIsClosed original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.Closed"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "isClosed"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "ignoredProperties"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.Closed"),
+              Model.projectionFieldName = (Model.Name "ignoredProperties")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL injection for the and variant of hydra.rdf.shacl.model.CommonConstraint
+commonConstraintAnd :: Typed.TypedTerm (S.Set (ShaclModel.Reference ShaclModel.Shape)) -> Typed.TypedTerm ShaclModel.CommonConstraint
+commonConstraintAnd x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "and"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the class variant of hydra.rdf.shacl.model.CommonConstraint
+commonConstraintClass :: Typed.TypedTerm (S.Set Syntax.RdfsClass) -> Typed.TypedTerm ShaclModel.CommonConstraint
+commonConstraintClass x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "class"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the closed variant of hydra.rdf.shacl.model.CommonConstraint
+commonConstraintClosed :: Typed.TypedTerm ShaclModel.Closed -> Typed.TypedTerm ShaclModel.CommonConstraint
+commonConstraintClosed x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "closed"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.rdf.shacl.model.CommonConstraint
+commonConstraintCommonConstraint :: Typed.TypedName ShaclModel.CommonConstraint
+commonConstraintCommonConstraint = Typed.TypedName (Model.Name "hydra.rdf.shacl.model.CommonConstraint")
+
+-- | DSL injection for the datatype variant of hydra.rdf.shacl.model.CommonConstraint
+commonConstraintDatatype :: Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm ShaclModel.CommonConstraint
+commonConstraintDatatype x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "datatype"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the disjoint variant of hydra.rdf.shacl.model.CommonConstraint
+commonConstraintDisjoint :: Typed.TypedTerm (S.Set Syntax.Property) -> Typed.TypedTerm ShaclModel.CommonConstraint
+commonConstraintDisjoint x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "disjoint"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the equals variant of hydra.rdf.shacl.model.CommonConstraint
+commonConstraintEquals :: Typed.TypedTerm (S.Set Syntax.Property) -> Typed.TypedTerm ShaclModel.CommonConstraint
+commonConstraintEquals x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "equals"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the hasValue variant of hydra.rdf.shacl.model.CommonConstraint
+commonConstraintHasValue :: Typed.TypedTerm (S.Set Syntax.Node) -> Typed.TypedTerm ShaclModel.CommonConstraint
+commonConstraintHasValue x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "hasValue"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the in variant of hydra.rdf.shacl.model.CommonConstraint
+commonConstraintIn :: Typed.TypedTerm [Syntax.Node] -> Typed.TypedTerm ShaclModel.CommonConstraint
+commonConstraintIn x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "in"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the languageIn variant of hydra.rdf.shacl.model.CommonConstraint
+commonConstraintLanguageIn :: Typed.TypedTerm (S.Set Syntax.LanguageTag) -> Typed.TypedTerm ShaclModel.CommonConstraint
+commonConstraintLanguageIn x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "languageIn"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the maxExclusive variant of hydra.rdf.shacl.model.CommonConstraint
+commonConstraintMaxExclusive :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm ShaclModel.CommonConstraint
+commonConstraintMaxExclusive x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "maxExclusive"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the maxInclusive variant of hydra.rdf.shacl.model.CommonConstraint
+commonConstraintMaxInclusive :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm ShaclModel.CommonConstraint
+commonConstraintMaxInclusive x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "maxInclusive"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the maxLength variant of hydra.rdf.shacl.model.CommonConstraint
+commonConstraintMaxLength :: Typed.TypedTerm Integer -> Typed.TypedTerm ShaclModel.CommonConstraint
+commonConstraintMaxLength x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "maxLength"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the minExclusive variant of hydra.rdf.shacl.model.CommonConstraint
+commonConstraintMinExclusive :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm ShaclModel.CommonConstraint
+commonConstraintMinExclusive x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "minExclusive"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the minInclusive variant of hydra.rdf.shacl.model.CommonConstraint
+commonConstraintMinInclusive :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm ShaclModel.CommonConstraint
+commonConstraintMinInclusive x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "minInclusive"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the minLength variant of hydra.rdf.shacl.model.CommonConstraint
+commonConstraintMinLength :: Typed.TypedTerm Integer -> Typed.TypedTerm ShaclModel.CommonConstraint
+commonConstraintMinLength x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "minLength"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the node variant of hydra.rdf.shacl.model.CommonConstraint
+commonConstraintNode :: Typed.TypedTerm (S.Set (ShaclModel.Reference ShaclModel.NodeShape)) -> Typed.TypedTerm ShaclModel.CommonConstraint
+commonConstraintNode x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "node"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the nodeKind variant of hydra.rdf.shacl.model.CommonConstraint
+commonConstraintNodeKind :: Typed.TypedTerm ShaclModel.NodeKind -> Typed.TypedTerm ShaclModel.CommonConstraint
+commonConstraintNodeKind x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "nodeKind"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the not variant of hydra.rdf.shacl.model.CommonConstraint
+commonConstraintNot :: Typed.TypedTerm (S.Set (ShaclModel.Reference ShaclModel.Shape)) -> Typed.TypedTerm ShaclModel.CommonConstraint
+commonConstraintNot x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "not"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the or variant of hydra.rdf.shacl.model.CommonConstraint
+commonConstraintOr :: Typed.TypedTerm (S.Set (ShaclModel.Reference ShaclModel.Shape)) -> Typed.TypedTerm ShaclModel.CommonConstraint
+commonConstraintOr x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "or"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the pattern variant of hydra.rdf.shacl.model.CommonConstraint
+commonConstraintPattern :: Typed.TypedTerm ShaclModel.Pattern -> Typed.TypedTerm ShaclModel.CommonConstraint
+commonConstraintPattern x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "pattern"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the property variant of hydra.rdf.shacl.model.CommonConstraint
+commonConstraintProperty :: Typed.TypedTerm (S.Set (ShaclModel.Reference ShaclModel.PropertyShape)) -> Typed.TypedTerm ShaclModel.CommonConstraint
+commonConstraintProperty x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "property"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the xone variant of hydra.rdf.shacl.model.CommonConstraint
+commonConstraintXone :: Typed.TypedTerm (S.Set (ShaclModel.Reference ShaclModel.Shape)) -> Typed.TypedTerm ShaclModel.CommonConstraint
+commonConstraintXone x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "xone"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for hydra.rdf.shacl.model.CommonProperties
+commonProperties :: Typed.TypedTerm (S.Set ShaclModel.CommonConstraint) -> Typed.TypedTerm (Maybe Bool) -> Typed.TypedTerm Syntax.LangStrings -> Typed.TypedTerm ShaclModel.Severity -> Typed.TypedTerm (S.Set Syntax.RdfsClass) -> Typed.TypedTerm (S.Set Syntax.IriOrLiteral) -> Typed.TypedTerm (S.Set Syntax.Property) -> Typed.TypedTerm (S.Set Syntax.Property) -> Typed.TypedTerm ShaclModel.CommonProperties
+commonProperties constraints deactivated message severity targetClass targetNode targetObjectsOf targetSubjectsOf =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "constraints"),
+          Model.fieldTerm = (Typed.unTypedTerm constraints)},
+        Model.Field {
+          Model.fieldName = (Model.Name "deactivated"),
+          Model.fieldTerm = (Typed.unTypedTerm deactivated)},
+        Model.Field {
+          Model.fieldName = (Model.Name "message"),
+          Model.fieldTerm = (Typed.unTypedTerm message)},
+        Model.Field {
+          Model.fieldName = (Model.Name "severity"),
+          Model.fieldTerm = (Typed.unTypedTerm severity)},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetClass"),
+          Model.fieldTerm = (Typed.unTypedTerm targetClass)},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetNode"),
+          Model.fieldTerm = (Typed.unTypedTerm targetNode)},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetObjectsOf"),
+          Model.fieldTerm = (Typed.unTypedTerm targetObjectsOf)},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetSubjectsOf"),
+          Model.fieldTerm = (Typed.unTypedTerm targetSubjectsOf)}]}))
+
+-- | DSL name token for hydra.rdf.shacl.model.CommonProperties
+commonPropertiesCommonProperties :: Typed.TypedName ShaclModel.CommonProperties
+commonPropertiesCommonProperties = Typed.TypedName (Model.Name "hydra.rdf.shacl.model.CommonProperties")
+
+-- | DSL accessor for the constraints field of hydra.rdf.shacl.model.CommonProperties
+commonPropertiesConstraints :: Typed.TypedTerm ShaclModel.CommonProperties -> Typed.TypedTerm (S.Set ShaclModel.CommonConstraint)
+commonPropertiesConstraints x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+        Model.projectionFieldName = (Model.Name "constraints")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the deactivated field of hydra.rdf.shacl.model.CommonProperties
+commonPropertiesDeactivated :: Typed.TypedTerm ShaclModel.CommonProperties -> Typed.TypedTerm (Maybe Bool)
+commonPropertiesDeactivated x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+        Model.projectionFieldName = (Model.Name "deactivated")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the message field of hydra.rdf.shacl.model.CommonProperties
+commonPropertiesMessage :: Typed.TypedTerm ShaclModel.CommonProperties -> Typed.TypedTerm Syntax.LangStrings
+commonPropertiesMessage x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+        Model.projectionFieldName = (Model.Name "message")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the severity field of hydra.rdf.shacl.model.CommonProperties
+commonPropertiesSeverity :: Typed.TypedTerm ShaclModel.CommonProperties -> Typed.TypedTerm ShaclModel.Severity
+commonPropertiesSeverity x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+        Model.projectionFieldName = (Model.Name "severity")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the targetClass field of hydra.rdf.shacl.model.CommonProperties
+commonPropertiesTargetClass :: Typed.TypedTerm ShaclModel.CommonProperties -> Typed.TypedTerm (S.Set Syntax.RdfsClass)
+commonPropertiesTargetClass x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+        Model.projectionFieldName = (Model.Name "targetClass")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the targetNode field of hydra.rdf.shacl.model.CommonProperties
+commonPropertiesTargetNode :: Typed.TypedTerm ShaclModel.CommonProperties -> Typed.TypedTerm (S.Set Syntax.IriOrLiteral)
+commonPropertiesTargetNode x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+        Model.projectionFieldName = (Model.Name "targetNode")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the targetObjectsOf field of hydra.rdf.shacl.model.CommonProperties
+commonPropertiesTargetObjectsOf :: Typed.TypedTerm ShaclModel.CommonProperties -> Typed.TypedTerm (S.Set Syntax.Property)
+commonPropertiesTargetObjectsOf x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+        Model.projectionFieldName = (Model.Name "targetObjectsOf")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the targetSubjectsOf field of hydra.rdf.shacl.model.CommonProperties
+commonPropertiesTargetSubjectsOf :: Typed.TypedTerm ShaclModel.CommonProperties -> Typed.TypedTerm (S.Set Syntax.Property)
+commonPropertiesTargetSubjectsOf x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+        Model.projectionFieldName = (Model.Name "targetSubjectsOf")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the constraints field of hydra.rdf.shacl.model.CommonProperties
+commonPropertiesWithConstraints :: Typed.TypedTerm ShaclModel.CommonProperties -> Typed.TypedTerm (S.Set ShaclModel.CommonConstraint) -> Typed.TypedTerm ShaclModel.CommonProperties
+commonPropertiesWithConstraints original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "constraints"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "deactivated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "deactivated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "message"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "message")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "severity"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "severity")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetClass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetClass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetObjectsOf"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetObjectsOf")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetSubjectsOf"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetSubjectsOf")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the deactivated field of hydra.rdf.shacl.model.CommonProperties
+commonPropertiesWithDeactivated :: Typed.TypedTerm ShaclModel.CommonProperties -> Typed.TypedTerm (Maybe Bool) -> Typed.TypedTerm ShaclModel.CommonProperties
+commonPropertiesWithDeactivated original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "constraints"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "constraints")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "deactivated"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "message"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "message")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "severity"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "severity")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetClass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetClass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetObjectsOf"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetObjectsOf")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetSubjectsOf"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetSubjectsOf")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the message field of hydra.rdf.shacl.model.CommonProperties
+commonPropertiesWithMessage :: Typed.TypedTerm ShaclModel.CommonProperties -> Typed.TypedTerm Syntax.LangStrings -> Typed.TypedTerm ShaclModel.CommonProperties
+commonPropertiesWithMessage original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "constraints"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "constraints")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "deactivated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "deactivated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "message"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "severity"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "severity")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetClass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetClass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetObjectsOf"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetObjectsOf")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetSubjectsOf"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetSubjectsOf")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the severity field of hydra.rdf.shacl.model.CommonProperties
+commonPropertiesWithSeverity :: Typed.TypedTerm ShaclModel.CommonProperties -> Typed.TypedTerm ShaclModel.Severity -> Typed.TypedTerm ShaclModel.CommonProperties
+commonPropertiesWithSeverity original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "constraints"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "constraints")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "deactivated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "deactivated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "message"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "message")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "severity"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetClass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetClass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetObjectsOf"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetObjectsOf")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetSubjectsOf"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetSubjectsOf")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the targetClass field of hydra.rdf.shacl.model.CommonProperties
+commonPropertiesWithTargetClass :: Typed.TypedTerm ShaclModel.CommonProperties -> Typed.TypedTerm (S.Set Syntax.RdfsClass) -> Typed.TypedTerm ShaclModel.CommonProperties
+commonPropertiesWithTargetClass original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "constraints"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "constraints")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "deactivated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "deactivated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "message"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "message")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "severity"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "severity")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetClass"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetObjectsOf"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetObjectsOf")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetSubjectsOf"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetSubjectsOf")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the targetNode field of hydra.rdf.shacl.model.CommonProperties
+commonPropertiesWithTargetNode :: Typed.TypedTerm ShaclModel.CommonProperties -> Typed.TypedTerm (S.Set Syntax.IriOrLiteral) -> Typed.TypedTerm ShaclModel.CommonProperties
+commonPropertiesWithTargetNode original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "constraints"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "constraints")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "deactivated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "deactivated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "message"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "message")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "severity"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "severity")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetClass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetClass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetNode"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetObjectsOf"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetObjectsOf")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetSubjectsOf"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetSubjectsOf")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the targetObjectsOf field of hydra.rdf.shacl.model.CommonProperties
+commonPropertiesWithTargetObjectsOf :: Typed.TypedTerm ShaclModel.CommonProperties -> Typed.TypedTerm (S.Set Syntax.Property) -> Typed.TypedTerm ShaclModel.CommonProperties
+commonPropertiesWithTargetObjectsOf original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "constraints"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "constraints")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "deactivated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "deactivated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "message"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "message")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "severity"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "severity")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetClass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetClass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetObjectsOf"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetSubjectsOf"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetSubjectsOf")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the targetSubjectsOf field of hydra.rdf.shacl.model.CommonProperties
+commonPropertiesWithTargetSubjectsOf :: Typed.TypedTerm ShaclModel.CommonProperties -> Typed.TypedTerm (S.Set Syntax.Property) -> Typed.TypedTerm ShaclModel.CommonProperties
+commonPropertiesWithTargetSubjectsOf original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "constraints"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "constraints")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "deactivated"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "deactivated")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "message"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "message")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "severity"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "severity")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetClass"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetClass")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetNode"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetNode")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetObjectsOf"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.CommonProperties"),
+              Model.projectionFieldName = (Model.Name "targetObjectsOf")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "targetSubjectsOf"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL composition builder for the decoder of hydra.rdf.shacl.model.Definition
+decodeDefinition :: Typed.TypedTerm (Graph.Graph -> Model.Term -> Either Errors.DecodingError a) -> Typed.TypedTerm (Graph.Graph -> Model.Term -> Either Errors.DecodingError (ShaclModel.Definition a))
+decodeDefinition a =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.rdf.decode.shacl.model.definition")),
+      Model.applicationArgument = (Typed.unTypedTerm a)}))
+
+-- | DSL composition builder for the decoder of hydra.rdf.shacl.model.Reference
+decodeReference :: Typed.TypedTerm (Graph.Graph -> Model.Term -> Either Errors.DecodingError a) -> Typed.TypedTerm (Graph.Graph -> Model.Term -> Either Errors.DecodingError (ShaclModel.Reference a))
+decodeReference a =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.rdf.decode.shacl.model.reference")),
+      Model.applicationArgument = (Typed.unTypedTerm a)}))
+
+-- | DSL constructor for hydra.rdf.shacl.model.Definition
+definition :: Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm a -> Typed.TypedTerm (ShaclModel.Definition a)
+definition iri target =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.Definition"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "iri"),
+          Model.fieldTerm = (Typed.unTypedTerm iri)},
+        Model.Field {
+          Model.fieldName = (Model.Name "target"),
+          Model.fieldTerm = (Typed.unTypedTerm target)}]}))
+
+-- | DSL name token for hydra.rdf.shacl.model.Definition
+definitionDefinition :: Typed.TypedName (ShaclModel.Definition a)
+definitionDefinition = Typed.TypedName (Model.Name "hydra.rdf.shacl.model.Definition")
+
+-- | DSL accessor for the iri field of hydra.rdf.shacl.model.Definition
+definitionIri :: Typed.TypedTerm (ShaclModel.Definition a) -> Typed.TypedTerm Syntax.Iri
+definitionIri x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.Definition"),
+        Model.projectionFieldName = (Model.Name "iri")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the target field of hydra.rdf.shacl.model.Definition
+definitionTarget :: Typed.TypedTerm (ShaclModel.Definition a) -> Typed.TypedTerm a
+definitionTarget x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.Definition"),
+        Model.projectionFieldName = (Model.Name "target")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the iri field of hydra.rdf.shacl.model.Definition
+definitionWithIri :: Typed.TypedTerm (ShaclModel.Definition a) -> Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm (ShaclModel.Definition a)
+definitionWithIri original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.Definition"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "iri"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "target"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.Definition"),
+              Model.projectionFieldName = (Model.Name "target")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the target field of hydra.rdf.shacl.model.Definition
+definitionWithTarget :: Typed.TypedTerm (ShaclModel.Definition a) -> Typed.TypedTerm a -> Typed.TypedTerm (ShaclModel.Definition a)
+definitionWithTarget original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.Definition"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "iri"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.Definition"),
+              Model.projectionFieldName = (Model.Name "iri")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "target"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL composition builder for the encoder of hydra.rdf.shacl.model.Definition
+encodeDefinition :: Typed.TypedTerm (a -> Model.Term) -> Typed.TypedTerm (ShaclModel.Definition a -> Model.Term)
+encodeDefinition a =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.rdf.encode.shacl.model.definition")),
+      Model.applicationArgument = (Typed.unTypedTerm a)}))
+
+-- | DSL composition builder for the encoder of hydra.rdf.shacl.model.Reference
+encodeReference :: Typed.TypedTerm (a -> Model.Term) -> Typed.TypedTerm (ShaclModel.Reference a -> Model.Term)
+encodeReference a =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.rdf.encode.shacl.model.reference")),
+      Model.applicationArgument = (Typed.unTypedTerm a)}))
+
+-- | DSL injection for the blankNode variant of hydra.rdf.shacl.model.NodeKind
+nodeKindBlankNode :: Typed.TypedTerm ShaclModel.NodeKind
+nodeKindBlankNode =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.NodeKind"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "blankNode"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the blankNodeOrIri variant of hydra.rdf.shacl.model.NodeKind
+nodeKindBlankNodeOrIri :: Typed.TypedTerm ShaclModel.NodeKind
+nodeKindBlankNodeOrIri =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.NodeKind"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "blankNodeOrIri"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the blankNodeOrLiteral variant of hydra.rdf.shacl.model.NodeKind
+nodeKindBlankNodeOrLiteral :: Typed.TypedTerm ShaclModel.NodeKind
+nodeKindBlankNodeOrLiteral =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.NodeKind"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "blankNodeOrLiteral"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the iri variant of hydra.rdf.shacl.model.NodeKind
+nodeKindIri :: Typed.TypedTerm ShaclModel.NodeKind
+nodeKindIri =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.NodeKind"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "iri"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the iriOrLiteral variant of hydra.rdf.shacl.model.NodeKind
+nodeKindIriOrLiteral :: Typed.TypedTerm ShaclModel.NodeKind
+nodeKindIriOrLiteral =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.NodeKind"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "iriOrLiteral"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the literal variant of hydra.rdf.shacl.model.NodeKind
+nodeKindLiteral :: Typed.TypedTerm ShaclModel.NodeKind
+nodeKindLiteral =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.NodeKind"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "literal"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL name token for hydra.rdf.shacl.model.NodeKind
+nodeKindNodeKind :: Typed.TypedName ShaclModel.NodeKind
+nodeKindNodeKind = Typed.TypedName (Model.Name "hydra.rdf.shacl.model.NodeKind")
+
+-- | DSL constructor for hydra.rdf.shacl.model.NodeShape
+nodeShape :: Typed.TypedTerm ShaclModel.CommonProperties -> Typed.TypedTerm ShaclModel.NodeShape
+nodeShape common =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.NodeShape"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "common"),
+          Model.fieldTerm = (Typed.unTypedTerm common)}]}))
+
+-- | DSL accessor for the common field of hydra.rdf.shacl.model.NodeShape
+nodeShapeCommon :: Typed.TypedTerm ShaclModel.NodeShape -> Typed.TypedTerm ShaclModel.CommonProperties
+nodeShapeCommon x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.NodeShape"),
+        Model.projectionFieldName = (Model.Name "common")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.rdf.shacl.model.NodeShape
+nodeShapeNodeShape :: Typed.TypedName ShaclModel.NodeShape
+nodeShapeNodeShape = Typed.TypedName (Model.Name "hydra.rdf.shacl.model.NodeShape")
+
+-- | DSL updater for the common field of hydra.rdf.shacl.model.NodeShape
+nodeShapeWithCommon :: Typed.TypedTerm ShaclModel.NodeShape -> Typed.TypedTerm ShaclModel.CommonProperties -> Typed.TypedTerm ShaclModel.NodeShape
+nodeShapeWithCommon original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.NodeShape"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "common"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.rdf.shacl.model.Pattern
+pattern :: Typed.TypedTerm String -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm ShaclModel.Pattern
+pattern regex flags =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.Pattern"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "regex"),
+          Model.fieldTerm = (Typed.unTypedTerm regex)},
+        Model.Field {
+          Model.fieldName = (Model.Name "flags"),
+          Model.fieldTerm = (Typed.unTypedTerm flags)}]}))
+
+-- | DSL accessor for the flags field of hydra.rdf.shacl.model.Pattern
+patternFlags :: Typed.TypedTerm ShaclModel.Pattern -> Typed.TypedTerm (Maybe String)
+patternFlags x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.Pattern"),
+        Model.projectionFieldName = (Model.Name "flags")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.rdf.shacl.model.Pattern
+patternPattern :: Typed.TypedName ShaclModel.Pattern
+patternPattern = Typed.TypedName (Model.Name "hydra.rdf.shacl.model.Pattern")
+
+-- | DSL accessor for the regex field of hydra.rdf.shacl.model.Pattern
+patternRegex :: Typed.TypedTerm ShaclModel.Pattern -> Typed.TypedTerm String
+patternRegex x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.Pattern"),
+        Model.projectionFieldName = (Model.Name "regex")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the flags field of hydra.rdf.shacl.model.Pattern
+patternWithFlags :: Typed.TypedTerm ShaclModel.Pattern -> Typed.TypedTerm (Maybe String) -> Typed.TypedTerm ShaclModel.Pattern
+patternWithFlags original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.Pattern"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "regex"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.Pattern"),
+              Model.projectionFieldName = (Model.Name "regex")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "flags"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the regex field of hydra.rdf.shacl.model.Pattern
+patternWithRegex :: Typed.TypedTerm ShaclModel.Pattern -> Typed.TypedTerm String -> Typed.TypedTerm ShaclModel.Pattern
+patternWithRegex original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.Pattern"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "regex"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "flags"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.Pattern"),
+              Model.projectionFieldName = (Model.Name "flags")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for hydra.rdf.shacl.model.PropertyShape
+propertyShape :: Typed.TypedTerm ShaclModel.CommonProperties -> Typed.TypedTerm (S.Set ShaclModel.PropertyShapeConstraint) -> Typed.TypedTerm (Maybe Syntax.Node) -> Typed.TypedTerm Syntax.LangStrings -> Typed.TypedTerm Syntax.LangStrings -> Typed.TypedTerm (Maybe Integer) -> Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm ShaclModel.PropertyShape
+propertyShape common constraints defaultValue description name order path =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "common"),
+          Model.fieldTerm = (Typed.unTypedTerm common)},
+        Model.Field {
+          Model.fieldName = (Model.Name "constraints"),
+          Model.fieldTerm = (Typed.unTypedTerm constraints)},
+        Model.Field {
+          Model.fieldName = (Model.Name "defaultValue"),
+          Model.fieldTerm = (Typed.unTypedTerm defaultValue)},
+        Model.Field {
+          Model.fieldName = (Model.Name "description"),
+          Model.fieldTerm = (Typed.unTypedTerm description)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm name)},
+        Model.Field {
+          Model.fieldName = (Model.Name "order"),
+          Model.fieldTerm = (Typed.unTypedTerm order)},
+        Model.Field {
+          Model.fieldName = (Model.Name "path"),
+          Model.fieldTerm = (Typed.unTypedTerm path)}]}))
+
+-- | DSL accessor for the common field of hydra.rdf.shacl.model.PropertyShape
+propertyShapeCommon :: Typed.TypedTerm ShaclModel.PropertyShape -> Typed.TypedTerm ShaclModel.CommonProperties
+propertyShapeCommon x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+        Model.projectionFieldName = (Model.Name "common")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL injection for the lessThan variant of hydra.rdf.shacl.model.PropertyShapeConstraint
+propertyShapeConstraintLessThan :: Typed.TypedTerm (S.Set Syntax.Property) -> Typed.TypedTerm ShaclModel.PropertyShapeConstraint
+propertyShapeConstraintLessThan x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShapeConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "lessThan"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the lessThanOrEquals variant of hydra.rdf.shacl.model.PropertyShapeConstraint
+propertyShapeConstraintLessThanOrEquals :: Typed.TypedTerm (S.Set Syntax.Property) -> Typed.TypedTerm ShaclModel.PropertyShapeConstraint
+propertyShapeConstraintLessThanOrEquals x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShapeConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "lessThanOrEquals"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the maxCount variant of hydra.rdf.shacl.model.PropertyShapeConstraint
+propertyShapeConstraintMaxCount :: Typed.TypedTerm Integer -> Typed.TypedTerm ShaclModel.PropertyShapeConstraint
+propertyShapeConstraintMaxCount x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShapeConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "maxCount"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the minCount variant of hydra.rdf.shacl.model.PropertyShapeConstraint
+propertyShapeConstraintMinCount :: Typed.TypedTerm Integer -> Typed.TypedTerm ShaclModel.PropertyShapeConstraint
+propertyShapeConstraintMinCount x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShapeConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "minCount"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.rdf.shacl.model.PropertyShapeConstraint
+propertyShapeConstraintPropertyShapeConstraint :: Typed.TypedName ShaclModel.PropertyShapeConstraint
+propertyShapeConstraintPropertyShapeConstraint =
+    Typed.TypedName (Model.Name "hydra.rdf.shacl.model.PropertyShapeConstraint")
+
+-- | DSL injection for the qualifiedValueShape variant of hydra.rdf.shacl.model.PropertyShapeConstraint
+propertyShapeConstraintQualifiedValueShape :: Typed.TypedTerm ShaclModel.QualifiedValueShape -> Typed.TypedTerm ShaclModel.PropertyShapeConstraint
+propertyShapeConstraintQualifiedValueShape x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShapeConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "qualifiedValueShape"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the uniqueLang variant of hydra.rdf.shacl.model.PropertyShapeConstraint
+propertyShapeConstraintUniqueLang :: Typed.TypedTerm Bool -> Typed.TypedTerm ShaclModel.PropertyShapeConstraint
+propertyShapeConstraintUniqueLang x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShapeConstraint"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "uniqueLang"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL accessor for the constraints field of hydra.rdf.shacl.model.PropertyShape
+propertyShapeConstraints :: Typed.TypedTerm ShaclModel.PropertyShape -> Typed.TypedTerm (S.Set ShaclModel.PropertyShapeConstraint)
+propertyShapeConstraints x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+        Model.projectionFieldName = (Model.Name "constraints")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the defaultValue field of hydra.rdf.shacl.model.PropertyShape
+propertyShapeDefaultValue :: Typed.TypedTerm ShaclModel.PropertyShape -> Typed.TypedTerm (Maybe Syntax.Node)
+propertyShapeDefaultValue x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+        Model.projectionFieldName = (Model.Name "defaultValue")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the description field of hydra.rdf.shacl.model.PropertyShape
+propertyShapeDescription :: Typed.TypedTerm ShaclModel.PropertyShape -> Typed.TypedTerm Syntax.LangStrings
+propertyShapeDescription x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+        Model.projectionFieldName = (Model.Name "description")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the name field of hydra.rdf.shacl.model.PropertyShape
+propertyShapeName :: Typed.TypedTerm ShaclModel.PropertyShape -> Typed.TypedTerm Syntax.LangStrings
+propertyShapeName x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+        Model.projectionFieldName = (Model.Name "name")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the order field of hydra.rdf.shacl.model.PropertyShape
+propertyShapeOrder :: Typed.TypedTerm ShaclModel.PropertyShape -> Typed.TypedTerm (Maybe Integer)
+propertyShapeOrder x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+        Model.projectionFieldName = (Model.Name "order")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the path field of hydra.rdf.shacl.model.PropertyShape
+propertyShapePath :: Typed.TypedTerm ShaclModel.PropertyShape -> Typed.TypedTerm Syntax.Iri
+propertyShapePath x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+        Model.projectionFieldName = (Model.Name "path")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.rdf.shacl.model.PropertyShape
+propertyShapePropertyShape :: Typed.TypedName ShaclModel.PropertyShape
+propertyShapePropertyShape = Typed.TypedName (Model.Name "hydra.rdf.shacl.model.PropertyShape")
+
+-- | DSL updater for the common field of hydra.rdf.shacl.model.PropertyShape
+propertyShapeWithCommon :: Typed.TypedTerm ShaclModel.PropertyShape -> Typed.TypedTerm ShaclModel.CommonProperties -> Typed.TypedTerm ShaclModel.PropertyShape
+propertyShapeWithCommon original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "common"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "constraints"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "constraints")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "defaultValue"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "defaultValue")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "description"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "description")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "order"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "order")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "path"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "path")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the constraints field of hydra.rdf.shacl.model.PropertyShape
+propertyShapeWithConstraints :: Typed.TypedTerm ShaclModel.PropertyShape -> Typed.TypedTerm (S.Set ShaclModel.PropertyShapeConstraint) -> Typed.TypedTerm ShaclModel.PropertyShape
+propertyShapeWithConstraints original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "common"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "common")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "constraints"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "defaultValue"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "defaultValue")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "description"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "description")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "order"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "order")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "path"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "path")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the defaultValue field of hydra.rdf.shacl.model.PropertyShape
+propertyShapeWithDefaultValue :: Typed.TypedTerm ShaclModel.PropertyShape -> Typed.TypedTerm (Maybe Syntax.Node) -> Typed.TypedTerm ShaclModel.PropertyShape
+propertyShapeWithDefaultValue original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "common"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "common")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "constraints"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "constraints")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "defaultValue"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "description"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "description")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "order"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "order")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "path"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "path")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the description field of hydra.rdf.shacl.model.PropertyShape
+propertyShapeWithDescription :: Typed.TypedTerm ShaclModel.PropertyShape -> Typed.TypedTerm Syntax.LangStrings -> Typed.TypedTerm ShaclModel.PropertyShape
+propertyShapeWithDescription original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "common"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "common")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "constraints"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "constraints")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "defaultValue"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "defaultValue")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "description"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "order"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "order")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "path"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "path")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the name field of hydra.rdf.shacl.model.PropertyShape
+propertyShapeWithName :: Typed.TypedTerm ShaclModel.PropertyShape -> Typed.TypedTerm Syntax.LangStrings -> Typed.TypedTerm ShaclModel.PropertyShape
+propertyShapeWithName original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "common"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "common")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "constraints"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "constraints")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "defaultValue"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "defaultValue")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "description"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "description")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "order"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "order")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "path"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "path")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the order field of hydra.rdf.shacl.model.PropertyShape
+propertyShapeWithOrder :: Typed.TypedTerm ShaclModel.PropertyShape -> Typed.TypedTerm (Maybe Integer) -> Typed.TypedTerm ShaclModel.PropertyShape
+propertyShapeWithOrder original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "common"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "common")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "constraints"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "constraints")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "defaultValue"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "defaultValue")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "description"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "description")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "order"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "path"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "path")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the path field of hydra.rdf.shacl.model.PropertyShape
+propertyShapeWithPath :: Typed.TypedTerm ShaclModel.PropertyShape -> Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm ShaclModel.PropertyShape
+propertyShapeWithPath original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "common"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "common")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "constraints"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "constraints")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "defaultValue"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "defaultValue")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "description"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "description")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "name"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "name")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "order"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.PropertyShape"),
+              Model.projectionFieldName = (Model.Name "order")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "path"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.rdf.shacl.model.QualifiedValueShape
+qualifiedValueShape :: Typed.TypedTerm (ShaclModel.Reference ShaclModel.Shape) -> Typed.TypedTerm Integer -> Typed.TypedTerm Integer -> Typed.TypedTerm (Maybe Bool) -> Typed.TypedTerm ShaclModel.QualifiedValueShape
+qualifiedValueShape qualifiedValueShape qualifiedMaxCount qualifiedMinCount qualifiedValueShapesDisjoint =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.QualifiedValueShape"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "qualifiedValueShape"),
+          Model.fieldTerm = (Typed.unTypedTerm qualifiedValueShape)},
+        Model.Field {
+          Model.fieldName = (Model.Name "qualifiedMaxCount"),
+          Model.fieldTerm = (Typed.unTypedTerm qualifiedMaxCount)},
+        Model.Field {
+          Model.fieldName = (Model.Name "qualifiedMinCount"),
+          Model.fieldTerm = (Typed.unTypedTerm qualifiedMinCount)},
+        Model.Field {
+          Model.fieldName = (Model.Name "qualifiedValueShapesDisjoint"),
+          Model.fieldTerm = (Typed.unTypedTerm qualifiedValueShapesDisjoint)}]}))
+
+-- | DSL accessor for the qualifiedMaxCount field of hydra.rdf.shacl.model.QualifiedValueShape
+qualifiedValueShapeQualifiedMaxCount :: Typed.TypedTerm ShaclModel.QualifiedValueShape -> Typed.TypedTerm Integer
+qualifiedValueShapeQualifiedMaxCount x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.QualifiedValueShape"),
+        Model.projectionFieldName = (Model.Name "qualifiedMaxCount")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the qualifiedMinCount field of hydra.rdf.shacl.model.QualifiedValueShape
+qualifiedValueShapeQualifiedMinCount :: Typed.TypedTerm ShaclModel.QualifiedValueShape -> Typed.TypedTerm Integer
+qualifiedValueShapeQualifiedMinCount x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.QualifiedValueShape"),
+        Model.projectionFieldName = (Model.Name "qualifiedMinCount")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.rdf.shacl.model.QualifiedValueShape
+qualifiedValueShapeQualifiedValueShape :: Typed.TypedName ShaclModel.QualifiedValueShape
+qualifiedValueShapeQualifiedValueShape = Typed.TypedName (Model.Name "hydra.rdf.shacl.model.QualifiedValueShape")
+
+-- | DSL accessor for the qualifiedValueShape field of hydra.rdf.shacl.model.QualifiedValueShape
+qualifiedValueShapeQualifiedValueShape2 :: Typed.TypedTerm ShaclModel.QualifiedValueShape -> Typed.TypedTerm (ShaclModel.Reference ShaclModel.Shape)
+qualifiedValueShapeQualifiedValueShape2 x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.QualifiedValueShape"),
+        Model.projectionFieldName = (Model.Name "qualifiedValueShape")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the qualifiedValueShapesDisjoint field of hydra.rdf.shacl.model.QualifiedValueShape
+qualifiedValueShapeQualifiedValueShapesDisjoint :: Typed.TypedTerm ShaclModel.QualifiedValueShape -> Typed.TypedTerm (Maybe Bool)
+qualifiedValueShapeQualifiedValueShapesDisjoint x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.QualifiedValueShape"),
+        Model.projectionFieldName = (Model.Name "qualifiedValueShapesDisjoint")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the qualifiedMaxCount field of hydra.rdf.shacl.model.QualifiedValueShape
+qualifiedValueShapeWithQualifiedMaxCount :: Typed.TypedTerm ShaclModel.QualifiedValueShape -> Typed.TypedTerm Integer -> Typed.TypedTerm ShaclModel.QualifiedValueShape
+qualifiedValueShapeWithQualifiedMaxCount original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.QualifiedValueShape"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "qualifiedValueShape"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.QualifiedValueShape"),
+              Model.projectionFieldName = (Model.Name "qualifiedValueShape")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "qualifiedMaxCount"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "qualifiedMinCount"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.QualifiedValueShape"),
+              Model.projectionFieldName = (Model.Name "qualifiedMinCount")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "qualifiedValueShapesDisjoint"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.QualifiedValueShape"),
+              Model.projectionFieldName = (Model.Name "qualifiedValueShapesDisjoint")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the qualifiedMinCount field of hydra.rdf.shacl.model.QualifiedValueShape
+qualifiedValueShapeWithQualifiedMinCount :: Typed.TypedTerm ShaclModel.QualifiedValueShape -> Typed.TypedTerm Integer -> Typed.TypedTerm ShaclModel.QualifiedValueShape
+qualifiedValueShapeWithQualifiedMinCount original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.QualifiedValueShape"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "qualifiedValueShape"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.QualifiedValueShape"),
+              Model.projectionFieldName = (Model.Name "qualifiedValueShape")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "qualifiedMaxCount"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.QualifiedValueShape"),
+              Model.projectionFieldName = (Model.Name "qualifiedMaxCount")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "qualifiedMinCount"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "qualifiedValueShapesDisjoint"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.QualifiedValueShape"),
+              Model.projectionFieldName = (Model.Name "qualifiedValueShapesDisjoint")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the qualifiedValueShape field of hydra.rdf.shacl.model.QualifiedValueShape
+qualifiedValueShapeWithQualifiedValueShape :: Typed.TypedTerm ShaclModel.QualifiedValueShape -> Typed.TypedTerm (ShaclModel.Reference ShaclModel.Shape) -> Typed.TypedTerm ShaclModel.QualifiedValueShape
+qualifiedValueShapeWithQualifiedValueShape original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.QualifiedValueShape"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "qualifiedValueShape"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "qualifiedMaxCount"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.QualifiedValueShape"),
+              Model.projectionFieldName = (Model.Name "qualifiedMaxCount")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "qualifiedMinCount"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.QualifiedValueShape"),
+              Model.projectionFieldName = (Model.Name "qualifiedMinCount")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "qualifiedValueShapesDisjoint"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.QualifiedValueShape"),
+              Model.projectionFieldName = (Model.Name "qualifiedValueShapesDisjoint")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the qualifiedValueShapesDisjoint field of hydra.rdf.shacl.model.QualifiedValueShape
+qualifiedValueShapeWithQualifiedValueShapesDisjoint :: Typed.TypedTerm ShaclModel.QualifiedValueShape -> Typed.TypedTerm (Maybe Bool) -> Typed.TypedTerm ShaclModel.QualifiedValueShape
+qualifiedValueShapeWithQualifiedValueShapesDisjoint original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.shacl.model.QualifiedValueShape"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "qualifiedValueShape"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.QualifiedValueShape"),
+              Model.projectionFieldName = (Model.Name "qualifiedValueShape")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "qualifiedMaxCount"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.QualifiedValueShape"),
+              Model.projectionFieldName = (Model.Name "qualifiedMaxCount")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "qualifiedMinCount"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.shacl.model.QualifiedValueShape"),
+              Model.projectionFieldName = (Model.Name "qualifiedMinCount")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "qualifiedValueShapesDisjoint"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL injection for the anonymous variant of hydra.rdf.shacl.model.Reference
+referenceAnonymous :: Typed.TypedTerm a -> Typed.TypedTerm (ShaclModel.Reference a)
+referenceAnonymous x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.Reference"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "anonymous"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the definition variant of hydra.rdf.shacl.model.Reference
+referenceDefinition :: Typed.TypedTerm (ShaclModel.Definition a) -> Typed.TypedTerm (ShaclModel.Reference a)
+referenceDefinition x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.Reference"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "definition"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the named variant of hydra.rdf.shacl.model.Reference
+referenceNamed :: Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm (ShaclModel.Reference a)
+referenceNamed x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.Reference"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "named"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.rdf.shacl.model.Reference
+referenceReference :: Typed.TypedName (ShaclModel.Reference a)
+referenceReference = Typed.TypedName (Model.Name "hydra.rdf.shacl.model.Reference")
+
+-- | DSL injection for the info variant of hydra.rdf.shacl.model.Severity
+severityInfo :: Typed.TypedTerm ShaclModel.Severity
+severityInfo =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.Severity"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "info"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL name token for hydra.rdf.shacl.model.Severity
+severitySeverity :: Typed.TypedName ShaclModel.Severity
+severitySeverity = Typed.TypedName (Model.Name "hydra.rdf.shacl.model.Severity")
+
+-- | DSL injection for the violation variant of hydra.rdf.shacl.model.Severity
+severityViolation :: Typed.TypedTerm ShaclModel.Severity
+severityViolation =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.Severity"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "violation"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the warning variant of hydra.rdf.shacl.model.Severity
+severityWarning :: Typed.TypedTerm ShaclModel.Severity
+severityWarning =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.Severity"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "warning"),
+        Model.fieldTerm = Model.TermUnit}}))
+
+-- | DSL injection for the node variant of hydra.rdf.shacl.model.Shape
+shapeNode :: Typed.TypedTerm ShaclModel.NodeShape -> Typed.TypedTerm ShaclModel.Shape
+shapeNode x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.Shape"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "node"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the property variant of hydra.rdf.shacl.model.Shape
+shapeProperty :: Typed.TypedTerm ShaclModel.PropertyShape -> Typed.TypedTerm ShaclModel.Shape
+shapeProperty x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.shacl.model.Shape"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "property"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.rdf.shacl.model.Shape
+shapeShape :: Typed.TypedName ShaclModel.Shape
+shapeShape = Typed.TypedName (Model.Name "hydra.rdf.shacl.model.Shape")
+
+-- | DSL constructor for the hydra.rdf.shacl.model.ShapesGraph wrapper
+shapesGraph :: Typed.TypedTerm (S.Set (ShaclModel.Definition ShaclModel.Shape)) -> Typed.TypedTerm ShaclModel.ShapesGraph
+shapesGraph x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.rdf.shacl.model.ShapesGraph"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.rdf.shacl.model.ShapesGraph
+shapesGraphShapesGraph :: Typed.TypedName ShaclModel.ShapesGraph
+shapesGraphShapesGraph = Typed.TypedName (Model.Name "hydra.rdf.shacl.model.ShapesGraph")
+
+-- | DSL accessor for the body of hydra.rdf.shacl.model.ShapesGraph
+unShapesGraph :: Typed.TypedTerm ShaclModel.ShapesGraph -> Typed.TypedTerm (S.Set (ShaclModel.Definition ShaclModel.Shape))
+unShapesGraph x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.rdf.shacl.model.ShapesGraph")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
diff --git a/src/main/haskell/Hydra/Rdf/Dsl/Syntax.hs b/src/main/haskell/Hydra/Rdf/Dsl/Syntax.hs
new file mode 100644
--- /dev/null
+++ b/src/main/haskell/Hydra/Rdf/Dsl/Syntax.hs
@@ -0,0 +1,824 @@
+-- Note: this is an automatically generated file. Do not edit.
+
+-- | DSL functions for hydra.rdf.syntax
+
+module Hydra.Rdf.Dsl.Syntax where
+
+import qualified Hydra.Core.Model as Model
+import qualified Hydra.Core.Typed as Typed
+import qualified Hydra.Rdf.Syntax as Syntax
+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
+import qualified Data.Scientific as Sci
+import Data.Void
+import qualified Data.Map as M
+import qualified Data.Set as S
+
+-- | DSL constructor for the hydra.rdf.syntax.BlankNode wrapper
+blankNode :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.BlankNode
+blankNode x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.rdf.syntax.BlankNode"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.rdf.syntax.BlankNode
+blankNodeBlankNode :: Typed.TypedName Syntax.BlankNode
+blankNodeBlankNode = Typed.TypedName (Model.Name "hydra.rdf.syntax.BlankNode")
+
+-- | DSL constructor for the hydra.rdf.syntax.Dataset wrapper
+dataset :: Typed.TypedTerm (S.Set Syntax.Quad) -> Typed.TypedTerm Syntax.Dataset
+dataset x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.rdf.syntax.Dataset"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.rdf.syntax.Dataset
+datasetDataset :: Typed.TypedName Syntax.Dataset
+datasetDataset = Typed.TypedName (Model.Name "hydra.rdf.syntax.Dataset")
+
+-- | DSL constructor for hydra.rdf.syntax.Description
+description :: Typed.TypedTerm Syntax.Node -> Typed.TypedTerm Syntax.Graph -> Typed.TypedTerm Syntax.Description
+description subject graph =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.syntax.Description"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "subject"),
+          Model.fieldTerm = (Typed.unTypedTerm subject)},
+        Model.Field {
+          Model.fieldName = (Model.Name "graph"),
+          Model.fieldTerm = (Typed.unTypedTerm graph)}]}))
+
+-- | DSL name token for hydra.rdf.syntax.Description
+descriptionDescription :: Typed.TypedName Syntax.Description
+descriptionDescription = Typed.TypedName (Model.Name "hydra.rdf.syntax.Description")
+
+-- | DSL accessor for the graph field of hydra.rdf.syntax.Description
+descriptionGraph :: Typed.TypedTerm Syntax.Description -> Typed.TypedTerm Syntax.Graph
+descriptionGraph x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Description"),
+        Model.projectionFieldName = (Model.Name "graph")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the subject field of hydra.rdf.syntax.Description
+descriptionSubject :: Typed.TypedTerm Syntax.Description -> Typed.TypedTerm Syntax.Node
+descriptionSubject x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Description"),
+        Model.projectionFieldName = (Model.Name "subject")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the graph field of hydra.rdf.syntax.Description
+descriptionWithGraph :: Typed.TypedTerm Syntax.Description -> Typed.TypedTerm Syntax.Graph -> Typed.TypedTerm Syntax.Description
+descriptionWithGraph original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.syntax.Description"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "subject"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Description"),
+              Model.projectionFieldName = (Model.Name "subject")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "graph"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the subject field of hydra.rdf.syntax.Description
+descriptionWithSubject :: Typed.TypedTerm Syntax.Description -> Typed.TypedTerm Syntax.Node -> Typed.TypedTerm Syntax.Description
+descriptionWithSubject original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.syntax.Description"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "subject"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "graph"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Description"),
+              Model.projectionFieldName = (Model.Name "graph")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for the hydra.rdf.syntax.Graph wrapper
+graph :: Typed.TypedTerm (S.Set Syntax.Triple) -> Typed.TypedTerm Syntax.Graph
+graph x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.rdf.syntax.Graph"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.rdf.syntax.Graph
+graphGraph :: Typed.TypedName Syntax.Graph
+graphGraph = Typed.TypedName (Model.Name "hydra.rdf.syntax.Graph")
+
+-- | DSL constructor for the hydra.rdf.syntax.Iri wrapper
+iri :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Iri
+iri x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.rdf.syntax.Iri"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.rdf.syntax.Iri
+iriIri :: Typed.TypedName Syntax.Iri
+iriIri = Typed.TypedName (Model.Name "hydra.rdf.syntax.Iri")
+
+-- | DSL injection for the iri variant of hydra.rdf.syntax.IriOrLiteral
+iriOrLiteralIri :: Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm Syntax.IriOrLiteral
+iriOrLiteralIri x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.syntax.IriOrLiteral"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "iri"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.rdf.syntax.IriOrLiteral
+iriOrLiteralIriOrLiteral :: Typed.TypedName Syntax.IriOrLiteral
+iriOrLiteralIriOrLiteral = Typed.TypedName (Model.Name "hydra.rdf.syntax.IriOrLiteral")
+
+-- | DSL injection for the literal variant of hydra.rdf.syntax.IriOrLiteral
+iriOrLiteralLiteral :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Syntax.IriOrLiteral
+iriOrLiteralLiteral x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.syntax.IriOrLiteral"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "literal"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL constructor for the hydra.rdf.syntax.LangStrings wrapper
+langStrings :: Typed.TypedTerm (M.Map (Maybe Syntax.LanguageTag) String) -> Typed.TypedTerm Syntax.LangStrings
+langStrings x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.rdf.syntax.LangStrings"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.rdf.syntax.LangStrings
+langStringsLangStrings :: Typed.TypedName Syntax.LangStrings
+langStringsLangStrings = Typed.TypedName (Model.Name "hydra.rdf.syntax.LangStrings")
+
+-- | DSL constructor for the hydra.rdf.syntax.LanguageTag wrapper
+languageTag :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.LanguageTag
+languageTag x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.rdf.syntax.LanguageTag"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.rdf.syntax.LanguageTag
+languageTagLanguageTag :: Typed.TypedName Syntax.LanguageTag
+languageTagLanguageTag = Typed.TypedName (Model.Name "hydra.rdf.syntax.LanguageTag")
+
+-- | DSL constructor for hydra.rdf.syntax.Literal
+literal :: Typed.TypedTerm String -> Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm (Maybe Syntax.LanguageTag) -> Typed.TypedTerm Syntax.Literal
+literal lexicalForm datatypeIri languageTag =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.syntax.Literal"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lexicalForm"),
+          Model.fieldTerm = (Typed.unTypedTerm lexicalForm)},
+        Model.Field {
+          Model.fieldName = (Model.Name "datatypeIri"),
+          Model.fieldTerm = (Typed.unTypedTerm datatypeIri)},
+        Model.Field {
+          Model.fieldName = (Model.Name "languageTag"),
+          Model.fieldTerm = (Typed.unTypedTerm languageTag)}]}))
+
+-- | DSL accessor for the datatypeIri field of hydra.rdf.syntax.Literal
+literalDatatypeIri :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Syntax.Iri
+literalDatatypeIri x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Literal"),
+        Model.projectionFieldName = (Model.Name "datatypeIri")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the languageTag field of hydra.rdf.syntax.Literal
+literalLanguageTag :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm (Maybe Syntax.LanguageTag)
+literalLanguageTag x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Literal"),
+        Model.projectionFieldName = (Model.Name "languageTag")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the lexicalForm field of hydra.rdf.syntax.Literal
+literalLexicalForm :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm String
+literalLexicalForm x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Literal"),
+        Model.projectionFieldName = (Model.Name "lexicalForm")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.rdf.syntax.Literal
+literalLiteral :: Typed.TypedName Syntax.Literal
+literalLiteral = Typed.TypedName (Model.Name "hydra.rdf.syntax.Literal")
+
+-- | DSL updater for the datatypeIri field of hydra.rdf.syntax.Literal
+literalWithDatatypeIri :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm Syntax.Literal
+literalWithDatatypeIri original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.syntax.Literal"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lexicalForm"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Literal"),
+              Model.projectionFieldName = (Model.Name "lexicalForm")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "datatypeIri"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "languageTag"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Literal"),
+              Model.projectionFieldName = (Model.Name "languageTag")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the languageTag field of hydra.rdf.syntax.Literal
+literalWithLanguageTag :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm (Maybe Syntax.LanguageTag) -> Typed.TypedTerm Syntax.Literal
+literalWithLanguageTag original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.syntax.Literal"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lexicalForm"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Literal"),
+              Model.projectionFieldName = (Model.Name "lexicalForm")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "datatypeIri"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Literal"),
+              Model.projectionFieldName = (Model.Name "datatypeIri")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "languageTag"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the lexicalForm field of hydra.rdf.syntax.Literal
+literalWithLexicalForm :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm String -> Typed.TypedTerm Syntax.Literal
+literalWithLexicalForm original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.syntax.Literal"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "lexicalForm"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "datatypeIri"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Literal"),
+              Model.projectionFieldName = (Model.Name "datatypeIri")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "languageTag"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Literal"),
+              Model.projectionFieldName = (Model.Name "languageTag")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL injection for the bnode variant of hydra.rdf.syntax.Node
+nodeBnode :: Typed.TypedTerm Syntax.BlankNode -> Typed.TypedTerm Syntax.Node
+nodeBnode x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.syntax.Node"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "bnode"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the iri variant of hydra.rdf.syntax.Node
+nodeIri :: Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm Syntax.Node
+nodeIri x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.syntax.Node"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "iri"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the literal variant of hydra.rdf.syntax.Node
+nodeLiteral :: Typed.TypedTerm Syntax.Literal -> Typed.TypedTerm Syntax.Node
+nodeLiteral x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.syntax.Node"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "literal"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.rdf.syntax.Node
+nodeNode :: Typed.TypedName Syntax.Node
+nodeNode = Typed.TypedName (Model.Name "hydra.rdf.syntax.Node")
+
+-- | DSL constructor for hydra.rdf.syntax.Property
+property :: Typed.TypedTerm (S.Set Syntax.RdfsClass) -> Typed.TypedTerm (S.Set Syntax.RdfsClass) -> Typed.TypedTerm (S.Set Syntax.Property) -> Typed.TypedTerm Syntax.Property
+property domain range subPropertyOf =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.syntax.Property"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "domain"),
+          Model.fieldTerm = (Typed.unTypedTerm domain)},
+        Model.Field {
+          Model.fieldName = (Model.Name "range"),
+          Model.fieldTerm = (Typed.unTypedTerm range)},
+        Model.Field {
+          Model.fieldName = (Model.Name "subPropertyOf"),
+          Model.fieldTerm = (Typed.unTypedTerm subPropertyOf)}]}))
+
+-- | DSL accessor for the domain field of hydra.rdf.syntax.Property
+propertyDomain :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm (S.Set Syntax.RdfsClass)
+propertyDomain x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Property"),
+        Model.projectionFieldName = (Model.Name "domain")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.rdf.syntax.Property
+propertyProperty :: Typed.TypedName Syntax.Property
+propertyProperty = Typed.TypedName (Model.Name "hydra.rdf.syntax.Property")
+
+-- | DSL accessor for the range field of hydra.rdf.syntax.Property
+propertyRange :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm (S.Set Syntax.RdfsClass)
+propertyRange x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Property"),
+        Model.projectionFieldName = (Model.Name "range")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the subPropertyOf field of hydra.rdf.syntax.Property
+propertySubPropertyOf :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm (S.Set Syntax.Property)
+propertySubPropertyOf x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Property"),
+        Model.projectionFieldName = (Model.Name "subPropertyOf")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the domain field of hydra.rdf.syntax.Property
+propertyWithDomain :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm (S.Set Syntax.RdfsClass) -> Typed.TypedTerm Syntax.Property
+propertyWithDomain original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.syntax.Property"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "domain"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "range"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Property"),
+              Model.projectionFieldName = (Model.Name "range")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "subPropertyOf"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Property"),
+              Model.projectionFieldName = (Model.Name "subPropertyOf")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the range field of hydra.rdf.syntax.Property
+propertyWithRange :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm (S.Set Syntax.RdfsClass) -> Typed.TypedTerm Syntax.Property
+propertyWithRange original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.syntax.Property"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "domain"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Property"),
+              Model.projectionFieldName = (Model.Name "domain")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "range"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "subPropertyOf"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Property"),
+              Model.projectionFieldName = (Model.Name "subPropertyOf")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the subPropertyOf field of hydra.rdf.syntax.Property
+propertyWithSubPropertyOf :: Typed.TypedTerm Syntax.Property -> Typed.TypedTerm (S.Set Syntax.Property) -> Typed.TypedTerm Syntax.Property
+propertyWithSubPropertyOf original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.syntax.Property"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "domain"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Property"),
+              Model.projectionFieldName = (Model.Name "domain")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "range"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Property"),
+              Model.projectionFieldName = (Model.Name "range")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "subPropertyOf"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL constructor for hydra.rdf.syntax.Quad
+quad :: Typed.TypedTerm Syntax.Resource -> Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm Syntax.Node -> Typed.TypedTerm (Maybe Syntax.Iri) -> Typed.TypedTerm Syntax.Quad
+quad subject predicate object graph =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.syntax.Quad"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "subject"),
+          Model.fieldTerm = (Typed.unTypedTerm subject)},
+        Model.Field {
+          Model.fieldName = (Model.Name "predicate"),
+          Model.fieldTerm = (Typed.unTypedTerm predicate)},
+        Model.Field {
+          Model.fieldName = (Model.Name "object"),
+          Model.fieldTerm = (Typed.unTypedTerm object)},
+        Model.Field {
+          Model.fieldName = (Model.Name "graph"),
+          Model.fieldTerm = (Typed.unTypedTerm graph)}]}))
+
+-- | DSL accessor for the graph field of hydra.rdf.syntax.Quad
+quadGraph :: Typed.TypedTerm Syntax.Quad -> Typed.TypedTerm (Maybe Syntax.Iri)
+quadGraph x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Quad"),
+        Model.projectionFieldName = (Model.Name "graph")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the object field of hydra.rdf.syntax.Quad
+quadObject :: Typed.TypedTerm Syntax.Quad -> Typed.TypedTerm Syntax.Node
+quadObject x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Quad"),
+        Model.projectionFieldName = (Model.Name "object")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the predicate field of hydra.rdf.syntax.Quad
+quadPredicate :: Typed.TypedTerm Syntax.Quad -> Typed.TypedTerm Syntax.Iri
+quadPredicate x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Quad"),
+        Model.projectionFieldName = (Model.Name "predicate")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.rdf.syntax.Quad
+quadQuad :: Typed.TypedName Syntax.Quad
+quadQuad = Typed.TypedName (Model.Name "hydra.rdf.syntax.Quad")
+
+-- | DSL accessor for the subject field of hydra.rdf.syntax.Quad
+quadSubject :: Typed.TypedTerm Syntax.Quad -> Typed.TypedTerm Syntax.Resource
+quadSubject x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Quad"),
+        Model.projectionFieldName = (Model.Name "subject")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL updater for the graph field of hydra.rdf.syntax.Quad
+quadWithGraph :: Typed.TypedTerm Syntax.Quad -> Typed.TypedTerm (Maybe Syntax.Iri) -> Typed.TypedTerm Syntax.Quad
+quadWithGraph original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.syntax.Quad"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "subject"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Quad"),
+              Model.projectionFieldName = (Model.Name "subject")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "predicate"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Quad"),
+              Model.projectionFieldName = (Model.Name "predicate")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "object"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Quad"),
+              Model.projectionFieldName = (Model.Name "object")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "graph"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the object field of hydra.rdf.syntax.Quad
+quadWithObject :: Typed.TypedTerm Syntax.Quad -> Typed.TypedTerm Syntax.Node -> Typed.TypedTerm Syntax.Quad
+quadWithObject original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.syntax.Quad"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "subject"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Quad"),
+              Model.projectionFieldName = (Model.Name "subject")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "predicate"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Quad"),
+              Model.projectionFieldName = (Model.Name "predicate")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "object"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "graph"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Quad"),
+              Model.projectionFieldName = (Model.Name "graph")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the predicate field of hydra.rdf.syntax.Quad
+quadWithPredicate :: Typed.TypedTerm Syntax.Quad -> Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm Syntax.Quad
+quadWithPredicate original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.syntax.Quad"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "subject"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Quad"),
+              Model.projectionFieldName = (Model.Name "subject")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "predicate"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "object"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Quad"),
+              Model.projectionFieldName = (Model.Name "object")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "graph"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Quad"),
+              Model.projectionFieldName = (Model.Name "graph")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the subject field of hydra.rdf.syntax.Quad
+quadWithSubject :: Typed.TypedTerm Syntax.Quad -> Typed.TypedTerm Syntax.Resource -> Typed.TypedTerm Syntax.Quad
+quadWithSubject original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.syntax.Quad"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "subject"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "predicate"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Quad"),
+              Model.projectionFieldName = (Model.Name "predicate")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "object"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Quad"),
+              Model.projectionFieldName = (Model.Name "object")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "graph"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Quad"),
+              Model.projectionFieldName = (Model.Name "graph")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL constructor for the hydra.rdf.syntax.RdfsClass wrapper
+rdfsClass :: Typed.TypedTerm () -> Typed.TypedTerm Syntax.RdfsClass
+rdfsClass x =
+    Typed.TypedTerm (Model.TermWrap (Model.WrappedTerm {
+      Model.wrappedTermTypeName = (Model.Name "hydra.rdf.syntax.RdfsClass"),
+      Model.wrappedTermBody = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.rdf.syntax.RdfsClass
+rdfsClassRdfsClass :: Typed.TypedName Syntax.RdfsClass
+rdfsClassRdfsClass = Typed.TypedName (Model.Name "hydra.rdf.syntax.RdfsClass")
+
+-- | DSL injection for the bnode variant of hydra.rdf.syntax.Resource
+resourceBnode :: Typed.TypedTerm Syntax.BlankNode -> Typed.TypedTerm Syntax.Resource
+resourceBnode x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.syntax.Resource"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "bnode"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL injection for the iri variant of hydra.rdf.syntax.Resource
+resourceIri :: Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm Syntax.Resource
+resourceIri x =
+    Typed.TypedTerm (Model.TermInject (Model.Injection {
+      Model.injectionTypeName = (Model.Name "hydra.rdf.syntax.Resource"),
+      Model.injectionField = Model.Field {
+        Model.fieldName = (Model.Name "iri"),
+        Model.fieldTerm = (Typed.unTypedTerm x)}}))
+
+-- | DSL name token for hydra.rdf.syntax.Resource
+resourceResource :: Typed.TypedName Syntax.Resource
+resourceResource = Typed.TypedName (Model.Name "hydra.rdf.syntax.Resource")
+
+-- | DSL constructor for hydra.rdf.syntax.Triple
+triple :: Typed.TypedTerm Syntax.Resource -> Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm Syntax.Node -> Typed.TypedTerm Syntax.Triple
+triple subject predicate object =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.syntax.Triple"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "subject"),
+          Model.fieldTerm = (Typed.unTypedTerm subject)},
+        Model.Field {
+          Model.fieldName = (Model.Name "predicate"),
+          Model.fieldTerm = (Typed.unTypedTerm predicate)},
+        Model.Field {
+          Model.fieldName = (Model.Name "object"),
+          Model.fieldTerm = (Typed.unTypedTerm object)}]}))
+
+-- | DSL accessor for the object field of hydra.rdf.syntax.Triple
+tripleObject :: Typed.TypedTerm Syntax.Triple -> Typed.TypedTerm Syntax.Node
+tripleObject x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Triple"),
+        Model.projectionFieldName = (Model.Name "object")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the predicate field of hydra.rdf.syntax.Triple
+triplePredicate :: Typed.TypedTerm Syntax.Triple -> Typed.TypedTerm Syntax.Iri
+triplePredicate x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Triple"),
+        Model.projectionFieldName = (Model.Name "predicate")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the subject field of hydra.rdf.syntax.Triple
+tripleSubject :: Typed.TypedTerm Syntax.Triple -> Typed.TypedTerm Syntax.Resource
+tripleSubject x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermProject (Model.Projection {
+        Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Triple"),
+        Model.projectionFieldName = (Model.Name "subject")})),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL name token for hydra.rdf.syntax.Triple
+tripleTriple :: Typed.TypedName Syntax.Triple
+tripleTriple = Typed.TypedName (Model.Name "hydra.rdf.syntax.Triple")
+
+-- | DSL updater for the object field of hydra.rdf.syntax.Triple
+tripleWithObject :: Typed.TypedTerm Syntax.Triple -> Typed.TypedTerm Syntax.Node -> Typed.TypedTerm Syntax.Triple
+tripleWithObject original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.syntax.Triple"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "subject"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Triple"),
+              Model.projectionFieldName = (Model.Name "subject")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "predicate"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Triple"),
+              Model.projectionFieldName = (Model.Name "predicate")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "object"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)}]}))
+
+-- | DSL updater for the predicate field of hydra.rdf.syntax.Triple
+tripleWithPredicate :: Typed.TypedTerm Syntax.Triple -> Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm Syntax.Triple
+tripleWithPredicate original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.syntax.Triple"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "subject"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Triple"),
+              Model.projectionFieldName = (Model.Name "subject")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "predicate"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "object"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Triple"),
+              Model.projectionFieldName = (Model.Name "object")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL updater for the subject field of hydra.rdf.syntax.Triple
+tripleWithSubject :: Typed.TypedTerm Syntax.Triple -> Typed.TypedTerm Syntax.Resource -> Typed.TypedTerm Syntax.Triple
+tripleWithSubject original newVal =
+    Typed.TypedTerm (Model.TermRecord (Model.Record {
+      Model.recordTypeName = (Model.Name "hydra.rdf.syntax.Triple"),
+      Model.recordFields = [
+        Model.Field {
+          Model.fieldName = (Model.Name "subject"),
+          Model.fieldTerm = (Typed.unTypedTerm newVal)},
+        Model.Field {
+          Model.fieldName = (Model.Name "predicate"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Triple"),
+              Model.projectionFieldName = (Model.Name "predicate")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))},
+        Model.Field {
+          Model.fieldName = (Model.Name "object"),
+          Model.fieldTerm = (Model.TermApplication (Model.Application {
+            Model.applicationFunction = (Model.TermProject (Model.Projection {
+              Model.projectionTypeName = (Model.Name "hydra.rdf.syntax.Triple"),
+              Model.projectionFieldName = (Model.Name "object")})),
+            Model.applicationArgument = (Typed.unTypedTerm original)}))}]}))
+
+-- | DSL accessor for the body of hydra.rdf.syntax.BlankNode
+unBlankNode :: Typed.TypedTerm Syntax.BlankNode -> Typed.TypedTerm String
+unBlankNode x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.rdf.syntax.BlankNode")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.rdf.syntax.Dataset
+unDataset :: Typed.TypedTerm Syntax.Dataset -> Typed.TypedTerm (S.Set Syntax.Quad)
+unDataset x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.rdf.syntax.Dataset")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.rdf.syntax.Graph
+unGraph :: Typed.TypedTerm Syntax.Graph -> Typed.TypedTerm (S.Set Syntax.Triple)
+unGraph x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.rdf.syntax.Graph")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.rdf.syntax.Iri
+unIri :: Typed.TypedTerm Syntax.Iri -> Typed.TypedTerm String
+unIri x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.rdf.syntax.Iri")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.rdf.syntax.LangStrings
+unLangStrings :: Typed.TypedTerm Syntax.LangStrings -> Typed.TypedTerm (M.Map (Maybe Syntax.LanguageTag) String)
+unLangStrings x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.rdf.syntax.LangStrings")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.rdf.syntax.LanguageTag
+unLanguageTag :: Typed.TypedTerm Syntax.LanguageTag -> Typed.TypedTerm String
+unLanguageTag x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.rdf.syntax.LanguageTag")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
+
+-- | DSL accessor for the body of hydra.rdf.syntax.RdfsClass
+unRdfsClass :: Typed.TypedTerm Syntax.RdfsClass -> Typed.TypedTerm ()
+unRdfsClass x =
+    Typed.TypedTerm (Model.TermApplication (Model.Application {
+      Model.applicationFunction = (Model.TermUnwrap (Model.Name "hydra.rdf.syntax.RdfsClass")),
+      Model.applicationArgument = (Typed.unTypedTerm x)}))
diff --git a/src/main/haskell/Hydra/Rdf/Owl/Syntax.hs b/src/main/haskell/Hydra/Rdf/Owl/Syntax.hs
new file mode 100644
--- /dev/null
+++ b/src/main/haskell/Hydra/Rdf/Owl/Syntax.hs
@@ -0,0 +1,1283 @@
+-- Note: this is an automatically generated file. Do not edit.
+
+-- | An OWL 2 syntax model. See https://www.w3.org/TR/owl2-syntax
+
+module Hydra.Rdf.Owl.Syntax where
+
+import qualified Hydra.Core.Model as Model
+import qualified Hydra.Rdf.Syntax as Syntax
+import qualified Hydra.Rdf.Xml.Schema as Schema
+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
+import qualified Data.Scientific as Sci
+import Data.Void
+
+-- | An OWL annotation on an axiom, consisting of a property and value
+data Annotation =
+  Annotation {
+    annotationAnnotations :: [Annotation],
+    annotationProperty :: AnnotationProperty,
+    annotationValue :: AnnotationValue}
+  deriving (Eq, Ord, Read, Show)
+
+_Annotation = Model.Name "hydra.rdf.owl.syntax.Annotation"
+
+_Annotation_annotations = Model.Name "annotations"
+
+_Annotation_property = Model.Name "property"
+
+_Annotation_value = Model.Name "value"
+
+-- | An OWL annotation assertion axiom
+data AnnotationAssertion =
+  AnnotationAssertion {
+    annotationAssertionAnnotations :: [Annotation],
+    annotationAssertionProperty :: AnnotationProperty,
+    annotationAssertionSubject :: AnnotationSubject,
+    annotationAssertionValue :: AnnotationValue}
+  deriving (Eq, Ord, Read, Show)
+
+_AnnotationAssertion = Model.Name "hydra.rdf.owl.syntax.AnnotationAssertion"
+
+_AnnotationAssertion_annotations = Model.Name "annotations"
+
+_AnnotationAssertion_property = Model.Name "property"
+
+_AnnotationAssertion_subject = Model.Name "subject"
+
+_AnnotationAssertion_value = Model.Name "value"
+
+-- | An OWL annotation axiom
+data AnnotationAxiom =
+  AnnotationAxiomAnnotationAssertion AnnotationAssertion |
+  AnnotationAxiomAnnotationPropertyDomain AnnotationPropertyDomain |
+  AnnotationAxiomAnnotationPropertyRange AnnotationPropertyRange |
+  AnnotationAxiomSubAnnotationPropertyOf SubAnnotationPropertyOf
+  deriving (Eq, Ord, Read, Show)
+
+_AnnotationAxiom = Model.Name "hydra.rdf.owl.syntax.AnnotationAxiom"
+
+_AnnotationAxiom_annotationAssertion = Model.Name "annotationAssertion"
+
+_AnnotationAxiom_annotationPropertyDomain = Model.Name "annotationPropertyDomain"
+
+_AnnotationAxiom_annotationPropertyRange = Model.Name "annotationPropertyRange"
+
+_AnnotationAxiom_subAnnotationPropertyOf = Model.Name "subAnnotationPropertyOf"
+
+-- | An OWL annotation property, identified by an IRI
+newtype AnnotationProperty =
+  AnnotationProperty {
+    unAnnotationProperty :: ()}
+  deriving (Eq, Ord, Read, Show)
+
+_AnnotationProperty = Model.Name "hydra.rdf.owl.syntax.AnnotationProperty"
+
+-- | An OWL axiom asserting the domain of an annotation property
+data AnnotationPropertyDomain =
+  AnnotationPropertyDomain {
+    annotationPropertyDomainAnnotations :: [Annotation],
+    annotationPropertyDomainProperty :: AnnotationProperty,
+    annotationPropertyDomainIri :: Syntax.Iri}
+  deriving (Eq, Ord, Read, Show)
+
+_AnnotationPropertyDomain = Model.Name "hydra.rdf.owl.syntax.AnnotationPropertyDomain"
+
+_AnnotationPropertyDomain_annotations = Model.Name "annotations"
+
+_AnnotationPropertyDomain_property = Model.Name "property"
+
+_AnnotationPropertyDomain_iri = Model.Name "iri"
+
+-- | An OWL axiom asserting the range of an annotation property
+data AnnotationPropertyRange =
+  AnnotationPropertyRange {
+    annotationPropertyRangeAnnotations :: [Annotation],
+    annotationPropertyRangeProperty :: AnnotationProperty,
+    annotationPropertyRangeIri :: Syntax.Iri}
+  deriving (Eq, Ord, Read, Show)
+
+_AnnotationPropertyRange = Model.Name "hydra.rdf.owl.syntax.AnnotationPropertyRange"
+
+_AnnotationPropertyRange_annotations = Model.Name "annotations"
+
+_AnnotationPropertyRange_property = Model.Name "property"
+
+_AnnotationPropertyRange_iri = Model.Name "iri"
+
+-- | An OWL annotation subject: an IRI or an anonymous individual
+data AnnotationSubject =
+  AnnotationSubjectIri Syntax.Iri |
+  AnnotationSubjectAnonymousIndividual AnonymousIndividual
+  deriving (Eq, Ord, Read, Show)
+
+_AnnotationSubject = Model.Name "hydra.rdf.owl.syntax.AnnotationSubject"
+
+_AnnotationSubject_iri = Model.Name "iri"
+
+_AnnotationSubject_anonymousIndividual = Model.Name "anonymousIndividual"
+
+-- | An OWL annotation value: an anonymous individual, IRI, or literal
+data AnnotationValue =
+  AnnotationValueAnonymousIndividual AnonymousIndividual |
+  AnnotationValueIri Syntax.Iri |
+  AnnotationValueLiteral Syntax.Literal
+  deriving (Eq, Ord, Read, Show)
+
+_AnnotationValue = Model.Name "hydra.rdf.owl.syntax.AnnotationValue"
+
+_AnnotationValue_anonymousIndividual = Model.Name "anonymousIndividual"
+
+_AnnotationValue_iri = Model.Name "iri"
+
+_AnnotationValue_literal = Model.Name "literal"
+
+-- | An OWL anonymous individual, identified by a blank node id
+newtype AnonymousIndividual =
+  AnonymousIndividual {
+    unAnonymousIndividual :: ()}
+  deriving (Eq, Ord, Read, Show)
+
+_AnonymousIndividual = Model.Name "hydra.rdf.owl.syntax.AnonymousIndividual"
+
+-- | An OWL assertion axiom about individuals
+data Assertion =
+  AssertionClassAssertion ClassAssertion |
+  AssertionDataPropertyAssertion DataPropertyAssertion |
+  AssertionDifferentIndividuals DifferentIndividuals |
+  AssertionObjectPropertyAssertion ObjectPropertyAssertion |
+  AssertionNegativeDataPropertyAssertion NegativeDataPropertyAssertion |
+  AssertionNegativeObjectPropertyAssertion NegativeObjectPropertyAssertion |
+  AssertionSameIndividual SameIndividual
+  deriving (Eq, Ord, Read, Show)
+
+_Assertion = Model.Name "hydra.rdf.owl.syntax.Assertion"
+
+_Assertion_classAssertion = Model.Name "classAssertion"
+
+_Assertion_dataPropertyAssertion = Model.Name "dataPropertyAssertion"
+
+_Assertion_differentIndividuals = Model.Name "differentIndividuals"
+
+_Assertion_objectPropertyAssertion = Model.Name "objectPropertyAssertion"
+
+_Assertion_negativeDataPropertyAssertion = Model.Name "negativeDataPropertyAssertion"
+
+_Assertion_negativeObjectPropertyAssertion = Model.Name "negativeObjectPropertyAssertion"
+
+_Assertion_sameIndividual = Model.Name "sameIndividual"
+
+-- | An OWL axiom asserting a characteristic (e.g. symmetric, transitive) of an object property
+data AsymmetricObjectProperty =
+  AsymmetricObjectProperty {
+    asymmetricObjectPropertyAnnotations :: [Annotation],
+    asymmetricObjectPropertyProperty :: ObjectPropertyExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_AsymmetricObjectProperty = Model.Name "hydra.rdf.owl.syntax.AsymmetricObjectProperty"
+
+_AsymmetricObjectProperty_annotations = Model.Name "annotations"
+
+_AsymmetricObjectProperty_property = Model.Name "property"
+
+-- | An OWL axiom
+data Axiom =
+  AxiomAnnotationAxiom AnnotationAxiom |
+  AxiomAssertion Assertion |
+  AxiomClassAxiom ClassAxiom |
+  AxiomDataPropertyAxiom DataPropertyAxiom |
+  AxiomDatatypeDefinition DatatypeDefinition |
+  AxiomDeclaration Declaration |
+  AxiomHasKey HasKey |
+  AxiomObjectPropertyAxiom ObjectPropertyAxiom
+  deriving (Eq, Ord, Read, Show)
+
+_Axiom = Model.Name "hydra.rdf.owl.syntax.Axiom"
+
+_Axiom_annotationAxiom = Model.Name "annotationAxiom"
+
+_Axiom_assertion = Model.Name "assertion"
+
+_Axiom_classAxiom = Model.Name "classAxiom"
+
+_Axiom_dataPropertyAxiom = Model.Name "dataPropertyAxiom"
+
+_Axiom_datatypeDefinition = Model.Name "datatypeDefinition"
+
+_Axiom_declaration = Model.Name "declaration"
+
+_Axiom_hasKey = Model.Name "hasKey"
+
+_Axiom_objectPropertyAxiom = Model.Name "objectPropertyAxiom"
+
+-- | An OWL class, identified by an IRI
+newtype Class =
+  Class {
+    unClass :: ()}
+  deriving (Eq, Ord, Read, Show)
+
+_Class = Model.Name "hydra.rdf.owl.syntax.Class"
+
+-- | An OWL axiom asserting that an individual belongs to a class
+data ClassAssertion =
+  ClassAssertion {
+    classAssertionAnnotations :: [Annotation],
+    classAssertionClass :: ClassExpression,
+    classAssertionIndividual :: Individual}
+  deriving (Eq, Ord, Read, Show)
+
+_ClassAssertion = Model.Name "hydra.rdf.owl.syntax.ClassAssertion"
+
+_ClassAssertion_annotations = Model.Name "annotations"
+
+_ClassAssertion_class = Model.Name "class"
+
+_ClassAssertion_individual = Model.Name "individual"
+
+-- | An OWL axiom about classes
+data ClassAxiom =
+  ClassAxiomDisjointClasses DisjointClasses |
+  ClassAxiomDisjointUnion DisjointUnion |
+  ClassAxiomEquivalentClasses EquivalentClasses |
+  ClassAxiomSubClassOf SubClassOf
+  deriving (Eq, Ord, Read, Show)
+
+_ClassAxiom = Model.Name "hydra.rdf.owl.syntax.ClassAxiom"
+
+_ClassAxiom_disjointClasses = Model.Name "disjointClasses"
+
+_ClassAxiom_disjointUnion = Model.Name "disjointUnion"
+
+_ClassAxiom_equivalentClasses = Model.Name "equivalentClasses"
+
+_ClassAxiom_subClassOf = Model.Name "subClassOf"
+
+-- | An OWL class expression
+data ClassExpression =
+  ClassExpressionClass Class |
+  ClassExpressionDataSomeValuesFrom DataSomeValuesFrom |
+  ClassExpressionDataAllValuesFrom DataAllValuesFrom |
+  ClassExpressionDataHasValue DataHasValue |
+  ClassExpressionDataMinCardinality DataMinCardinality |
+  ClassExpressionDataMaxCardinality DataMaxCardinality |
+  ClassExpressionDataExactCardinality DataExactCardinality |
+  ClassExpressionObjectAllValuesFrom ObjectAllValuesFrom |
+  ClassExpressionObjectExactCardinality ObjectExactCardinality |
+  ClassExpressionObjectHasSelf ObjectHasSelf |
+  ClassExpressionObjectHasValue ObjectHasValue |
+  ClassExpressionObjectIntersectionOf ObjectIntersectionOf |
+  ClassExpressionObjectMaxCardinality ObjectMaxCardinality |
+  ClassExpressionObjectMinCardinality ObjectMinCardinality |
+  ClassExpressionObjectOneOf ObjectOneOf |
+  ClassExpressionObjectSomeValuesFrom ObjectSomeValuesFrom |
+  ClassExpressionObjectUnionOf ObjectUnionOf
+  deriving (Eq, Ord, Read, Show)
+
+_ClassExpression = Model.Name "hydra.rdf.owl.syntax.ClassExpression"
+
+_ClassExpression_class = Model.Name "class"
+
+_ClassExpression_dataSomeValuesFrom = Model.Name "dataSomeValuesFrom"
+
+_ClassExpression_dataAllValuesFrom = Model.Name "dataAllValuesFrom"
+
+_ClassExpression_dataHasValue = Model.Name "dataHasValue"
+
+_ClassExpression_dataMinCardinality = Model.Name "dataMinCardinality"
+
+_ClassExpression_dataMaxCardinality = Model.Name "dataMaxCardinality"
+
+_ClassExpression_dataExactCardinality = Model.Name "dataExactCardinality"
+
+_ClassExpression_objectAllValuesFrom = Model.Name "objectAllValuesFrom"
+
+_ClassExpression_objectExactCardinality = Model.Name "objectExactCardinality"
+
+_ClassExpression_objectHasSelf = Model.Name "objectHasSelf"
+
+_ClassExpression_objectHasValue = Model.Name "objectHasValue"
+
+_ClassExpression_objectIntersectionOf = Model.Name "objectIntersectionOf"
+
+_ClassExpression_objectMaxCardinality = Model.Name "objectMaxCardinality"
+
+_ClassExpression_objectMinCardinality = Model.Name "objectMinCardinality"
+
+_ClassExpression_objectOneOf = Model.Name "objectOneOf"
+
+_ClassExpression_objectSomeValuesFrom = Model.Name "objectSomeValuesFrom"
+
+_ClassExpression_objectUnionOf = Model.Name "objectUnionOf"
+
+-- | An OWL universal data property restriction
+data DataAllValuesFrom =
+  DataAllValuesFrom {
+    dataAllValuesFromProperty :: [DataPropertyExpression],
+    dataAllValuesFromRange :: DataRange}
+  deriving (Eq, Ord, Read, Show)
+
+_DataAllValuesFrom = Model.Name "hydra.rdf.owl.syntax.DataAllValuesFrom"
+
+_DataAllValuesFrom_property = Model.Name "property"
+
+_DataAllValuesFrom_range = Model.Name "range"
+
+-- | An OWL data range which is the complement of another data range
+newtype DataComplementOf =
+  DataComplementOf {
+    unDataComplementOf :: DataRange}
+  deriving (Eq, Ord, Read, Show)
+
+_DataComplementOf = Model.Name "hydra.rdf.owl.syntax.DataComplementOf"
+
+-- | An OWL exact-cardinality restriction on a data property
+data DataExactCardinality =
+  DataExactCardinality {
+    dataExactCardinalityBound :: Integer,
+    dataExactCardinalityProperty :: DataPropertyExpression,
+    dataExactCardinalityRange :: [DataRange]}
+  deriving (Eq, Ord, Read, Show)
+
+_DataExactCardinality = Model.Name "hydra.rdf.owl.syntax.DataExactCardinality"
+
+_DataExactCardinality_bound = Model.Name "bound"
+
+_DataExactCardinality_property = Model.Name "property"
+
+_DataExactCardinality_range = Model.Name "range"
+
+-- | An OWL data property restriction requiring a specific literal value
+data DataHasValue =
+  DataHasValue {
+    dataHasValueProperty :: DataPropertyExpression,
+    dataHasValueValue :: Syntax.Literal}
+  deriving (Eq, Ord, Read, Show)
+
+_DataHasValue = Model.Name "hydra.rdf.owl.syntax.DataHasValue"
+
+_DataHasValue_property = Model.Name "property"
+
+_DataHasValue_value = Model.Name "value"
+
+-- | An OWL data range which is the intersection of two or more data ranges
+newtype DataIntersectionOf =
+  DataIntersectionOf {
+    unDataIntersectionOf :: [DataRange]}
+  deriving (Eq, Ord, Read, Show)
+
+_DataIntersectionOf = Model.Name "hydra.rdf.owl.syntax.DataIntersectionOf"
+
+-- | An OWL maximum-cardinality restriction on a data property
+data DataMaxCardinality =
+  DataMaxCardinality {
+    dataMaxCardinalityBound :: Integer,
+    dataMaxCardinalityProperty :: DataPropertyExpression,
+    dataMaxCardinalityRange :: [DataRange]}
+  deriving (Eq, Ord, Read, Show)
+
+_DataMaxCardinality = Model.Name "hydra.rdf.owl.syntax.DataMaxCardinality"
+
+_DataMaxCardinality_bound = Model.Name "bound"
+
+_DataMaxCardinality_property = Model.Name "property"
+
+_DataMaxCardinality_range = Model.Name "range"
+
+-- | An OWL minimum-cardinality restriction on a data property
+data DataMinCardinality =
+  DataMinCardinality {
+    dataMinCardinalityBound :: Integer,
+    dataMinCardinalityProperty :: DataPropertyExpression,
+    dataMinCardinalityRange :: [DataRange]}
+  deriving (Eq, Ord, Read, Show)
+
+_DataMinCardinality = Model.Name "hydra.rdf.owl.syntax.DataMinCardinality"
+
+_DataMinCardinality_bound = Model.Name "bound"
+
+_DataMinCardinality_property = Model.Name "property"
+
+_DataMinCardinality_range = Model.Name "range"
+
+-- | An OWL data range enumerating one or more literals
+newtype DataOneOf =
+  DataOneOf {
+    unDataOneOf :: [Syntax.Literal]}
+  deriving (Eq, Ord, Read, Show)
+
+_DataOneOf = Model.Name "hydra.rdf.owl.syntax.DataOneOf"
+
+-- | An OWL data property, identified by an IRI
+newtype DataProperty =
+  DataProperty {
+    unDataProperty :: ()}
+  deriving (Eq, Ord, Read, Show)
+
+_DataProperty = Model.Name "hydra.rdf.owl.syntax.DataProperty"
+
+-- | An OWL axiom asserting a data property relationship between an individual and a literal
+data DataPropertyAssertion =
+  DataPropertyAssertion {
+    dataPropertyAssertionAnnotations :: [Annotation],
+    dataPropertyAssertionProperty :: DataPropertyExpression,
+    dataPropertyAssertionSource :: Individual,
+    dataPropertyAssertionTarget :: Individual}
+  deriving (Eq, Ord, Read, Show)
+
+_DataPropertyAssertion = Model.Name "hydra.rdf.owl.syntax.DataPropertyAssertion"
+
+_DataPropertyAssertion_annotations = Model.Name "annotations"
+
+_DataPropertyAssertion_property = Model.Name "property"
+
+_DataPropertyAssertion_source = Model.Name "source"
+
+_DataPropertyAssertion_target = Model.Name "target"
+
+-- | An OWL axiom about data properties
+data DataPropertyAxiom =
+  DataPropertyAxiomDataPropertyAxiom DataPropertyAxiom |
+  DataPropertyAxiomDataPropertyRange DataPropertyRange |
+  DataPropertyAxiomDisjointDataProperties DisjointDataProperties |
+  DataPropertyAxiomEquivalentDataProperties EquivalentDataProperties |
+  DataPropertyAxiomFunctionalDataProperty FunctionalDataProperty |
+  DataPropertyAxiomSubDataPropertyOf SubDataPropertyOf
+  deriving (Eq, Ord, Read, Show)
+
+_DataPropertyAxiom = Model.Name "hydra.rdf.owl.syntax.DataPropertyAxiom"
+
+_DataPropertyAxiom_dataPropertyAxiom = Model.Name "dataPropertyAxiom"
+
+_DataPropertyAxiom_dataPropertyRange = Model.Name "dataPropertyRange"
+
+_DataPropertyAxiom_disjointDataProperties = Model.Name "disjointDataProperties"
+
+_DataPropertyAxiom_equivalentDataProperties = Model.Name "equivalentDataProperties"
+
+_DataPropertyAxiom_functionalDataProperty = Model.Name "functionalDataProperty"
+
+_DataPropertyAxiom_subDataPropertyOf = Model.Name "subDataPropertyOf"
+
+-- | An OWL axiom asserting the domain of a data property
+data DataPropertyDomain =
+  DataPropertyDomain {
+    dataPropertyDomainAnnotations :: [Annotation],
+    dataPropertyDomainProperty :: DataPropertyExpression,
+    dataPropertyDomainDomain :: ClassExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_DataPropertyDomain = Model.Name "hydra.rdf.owl.syntax.DataPropertyDomain"
+
+_DataPropertyDomain_annotations = Model.Name "annotations"
+
+_DataPropertyDomain_property = Model.Name "property"
+
+_DataPropertyDomain_domain = Model.Name "domain"
+
+-- | An OWL data property expression
+newtype DataPropertyExpression =
+  DataPropertyExpression {
+    unDataPropertyExpression :: DataProperty}
+  deriving (Eq, Ord, Read, Show)
+
+_DataPropertyExpression = Model.Name "hydra.rdf.owl.syntax.DataPropertyExpression"
+
+-- | An OWL axiom asserting the range of a data property
+data DataPropertyRange =
+  DataPropertyRange {
+    dataPropertyRangeAnnotations :: [Annotation],
+    dataPropertyRangeProperty :: DataPropertyExpression,
+    dataPropertyRangeRange :: ClassExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_DataPropertyRange = Model.Name "hydra.rdf.owl.syntax.DataPropertyRange"
+
+_DataPropertyRange_annotations = Model.Name "annotations"
+
+_DataPropertyRange_property = Model.Name "property"
+
+_DataPropertyRange_range = Model.Name "range"
+
+-- | An OWL data range
+data DataRange =
+  DataRangeDataComplementOf DataComplementOf |
+  DataRangeDataIntersectionOf DataIntersectionOf |
+  DataRangeDataOneOf DataOneOf |
+  DataRangeDataUnionOf DataUnionOf |
+  DataRangeDatatype Datatype |
+  DataRangeDatatypeRestriction DatatypeRestriction
+  deriving (Eq, Ord, Read, Show)
+
+_DataRange = Model.Name "hydra.rdf.owl.syntax.DataRange"
+
+_DataRange_dataComplementOf = Model.Name "dataComplementOf"
+
+_DataRange_dataIntersectionOf = Model.Name "dataIntersectionOf"
+
+_DataRange_dataOneOf = Model.Name "dataOneOf"
+
+_DataRange_dataUnionOf = Model.Name "dataUnionOf"
+
+_DataRange_datatype = Model.Name "datatype"
+
+_DataRange_datatypeRestriction = Model.Name "datatypeRestriction"
+
+-- | An OWL existential data property restriction
+data DataSomeValuesFrom =
+  DataSomeValuesFrom {
+    dataSomeValuesFromProperty :: [DataPropertyExpression],
+    dataSomeValuesFromRange :: DataRange}
+  deriving (Eq, Ord, Read, Show)
+
+_DataSomeValuesFrom = Model.Name "hydra.rdf.owl.syntax.DataSomeValuesFrom"
+
+_DataSomeValuesFrom_property = Model.Name "property"
+
+_DataSomeValuesFrom_range = Model.Name "range"
+
+-- | An OWL data range which is the union of two or more data ranges
+newtype DataUnionOf =
+  DataUnionOf {
+    unDataUnionOf :: [DataRange]}
+  deriving (Eq, Ord, Read, Show)
+
+_DataUnionOf = Model.Name "hydra.rdf.owl.syntax.DataUnionOf"
+
+-- | An OWL datatype, identified by an IRI
+data Datatype =
+  -- | Note: XML Schema datatypes are treated as a special case in this model (not in the OWL 2 specification itself) because they are particularly common
+  DatatypeXmlSchema Schema.Datatype |
+  DatatypeOther Syntax.Iri
+  deriving (Eq, Ord, Read, Show)
+
+_Datatype = Model.Name "hydra.rdf.owl.syntax.Datatype"
+
+_Datatype_xmlSchema = Model.Name "xmlSchema"
+
+_Datatype_other = Model.Name "other"
+
+-- | An OWL axiom defining a datatype in terms of a data range
+data DatatypeDefinition =
+  DatatypeDefinition {
+    datatypeDefinitionAnnotations :: [Annotation],
+    datatypeDefinitionDatatype :: Datatype,
+    datatypeDefinitionRange :: DataRange}
+  deriving (Eq, Ord, Read, Show)
+
+_DatatypeDefinition = Model.Name "hydra.rdf.owl.syntax.DatatypeDefinition"
+
+_DatatypeDefinition_annotations = Model.Name "annotations"
+
+_DatatypeDefinition_datatype = Model.Name "datatype"
+
+_DatatypeDefinition_range = Model.Name "range"
+
+-- | An OWL datatype restricted by one or more constraining facets
+data DatatypeRestriction =
+  DatatypeRestriction {
+    datatypeRestrictionDatatype :: Datatype,
+    datatypeRestrictionConstraints :: [DatatypeRestrictionConstraint]}
+  deriving (Eq, Ord, Read, Show)
+
+_DatatypeRestriction = Model.Name "hydra.rdf.owl.syntax.DatatypeRestriction"
+
+_DatatypeRestriction_datatype = Model.Name "datatype"
+
+_DatatypeRestriction_constraints = Model.Name "constraints"
+
+-- | A constraining facet used in an OWL datatype restriction
+data DatatypeRestrictionConstrainingFacet =
+  -- | Note: XML Schema constraining facets are treated as a special case in this model (not in the OWL 2 specification itself) because they are particularly common
+  DatatypeRestrictionConstrainingFacetXmlSchema Schema.ConstrainingFacet |
+  DatatypeRestrictionConstrainingFacetOther Syntax.Iri
+  deriving (Eq, Ord, Read, Show)
+
+_DatatypeRestrictionConstrainingFacet = Model.Name "hydra.rdf.owl.syntax.DatatypeRestrictionConstrainingFacet"
+
+_DatatypeRestrictionConstrainingFacet_xmlSchema = Model.Name "xmlSchema"
+
+_DatatypeRestrictionConstrainingFacet_other = Model.Name "other"
+
+-- | A single constraining facet and its restriction value in an OWL datatype restriction
+data DatatypeRestrictionConstraint =
+  DatatypeRestrictionConstraint {
+    datatypeRestrictionConstraintConstrainingFacet :: DatatypeRestrictionConstrainingFacet,
+    datatypeRestrictionConstraintRestrictionValue :: Syntax.Literal}
+  deriving (Eq, Ord, Read, Show)
+
+_DatatypeRestrictionConstraint = Model.Name "hydra.rdf.owl.syntax.DatatypeRestrictionConstraint"
+
+_DatatypeRestrictionConstraint_constrainingFacet = Model.Name "constrainingFacet"
+
+_DatatypeRestrictionConstraint_restrictionValue = Model.Name "restrictionValue"
+
+-- | An OWL entity declaration
+data Declaration =
+  Declaration {
+    declarationAnnotations :: [Annotation],
+    declarationEntity :: Entity}
+  deriving (Eq, Ord, Read, Show)
+
+_Declaration = Model.Name "hydra.rdf.owl.syntax.Declaration"
+
+_Declaration_annotations = Model.Name "annotations"
+
+_Declaration_entity = Model.Name "entity"
+
+-- | An OWL axiom asserting that two or more individuals are pairwise distinct
+data DifferentIndividuals =
+  DifferentIndividuals {
+    differentIndividualsAnnotations :: [Annotation],
+    differentIndividualsIndividuals :: [Individual]}
+  deriving (Eq, Ord, Read, Show)
+
+_DifferentIndividuals = Model.Name "hydra.rdf.owl.syntax.DifferentIndividuals"
+
+_DifferentIndividuals_annotations = Model.Name "annotations"
+
+_DifferentIndividuals_individuals = Model.Name "individuals"
+
+-- | An OWL axiom asserting that two or more classes are pairwise disjoint
+data DisjointClasses =
+  DisjointClasses {
+    disjointClassesAnnotations :: [Annotation],
+    disjointClassesClasses :: [ClassExpression]}
+  deriving (Eq, Ord, Read, Show)
+
+_DisjointClasses = Model.Name "hydra.rdf.owl.syntax.DisjointClasses"
+
+_DisjointClasses_annotations = Model.Name "annotations"
+
+_DisjointClasses_classes = Model.Name "classes"
+
+-- | An OWL axiom asserting that two or more data properties are pairwise disjoint
+data DisjointDataProperties =
+  DisjointDataProperties {
+    disjointDataPropertiesAnnotations :: [Annotation],
+    disjointDataPropertiesProperties :: [DataPropertyExpression]}
+  deriving (Eq, Ord, Read, Show)
+
+_DisjointDataProperties = Model.Name "hydra.rdf.owl.syntax.DisjointDataProperties"
+
+_DisjointDataProperties_annotations = Model.Name "annotations"
+
+_DisjointDataProperties_properties = Model.Name "properties"
+
+-- | An OWL axiom asserting that two or more object properties are pairwise disjoint
+data DisjointObjectProperties =
+  DisjointObjectProperties {
+    disjointObjectPropertiesAnnotations :: [Annotation],
+    disjointObjectPropertiesProperties :: [ObjectPropertyExpression]}
+  deriving (Eq, Ord, Read, Show)
+
+_DisjointObjectProperties = Model.Name "hydra.rdf.owl.syntax.DisjointObjectProperties"
+
+_DisjointObjectProperties_annotations = Model.Name "annotations"
+
+_DisjointObjectProperties_properties = Model.Name "properties"
+
+-- | An OWL axiom asserting that a class is the disjoint union of other class expressions
+data DisjointUnion =
+  DisjointUnion {
+    disjointUnionAnnotations :: [Annotation],
+    disjointUnionClass :: Class,
+    disjointUnionClasses :: [ClassExpression]}
+  deriving (Eq, Ord, Read, Show)
+
+_DisjointUnion = Model.Name "hydra.rdf.owl.syntax.DisjointUnion"
+
+_DisjointUnion_annotations = Model.Name "annotations"
+
+_DisjointUnion_class = Model.Name "class"
+
+_DisjointUnion_classes = Model.Name "classes"
+
+-- | An OWL entity: a class, datatype, object/data/annotation property, or named individual
+data Entity =
+  EntityAnnotationProperty AnnotationProperty |
+  EntityClass Class |
+  EntityDataProperty DataProperty |
+  EntityDatatype Datatype |
+  EntityNamedIndividual NamedIndividual |
+  EntityObjectProperty ObjectProperty
+  deriving (Eq, Ord, Read, Show)
+
+_Entity = Model.Name "hydra.rdf.owl.syntax.Entity"
+
+_Entity_annotationProperty = Model.Name "annotationProperty"
+
+_Entity_class = Model.Name "class"
+
+_Entity_dataProperty = Model.Name "dataProperty"
+
+_Entity_datatype = Model.Name "datatype"
+
+_Entity_namedIndividual = Model.Name "namedIndividual"
+
+_Entity_objectProperty = Model.Name "objectProperty"
+
+-- | An OWL axiom asserting that two or more classes are equivalent
+data EquivalentClasses =
+  EquivalentClasses {
+    equivalentClassesAnnotations :: [Annotation],
+    equivalentClassesClasses :: [ClassExpression]}
+  deriving (Eq, Ord, Read, Show)
+
+_EquivalentClasses = Model.Name "hydra.rdf.owl.syntax.EquivalentClasses"
+
+_EquivalentClasses_annotations = Model.Name "annotations"
+
+_EquivalentClasses_classes = Model.Name "classes"
+
+-- | An OWL axiom asserting that two or more data properties are equivalent
+data EquivalentDataProperties =
+  EquivalentDataProperties {
+    equivalentDataPropertiesAnnotations :: [Annotation],
+    equivalentDataPropertiesProperties :: [DataPropertyExpression]}
+  deriving (Eq, Ord, Read, Show)
+
+_EquivalentDataProperties = Model.Name "hydra.rdf.owl.syntax.EquivalentDataProperties"
+
+_EquivalentDataProperties_annotations = Model.Name "annotations"
+
+_EquivalentDataProperties_properties = Model.Name "properties"
+
+-- | An OWL axiom asserting that two or more object properties are equivalent
+data EquivalentObjectProperties =
+  EquivalentObjectProperties {
+    equivalentObjectPropertiesAnnotations :: [Annotation],
+    equivalentObjectPropertiesProperties :: [ObjectPropertyExpression]}
+  deriving (Eq, Ord, Read, Show)
+
+_EquivalentObjectProperties = Model.Name "hydra.rdf.owl.syntax.EquivalentObjectProperties"
+
+_EquivalentObjectProperties_annotations = Model.Name "annotations"
+
+_EquivalentObjectProperties_properties = Model.Name "properties"
+
+-- | An OWL axiom asserting that a data property is functional
+data FunctionalDataProperty =
+  FunctionalDataProperty {
+    functionalDataPropertyAnnotations :: [Annotation],
+    functionalDataPropertyProperty :: DataPropertyExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_FunctionalDataProperty = Model.Name "hydra.rdf.owl.syntax.FunctionalDataProperty"
+
+_FunctionalDataProperty_annotations = Model.Name "annotations"
+
+_FunctionalDataProperty_property = Model.Name "property"
+
+-- | An OWL axiom asserting a characteristic (e.g. symmetric, transitive) of an object property
+data FunctionalObjectProperty =
+  FunctionalObjectProperty {
+    functionalObjectPropertyAnnotations :: [Annotation],
+    functionalObjectPropertyProperty :: ObjectPropertyExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_FunctionalObjectProperty = Model.Name "hydra.rdf.owl.syntax.FunctionalObjectProperty"
+
+_FunctionalObjectProperty_annotations = Model.Name "annotations"
+
+_FunctionalObjectProperty_property = Model.Name "property"
+
+-- | An OWL axiom asserting that a set of properties functions as a key for a class
+data HasKey =
+  HasKey {
+    hasKeyAnnotations :: [Annotation],
+    hasKeyClass :: ClassExpression,
+    hasKeyObjectProperties :: [ObjectPropertyExpression],
+    hasKeyDataProperties :: [DataPropertyExpression]}
+  deriving (Eq, Ord, Read, Show)
+
+_HasKey = Model.Name "hydra.rdf.owl.syntax.HasKey"
+
+_HasKey_annotations = Model.Name "annotations"
+
+_HasKey_class = Model.Name "class"
+
+_HasKey_objectProperties = Model.Name "objectProperties"
+
+_HasKey_dataProperties = Model.Name "dataProperties"
+
+-- | An OWL individual: a named individual or an anonymous individual
+data Individual =
+  IndividualNamed NamedIndividual |
+  IndividualAnonymous AnonymousIndividual
+  deriving (Eq, Ord, Read, Show)
+
+_Individual = Model.Name "hydra.rdf.owl.syntax.Individual"
+
+_Individual_named = Model.Name "named"
+
+_Individual_anonymous = Model.Name "anonymous"
+
+-- | An OWL axiom asserting a characteristic (e.g. symmetric, transitive) of an object property
+data InverseFunctionalObjectProperty =
+  InverseFunctionalObjectProperty {
+    inverseFunctionalObjectPropertyAnnotations :: [Annotation],
+    inverseFunctionalObjectPropertyProperty :: ObjectPropertyExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_InverseFunctionalObjectProperty = Model.Name "hydra.rdf.owl.syntax.InverseFunctionalObjectProperty"
+
+_InverseFunctionalObjectProperty_annotations = Model.Name "annotations"
+
+_InverseFunctionalObjectProperty_property = Model.Name "property"
+
+-- | An OWL axiom asserting that two object properties are inverses of each other
+data InverseObjectProperties =
+  InverseObjectProperties {
+    inverseObjectPropertiesAnnotations :: [Annotation],
+    inverseObjectPropertiesProperty1 :: ObjectPropertyExpression,
+    inverseObjectPropertiesProperty2 :: ObjectPropertyExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_InverseObjectProperties = Model.Name "hydra.rdf.owl.syntax.InverseObjectProperties"
+
+_InverseObjectProperties_annotations = Model.Name "annotations"
+
+_InverseObjectProperties_property1 = Model.Name "property1"
+
+_InverseObjectProperties_property2 = Model.Name "property2"
+
+-- | The inverse of an OWL object property
+newtype InverseObjectProperty =
+  InverseObjectProperty {
+    unInverseObjectProperty :: ObjectProperty}
+  deriving (Eq, Ord, Read, Show)
+
+_InverseObjectProperty = Model.Name "hydra.rdf.owl.syntax.InverseObjectProperty"
+
+-- | An OWL axiom asserting a characteristic (e.g. symmetric, transitive) of an object property
+data IrreflexiveObjectProperty =
+  IrreflexiveObjectProperty {
+    irreflexiveObjectPropertyAnnotations :: [Annotation],
+    irreflexiveObjectPropertyProperty :: ObjectPropertyExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_IrreflexiveObjectProperty = Model.Name "hydra.rdf.owl.syntax.IrreflexiveObjectProperty"
+
+_IrreflexiveObjectProperty_annotations = Model.Name "annotations"
+
+_IrreflexiveObjectProperty_property = Model.Name "property"
+
+-- | An OWL named individual, identified by an IRI
+newtype NamedIndividual =
+  NamedIndividual {
+    unNamedIndividual :: ()}
+  deriving (Eq, Ord, Read, Show)
+
+_NamedIndividual = Model.Name "hydra.rdf.owl.syntax.NamedIndividual"
+
+-- | An OWL axiom asserting that a data property relationship does NOT hold
+data NegativeDataPropertyAssertion =
+  NegativeDataPropertyAssertion {
+    negativeDataPropertyAssertionAnnotations :: [Annotation],
+    negativeDataPropertyAssertionProperty :: DataPropertyExpression,
+    negativeDataPropertyAssertionSource :: Individual,
+    negativeDataPropertyAssertionTarget :: Individual}
+  deriving (Eq, Ord, Read, Show)
+
+_NegativeDataPropertyAssertion = Model.Name "hydra.rdf.owl.syntax.NegativeDataPropertyAssertion"
+
+_NegativeDataPropertyAssertion_annotations = Model.Name "annotations"
+
+_NegativeDataPropertyAssertion_property = Model.Name "property"
+
+_NegativeDataPropertyAssertion_source = Model.Name "source"
+
+_NegativeDataPropertyAssertion_target = Model.Name "target"
+
+-- | An OWL axiom asserting that an object property relationship does NOT hold
+data NegativeObjectPropertyAssertion =
+  NegativeObjectPropertyAssertion {
+    negativeObjectPropertyAssertionAnnotations :: [Annotation],
+    negativeObjectPropertyAssertionProperty :: ObjectPropertyExpression,
+    negativeObjectPropertyAssertionSource :: Individual,
+    negativeObjectPropertyAssertionTarget :: Individual}
+  deriving (Eq, Ord, Read, Show)
+
+_NegativeObjectPropertyAssertion = Model.Name "hydra.rdf.owl.syntax.NegativeObjectPropertyAssertion"
+
+_NegativeObjectPropertyAssertion_annotations = Model.Name "annotations"
+
+_NegativeObjectPropertyAssertion_property = Model.Name "property"
+
+_NegativeObjectPropertyAssertion_source = Model.Name "source"
+
+_NegativeObjectPropertyAssertion_target = Model.Name "target"
+
+-- | An OWL universal object property restriction
+data ObjectAllValuesFrom =
+  ObjectAllValuesFrom {
+    objectAllValuesFromProperty :: ObjectPropertyExpression,
+    objectAllValuesFromClass :: ClassExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_ObjectAllValuesFrom = Model.Name "hydra.rdf.owl.syntax.ObjectAllValuesFrom"
+
+_ObjectAllValuesFrom_property = Model.Name "property"
+
+_ObjectAllValuesFrom_class = Model.Name "class"
+
+-- | An OWL class expression which is the complement of another class expression
+newtype ObjectComplementOf =
+  ObjectComplementOf {
+    unObjectComplementOf :: ClassExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_ObjectComplementOf = Model.Name "hydra.rdf.owl.syntax.ObjectComplementOf"
+
+-- | An OWL exact-cardinality restriction on an object property
+data ObjectExactCardinality =
+  ObjectExactCardinality {
+    objectExactCardinalityBound :: Integer,
+    objectExactCardinalityProperty :: ObjectPropertyExpression,
+    objectExactCardinalityClass :: [ClassExpression]}
+  deriving (Eq, Ord, Read, Show)
+
+_ObjectExactCardinality = Model.Name "hydra.rdf.owl.syntax.ObjectExactCardinality"
+
+_ObjectExactCardinality_bound = Model.Name "bound"
+
+_ObjectExactCardinality_property = Model.Name "property"
+
+_ObjectExactCardinality_class = Model.Name "class"
+
+-- | An OWL class expression restricting an object property to self-relationships
+newtype ObjectHasSelf =
+  ObjectHasSelf {
+    unObjectHasSelf :: ObjectPropertyExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_ObjectHasSelf = Model.Name "hydra.rdf.owl.syntax.ObjectHasSelf"
+
+-- | An OWL object property restriction requiring a specific individual value
+data ObjectHasValue =
+  ObjectHasValue {
+    objectHasValueProperty :: ObjectPropertyExpression,
+    objectHasValueIndividual :: Individual}
+  deriving (Eq, Ord, Read, Show)
+
+_ObjectHasValue = Model.Name "hydra.rdf.owl.syntax.ObjectHasValue"
+
+_ObjectHasValue_property = Model.Name "property"
+
+_ObjectHasValue_individual = Model.Name "individual"
+
+-- | An OWL class expression which is the intersection of two or more class expressions
+newtype ObjectIntersectionOf =
+  ObjectIntersectionOf {
+    unObjectIntersectionOf :: [ClassExpression]}
+  deriving (Eq, Ord, Read, Show)
+
+_ObjectIntersectionOf = Model.Name "hydra.rdf.owl.syntax.ObjectIntersectionOf"
+
+-- | An OWL maximum-cardinality restriction on an object property
+data ObjectMaxCardinality =
+  ObjectMaxCardinality {
+    objectMaxCardinalityBound :: Integer,
+    objectMaxCardinalityProperty :: ObjectPropertyExpression,
+    objectMaxCardinalityClass :: [ClassExpression]}
+  deriving (Eq, Ord, Read, Show)
+
+_ObjectMaxCardinality = Model.Name "hydra.rdf.owl.syntax.ObjectMaxCardinality"
+
+_ObjectMaxCardinality_bound = Model.Name "bound"
+
+_ObjectMaxCardinality_property = Model.Name "property"
+
+_ObjectMaxCardinality_class = Model.Name "class"
+
+-- | An OWL minimum-cardinality restriction on an object property
+data ObjectMinCardinality =
+  ObjectMinCardinality {
+    objectMinCardinalityBound :: Integer,
+    objectMinCardinalityProperty :: ObjectPropertyExpression,
+    objectMinCardinalityClass :: [ClassExpression]}
+  deriving (Eq, Ord, Read, Show)
+
+_ObjectMinCardinality = Model.Name "hydra.rdf.owl.syntax.ObjectMinCardinality"
+
+_ObjectMinCardinality_bound = Model.Name "bound"
+
+_ObjectMinCardinality_property = Model.Name "property"
+
+_ObjectMinCardinality_class = Model.Name "class"
+
+-- | An OWL class expression enumerating one or more individuals
+newtype ObjectOneOf =
+  ObjectOneOf {
+    unObjectOneOf :: [Individual]}
+  deriving (Eq, Ord, Read, Show)
+
+_ObjectOneOf = Model.Name "hydra.rdf.owl.syntax.ObjectOneOf"
+
+-- | An OWL object property, identified by an IRI
+newtype ObjectProperty =
+  ObjectProperty {
+    unObjectProperty :: ()}
+  deriving (Eq, Ord, Read, Show)
+
+_ObjectProperty = Model.Name "hydra.rdf.owl.syntax.ObjectProperty"
+
+-- | An OWL axiom asserting an object property relationship between two individuals
+data ObjectPropertyAssertion =
+  ObjectPropertyAssertion {
+    objectPropertyAssertionAnnotations :: [Annotation],
+    objectPropertyAssertionProperty :: ObjectPropertyExpression,
+    objectPropertyAssertionSource :: Individual,
+    objectPropertyAssertionTarget :: Individual}
+  deriving (Eq, Ord, Read, Show)
+
+_ObjectPropertyAssertion = Model.Name "hydra.rdf.owl.syntax.ObjectPropertyAssertion"
+
+_ObjectPropertyAssertion_annotations = Model.Name "annotations"
+
+_ObjectPropertyAssertion_property = Model.Name "property"
+
+_ObjectPropertyAssertion_source = Model.Name "source"
+
+_ObjectPropertyAssertion_target = Model.Name "target"
+
+-- | An OWL axiom about object properties
+data ObjectPropertyAxiom =
+  ObjectPropertyAxiomAsymmetricObjectProperty AsymmetricObjectProperty |
+  ObjectPropertyAxiomDisjointObjectProperties DisjointObjectProperties |
+  ObjectPropertyAxiomEquivalentObjectProperties EquivalentObjectProperties |
+  ObjectPropertyAxiomFunctionalObjectProperty FunctionalObjectProperty |
+  ObjectPropertyAxiomInverseFunctionalObjectProperty InverseFunctionalObjectProperty |
+  ObjectPropertyAxiomInverseObjectProperties InverseObjectProperties |
+  ObjectPropertyAxiomIrreflexiveObjectProperty IrreflexiveObjectProperty |
+  ObjectPropertyAxiomObjectPropertyDomain ObjectPropertyDomain |
+  ObjectPropertyAxiomObjectPropertyRange ObjectPropertyRange |
+  ObjectPropertyAxiomReflexiveObjectProperty ReflexiveObjectProperty |
+  ObjectPropertyAxiomSubObjectPropertyOf SubObjectPropertyOf |
+  ObjectPropertyAxiomSymmetricObjectProperty SymmetricObjectProperty |
+  ObjectPropertyAxiomTransitiveObjectProperty TransitiveObjectProperty
+  deriving (Eq, Ord, Read, Show)
+
+_ObjectPropertyAxiom = Model.Name "hydra.rdf.owl.syntax.ObjectPropertyAxiom"
+
+_ObjectPropertyAxiom_asymmetricObjectProperty = Model.Name "asymmetricObjectProperty"
+
+_ObjectPropertyAxiom_disjointObjectProperties = Model.Name "disjointObjectProperties"
+
+_ObjectPropertyAxiom_equivalentObjectProperties = Model.Name "equivalentObjectProperties"
+
+_ObjectPropertyAxiom_functionalObjectProperty = Model.Name "functionalObjectProperty"
+
+_ObjectPropertyAxiom_inverseFunctionalObjectProperty = Model.Name "inverseFunctionalObjectProperty"
+
+_ObjectPropertyAxiom_inverseObjectProperties = Model.Name "inverseObjectProperties"
+
+_ObjectPropertyAxiom_irreflexiveObjectProperty = Model.Name "irreflexiveObjectProperty"
+
+_ObjectPropertyAxiom_objectPropertyDomain = Model.Name "objectPropertyDomain"
+
+_ObjectPropertyAxiom_objectPropertyRange = Model.Name "objectPropertyRange"
+
+_ObjectPropertyAxiom_reflexiveObjectProperty = Model.Name "reflexiveObjectProperty"
+
+_ObjectPropertyAxiom_subObjectPropertyOf = Model.Name "subObjectPropertyOf"
+
+_ObjectPropertyAxiom_symmetricObjectProperty = Model.Name "symmetricObjectProperty"
+
+_ObjectPropertyAxiom_transitiveObjectProperty = Model.Name "transitiveObjectProperty"
+
+-- | An OWL axiom asserting the domain of an object property
+data ObjectPropertyDomain =
+  ObjectPropertyDomain {
+    objectPropertyDomainAnnotations :: [Annotation],
+    objectPropertyDomainProperty :: ObjectPropertyExpression,
+    objectPropertyDomainDomain :: ClassExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_ObjectPropertyDomain = Model.Name "hydra.rdf.owl.syntax.ObjectPropertyDomain"
+
+_ObjectPropertyDomain_annotations = Model.Name "annotations"
+
+_ObjectPropertyDomain_property = Model.Name "property"
+
+_ObjectPropertyDomain_domain = Model.Name "domain"
+
+-- | An OWL object property expression: an object property or its inverse
+data ObjectPropertyExpression =
+  ObjectPropertyExpressionObject ObjectProperty |
+  ObjectPropertyExpressionInverseObject InverseObjectProperty
+  deriving (Eq, Ord, Read, Show)
+
+_ObjectPropertyExpression = Model.Name "hydra.rdf.owl.syntax.ObjectPropertyExpression"
+
+_ObjectPropertyExpression_object = Model.Name "object"
+
+_ObjectPropertyExpression_inverseObject = Model.Name "inverseObject"
+
+-- | An OWL axiom asserting the range of an object property
+data ObjectPropertyRange =
+  ObjectPropertyRange {
+    objectPropertyRangeAnnotations :: [Annotation],
+    objectPropertyRangeProperty :: ObjectPropertyExpression,
+    objectPropertyRangeRange :: ClassExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_ObjectPropertyRange = Model.Name "hydra.rdf.owl.syntax.ObjectPropertyRange"
+
+_ObjectPropertyRange_annotations = Model.Name "annotations"
+
+_ObjectPropertyRange_property = Model.Name "property"
+
+_ObjectPropertyRange_range = Model.Name "range"
+
+-- | An OWL existential object property restriction
+data ObjectSomeValuesFrom =
+  ObjectSomeValuesFrom {
+    objectSomeValuesFromProperty :: ObjectPropertyExpression,
+    objectSomeValuesFromClass :: ClassExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_ObjectSomeValuesFrom = Model.Name "hydra.rdf.owl.syntax.ObjectSomeValuesFrom"
+
+_ObjectSomeValuesFrom_property = Model.Name "property"
+
+_ObjectSomeValuesFrom_class = Model.Name "class"
+
+-- | An OWL class expression which is the union of two or more class expressions
+newtype ObjectUnionOf =
+  ObjectUnionOf {
+    unObjectUnionOf :: [ClassExpression]}
+  deriving (Eq, Ord, Read, Show)
+
+_ObjectUnionOf = Model.Name "hydra.rdf.owl.syntax.ObjectUnionOf"
+
+-- | An OWL ontology: a set of imports, annotations, and axioms
+data Ontology =
+  Ontology {
+    ontologyDirectImports :: [Ontology],
+    ontologyAnnotations :: [Annotation],
+    ontologyAxioms :: [Axiom]}
+  deriving (Eq, Ord, Read, Show)
+
+_Ontology = Model.Name "hydra.rdf.owl.syntax.Ontology"
+
+_Ontology_directImports = Model.Name "directImports"
+
+_Ontology_annotations = Model.Name "annotations"
+
+_Ontology_axioms = Model.Name "axioms"
+
+-- | An OWL axiom asserting a characteristic (e.g. symmetric, transitive) of an object property
+data ReflexiveObjectProperty =
+  ReflexiveObjectProperty {
+    reflexiveObjectPropertyAnnotations :: [Annotation],
+    reflexiveObjectPropertyProperty :: ObjectPropertyExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_ReflexiveObjectProperty = Model.Name "hydra.rdf.owl.syntax.ReflexiveObjectProperty"
+
+_ReflexiveObjectProperty_annotations = Model.Name "annotations"
+
+_ReflexiveObjectProperty_property = Model.Name "property"
+
+-- | An OWL axiom asserting that two or more individuals are the same
+data SameIndividual =
+  SameIndividual {
+    sameIndividualAnnotations :: [Annotation],
+    sameIndividualIndividuals :: [Individual]}
+  deriving (Eq, Ord, Read, Show)
+
+_SameIndividual = Model.Name "hydra.rdf.owl.syntax.SameIndividual"
+
+_SameIndividual_annotations = Model.Name "annotations"
+
+_SameIndividual_individuals = Model.Name "individuals"
+
+-- | An OWL axiom asserting an annotation-property subsumption relationship
+data SubAnnotationPropertyOf =
+  SubAnnotationPropertyOf {
+    subAnnotationPropertyOfAnnotations :: [Annotation],
+    subAnnotationPropertyOfSubProperty :: AnnotationProperty,
+    subAnnotationPropertyOfSuperProperty :: AnnotationProperty}
+  deriving (Eq, Ord, Read, Show)
+
+_SubAnnotationPropertyOf = Model.Name "hydra.rdf.owl.syntax.SubAnnotationPropertyOf"
+
+_SubAnnotationPropertyOf_annotations = Model.Name "annotations"
+
+_SubAnnotationPropertyOf_subProperty = Model.Name "subProperty"
+
+_SubAnnotationPropertyOf_superProperty = Model.Name "superProperty"
+
+-- | An OWL axiom asserting a subclass relationship
+data SubClassOf =
+  SubClassOf {
+    subClassOfAnnotations :: [Annotation],
+    subClassOfSubClass :: ClassExpression,
+    subClassOfSuperClass :: ClassExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_SubClassOf = Model.Name "hydra.rdf.owl.syntax.SubClassOf"
+
+_SubClassOf_annotations = Model.Name "annotations"
+
+_SubClassOf_subClass = Model.Name "subClass"
+
+_SubClassOf_superClass = Model.Name "superClass"
+
+-- | An OWL axiom asserting a data-property subsumption relationship
+data SubDataPropertyOf =
+  SubDataPropertyOf {
+    subDataPropertyOfAnnotations :: [Annotation],
+    subDataPropertyOfSubProperty :: DataPropertyExpression,
+    subDataPropertyOfSuperProperty :: DataPropertyExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_SubDataPropertyOf = Model.Name "hydra.rdf.owl.syntax.SubDataPropertyOf"
+
+_SubDataPropertyOf_annotations = Model.Name "annotations"
+
+_SubDataPropertyOf_subProperty = Model.Name "subProperty"
+
+_SubDataPropertyOf_superProperty = Model.Name "superProperty"
+
+-- | An OWL axiom asserting an object-property subsumption relationship
+data SubObjectPropertyOf =
+  SubObjectPropertyOf {
+    subObjectPropertyOfAnnotations :: [Annotation],
+    subObjectPropertyOfSubProperty :: [ObjectPropertyExpression],
+    subObjectPropertyOfSuperProperty :: ObjectPropertyExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_SubObjectPropertyOf = Model.Name "hydra.rdf.owl.syntax.SubObjectPropertyOf"
+
+_SubObjectPropertyOf_annotations = Model.Name "annotations"
+
+_SubObjectPropertyOf_subProperty = Model.Name "subProperty"
+
+_SubObjectPropertyOf_superProperty = Model.Name "superProperty"
+
+-- | An OWL axiom asserting a characteristic (e.g. symmetric, transitive) of an object property
+data SymmetricObjectProperty =
+  SymmetricObjectProperty {
+    symmetricObjectPropertyAnnotations :: [Annotation],
+    symmetricObjectPropertyProperty :: ObjectPropertyExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_SymmetricObjectProperty = Model.Name "hydra.rdf.owl.syntax.SymmetricObjectProperty"
+
+_SymmetricObjectProperty_annotations = Model.Name "annotations"
+
+_SymmetricObjectProperty_property = Model.Name "property"
+
+-- | An OWL axiom asserting a characteristic (e.g. symmetric, transitive) of an object property
+data TransitiveObjectProperty =
+  TransitiveObjectProperty {
+    transitiveObjectPropertyAnnotations :: [Annotation],
+    transitiveObjectPropertyProperty :: ObjectPropertyExpression}
+  deriving (Eq, Ord, Read, Show)
+
+_TransitiveObjectProperty = Model.Name "hydra.rdf.owl.syntax.TransitiveObjectProperty"
+
+_TransitiveObjectProperty_annotations = Model.Name "annotations"
+
+_TransitiveObjectProperty_property = Model.Name "property"
diff --git a/src/main/haskell/Hydra/Rdf/Serde.hs b/src/main/haskell/Hydra/Rdf/Serde.hs
--- a/src/main/haskell/Hydra/Rdf/Serde.hs
+++ b/src/main/haskell/Hydra/Rdf/Serde.hs
@@ -4,45 +4,47 @@
 
 module Hydra.Rdf.Serde where
 
-import qualified Hydra.Ast as Ast
-import qualified Hydra.Coders as Coders
-import qualified Hydra.Core as Core
-import qualified Hydra.Docs as Docs
-import qualified Hydra.Error.Checking as Checking
-import qualified Hydra.Error.Core as ErrorCore
-import qualified Hydra.Error.File as ErrorFile
-import qualified Hydra.Error.Packaging as ErrorPackaging
-import qualified Hydra.Error.System as ErrorSystem
-import qualified Hydra.Errors as Errors
-import qualified Hydra.File as File
-import qualified Hydra.Graph as Graph
-import qualified Hydra.Json.Model as Model
-import qualified Hydra.Overlay.Haskell.Lib.Equality as Equality
-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists
-import qualified Hydra.Overlay.Haskell.Lib.Logic as Logic
-import qualified Hydra.Overlay.Haskell.Lib.Math as Math
-import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals
-import qualified Hydra.Overlay.Haskell.Lib.Ordering as Ordering
-import qualified Hydra.Overlay.Haskell.Lib.Sets as Sets
-import qualified Hydra.Overlay.Haskell.Lib.Strings as Strings
-import qualified Hydra.Packaging as Packaging
-import qualified Hydra.Parsing as Parsing
-import qualified Hydra.Paths as Paths
-import qualified Hydra.Query as Query
+import qualified Hydra.Core.Ast as Ast
+import qualified Hydra.Core.Coders as Coders
+import qualified Hydra.Core.Diff as Diff
+import qualified Hydra.Core.Docs as Docs
+import qualified Hydra.Core.Error.Checking as Checking
+import qualified Hydra.Core.Error.File as ErrorFile
+import qualified Hydra.Core.Error.Model as ErrorModel
+import qualified Hydra.Core.Error.Packaging as ErrorPackaging
+import qualified Hydra.Core.Error.System as ErrorSystem
+import qualified Hydra.Core.Errors as Errors
+import qualified Hydra.Core.File as File
+import qualified Hydra.Core.Graph as Graph
+import qualified Hydra.Core.Json.Model as JsonModel
+import qualified Hydra.Core.Overlay.Haskell.Lib.Equality as Equality
+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists
+import qualified Hydra.Core.Overlay.Haskell.Lib.Logic as Logic
+import qualified Hydra.Core.Overlay.Haskell.Lib.Math as Math
+import qualified Hydra.Core.Overlay.Haskell.Lib.Optionals as Optionals
+import qualified Hydra.Core.Overlay.Haskell.Lib.Ordering as Ordering
+import qualified Hydra.Core.Overlay.Haskell.Lib.Sets as Sets
+import qualified Hydra.Core.Overlay.Haskell.Lib.Strings as Strings
+import qualified Hydra.Core.Markdown as Markdown
+import qualified Hydra.Core.Model as Model
+import qualified Hydra.Core.Packaging as Packaging
+import qualified Hydra.Core.Parsing as Parsing
+import qualified Hydra.Core.Paths as Paths
+import qualified Hydra.Core.Query as Query
+import qualified Hydra.Core.Regex as Regex
+import qualified Hydra.Core.Relational as Relational
+import qualified Hydra.Core.Serialization as Serialization
+import qualified Hydra.Core.System as System
+import qualified Hydra.Core.Tabular as Tabular
+import qualified Hydra.Core.Testing as Testing
+import qualified Hydra.Core.Time as Time
+import qualified Hydra.Core.Topology as Topology
+import qualified Hydra.Core.Typed as Typed
+import qualified Hydra.Core.Typing as Typing
+import qualified Hydra.Core.Util as Util
+import qualified Hydra.Core.Validation as Validation
+import qualified Hydra.Core.Variants as Variants
 import qualified Hydra.Rdf.Syntax as Syntax
-import qualified Hydra.Regex as Regex
-import qualified Hydra.Relational as Relational
-import qualified Hydra.Serialization as Serialization
-import qualified Hydra.System as System
-import qualified Hydra.Tabular as Tabular
-import qualified Hydra.Testing as Testing
-import qualified Hydra.Time as Time
-import qualified Hydra.Topology as Topology
-import qualified Hydra.Typed as Typed
-import qualified Hydra.Typing as Typing
-import qualified Hydra.Util as Util
-import qualified Hydra.Validation as Validation
-import qualified Hydra.Variants as Variants
 import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
 import qualified Data.Scientific as Sci
 import Data.Void
diff --git a/src/main/haskell/Hydra/Rdf/Shacl/Coder.hs b/src/main/haskell/Hydra/Rdf/Shacl/Coder.hs
new file mode 100644
--- /dev/null
+++ b/src/main/haskell/Hydra/Rdf/Shacl/Coder.hs
@@ -0,0 +1,342 @@
+-- Note: this is an automatically generated file. Do not edit.
+
+-- | SHACL coder: converts Hydra types and terms to SHACL shapes and RDF descriptions
+
+module Hydra.Rdf.Shacl.Coder where
+
+import qualified Hydra.Core.Annotations as Annotations
+import qualified Hydra.Core.Ast as Ast
+import qualified Hydra.Core.Coders as Coders
+import qualified Hydra.Core.Constants as Constants
+import qualified Hydra.Core.Decode.Model as DecodeModel
+import qualified Hydra.Core.Diff as Diff
+import qualified Hydra.Core.Docs as Docs
+import qualified Hydra.Core.Encode.Model as EncodeModel
+import qualified Hydra.Core.Error.Checking as Checking
+import qualified Hydra.Core.Error.File as ErrorFile
+import qualified Hydra.Core.Error.Model as ErrorModel
+import qualified Hydra.Core.Error.Packaging as ErrorPackaging
+import qualified Hydra.Core.Error.System as ErrorSystem
+import qualified Hydra.Core.Errors as Errors
+import qualified Hydra.Core.Extract.Model as ExtractModel
+import qualified Hydra.Core.File as File
+import qualified Hydra.Core.Formatting as Formatting
+import qualified Hydra.Core.Graph as Graph
+import qualified Hydra.Core.Json.Model as JsonModel
+import qualified Hydra.Core.Lexical as Lexical
+import qualified Hydra.Core.Overlay.Haskell.Lib.Eithers as Eithers
+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists
+import qualified Hydra.Core.Overlay.Haskell.Lib.Literals as Literals
+import qualified Hydra.Core.Overlay.Haskell.Lib.Logic as Logic
+import qualified Hydra.Core.Overlay.Haskell.Lib.Maps as Maps
+import qualified Hydra.Core.Overlay.Haskell.Lib.Math as Math
+import qualified Hydra.Core.Overlay.Haskell.Lib.Optionals as Optionals
+import qualified Hydra.Core.Overlay.Haskell.Lib.Pairs as Pairs
+import qualified Hydra.Core.Overlay.Haskell.Lib.Sets as Sets
+import qualified Hydra.Core.Overlay.Haskell.Lib.Strings as Strings
+import qualified Hydra.Core.Markdown as Markdown
+import qualified Hydra.Core.Model as Model
+import qualified Hydra.Core.Names as Names
+import qualified Hydra.Core.Packaging as Packaging
+import qualified Hydra.Core.Parsing as Parsing
+import qualified Hydra.Core.Paths as Paths
+import qualified Hydra.Core.Query as Query
+import qualified Hydra.Core.Regex as Regex
+import qualified Hydra.Core.Relational as Relational
+import qualified Hydra.Core.Rewriting as Rewriting
+import qualified Hydra.Core.Strip as Strip
+import qualified Hydra.Core.System as System
+import qualified Hydra.Core.Tabular as Tabular
+import qualified Hydra.Core.Testing as Testing
+import qualified Hydra.Core.Time as Time
+import qualified Hydra.Core.Topology as Topology
+import qualified Hydra.Core.Typed as Typed
+import qualified Hydra.Core.Typing as Typing
+import qualified Hydra.Core.Util as Util
+import qualified Hydra.Core.Validation as Validation
+import qualified Hydra.Core.Variants as Variants
+import qualified Hydra.Rdf.Shacl.Model as ShaclModel
+import qualified Hydra.Rdf.Syntax as Syntax
+import qualified Hydra.Rdf.Utils as Utils
+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
+import qualified Data.Scientific as Sci
+import Data.Void
+
+-- | Construct CommonProperties from a list of constraints, using defaults for other fields
+common :: [ShaclModel.CommonConstraint] -> ShaclModel.CommonProperties
+common constraints =
+    ShaclModel.CommonProperties {
+      ShaclModel.commonPropertiesConstraints = (Sets.fromList constraints),
+      ShaclModel.commonPropertiesDeactivated = Nothing,
+      ShaclModel.commonPropertiesMessage = (Syntax.LangStrings Maps.empty),
+      ShaclModel.commonPropertiesSeverity = ShaclModel.SeverityInfo,
+      ShaclModel.commonPropertiesTargetClass = Sets.empty,
+      ShaclModel.commonPropertiesTargetNode = Sets.empty,
+      ShaclModel.commonPropertiesTargetObjectsOf = Sets.empty,
+      ShaclModel.commonPropertiesTargetSubjectsOf = Sets.empty}
+
+-- | Default CommonProperties with empty constraints and default severity
+defaultCommonProperties :: ShaclModel.CommonProperties
+defaultCommonProperties = common []
+
+-- | Convert a binding's name to an RDF IRI
+elementIri :: Model.Binding -> Syntax.Iri
+elementIri el = Utils.nameToIri (Model.bindingName el)
+
+-- | Encode a record field as RDF triples with a given subject
+encodeField :: Model.Name -> Syntax.Resource -> Model.Field -> Int -> Graph.Graph -> Either Errors.Error ([Syntax.Triple], Int)
+encodeField rname subject field cx g =
+
+      let pair1 = Utils.nextBlankNode cx
+          node = Pairs.first pair1
+          cx1 = Pairs.second pair1
+      in (Eithers.bind (encodeTerm node (Model.fieldTerm field) cx1 g) (\_r1 ->
+        let descs = Pairs.first _r1
+            cx2 = Pairs.second _r1
+        in (Right (
+          Lists.concat2 (Utils.triplesOf descs) (Utils.forObjects subject (Utils.propertyIri rname (Model.fieldName field)) (Utils.subjectsOf descs)),
+          cx2))))
+
+-- | Encode a FieldType as a SHACL property shape Definition
+encodeFieldType :: Model.Name -> Maybe Integer -> Model.FieldType -> t0 -> Either Errors.Error (ShaclModel.Definition ShaclModel.PropertyShape)
+encodeFieldType rname order ft cx =
+
+      let fname = Model.fieldTypeName ft
+          ftype = Model.fieldTypeType ft
+          iri = Utils.propertyIri rname fname
+          forType =
+                  \mn -> \mx -> \t -> case (Strip.deannotateType t) of
+                    Model.TypeOptional v0 -> forType (Just 0) mx v0
+                    Model.TypeSet v0 -> forType mn Nothing v0
+                    _ -> forTypeDefault mn mx t
+          forTypeDefault =
+                  \mn -> \mx -> \t -> Eithers.map (\_cp ->
+                    let baseProp = property iri
+                        minC = Optionals.map (\_n -> ShaclModel.PropertyShapeConstraintMinCount _n) mn
+                        maxC = Optionals.map (\_n -> ShaclModel.PropertyShapeConstraintMaxCount _n) mx
+                    in ShaclModel.Definition {
+                      ShaclModel.definitionIri = iri,
+                      ShaclModel.definitionTarget = ShaclModel.PropertyShape {
+                        ShaclModel.propertyShapeCommon = _cp,
+                        ShaclModel.propertyShapeConstraints = (Sets.fromList (Optionals.givens [
+                          minC,
+                          maxC])),
+                        ShaclModel.propertyShapeDefaultValue = Nothing,
+                        ShaclModel.propertyShapeDescription = (Syntax.LangStrings Maps.empty),
+                        ShaclModel.propertyShapeName = (Syntax.LangStrings Maps.empty),
+                        ShaclModel.propertyShapeOrder = order,
+                        ShaclModel.propertyShapePath = iri}}) (encodeType rname t cx)
+      in (forType (Just 1) (Just 1) ftype)
+
+-- | Encode a list of terms as RDF list structure
+encodeList :: Syntax.Resource -> [Model.Term] -> Int -> Graph.Graph -> Either Errors.Error ([Syntax.Description], Int)
+encodeList subj terms cx0 g =
+    Logic.ifElse (Lists.isEmpty terms) (Right (
+      [
+        Syntax.Description {
+          Syntax.descriptionSubject = (Syntax.NodeIri (Syntax.Iri "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil")),
+          Syntax.descriptionGraph = (Syntax.Graph Sets.empty)}],
+      cx0)) (Optionals.match (Lists.uncons terms) (Right ([], cx0)) (\p ->
+      let pair1 = Utils.nextBlankNode cx0
+          node1 = Pairs.first pair1
+          cx1 = Pairs.second pair1
+      in (Eithers.bind (encodeTerm node1 (Pairs.first p) cx1 g) (\_r1 ->
+        let fdescs = Pairs.first _r1
+            cx2 = Pairs.second _r1
+            firstTriples = Lists.concat2 (Utils.triplesOf fdescs) (Utils.forObjects subj (Utils.rdfIri "first") (Utils.subjectsOf fdescs))
+            pair2 = Utils.nextBlankNode cx2
+            next = Pairs.first pair2
+            cx3 = Pairs.second pair2
+        in (Eithers.map (\_r2 ->
+          let rdescs = Pairs.first _r2
+              cx4 = Pairs.second _r2
+              restTriples = Lists.concat2 (Utils.triplesOf rdescs) (Utils.forObjects subj (Utils.rdfIri "rest") (Utils.subjectsOf rdescs))
+          in (
+            [
+              Syntax.Description {
+                Syntax.descriptionSubject = (Utils.resourceToNode subj),
+                Syntax.descriptionGraph = (Syntax.Graph (Sets.fromList (Lists.concat2 firstTriples restTriples)))}],
+            cx4)) (encodeList next (Pairs.second p) cx3 g))))))
+
+-- | Encode a LiteralType as SHACL CommonProperties with an XSD datatype constraint
+encodeLiteralType :: Model.LiteralType -> ShaclModel.CommonProperties
+encodeLiteralType lt =
+
+      let xsd = \local -> common [
+            ShaclModel.CommonConstraintDatatype (Utils.xmlSchemaDatatypeIri local)]
+      in case lt of
+        Model.LiteralTypeBinary -> xsd "base64Binary"
+        Model.LiteralTypeBoolean -> xsd "boolean"
+        Model.LiteralTypeFloat v0 -> case v0 of
+          Model.FloatTypeFloat32 -> xsd "float"
+          Model.FloatTypeFloat64 -> xsd "double"
+        Model.LiteralTypeInteger v0 -> case v0 of
+          Model.IntegerTypeBigint -> xsd "integer"
+          Model.IntegerTypeInt8 -> xsd "byte"
+          Model.IntegerTypeInt16 -> xsd "short"
+          Model.IntegerTypeInt32 -> xsd "int"
+          Model.IntegerTypeInt64 -> xsd "long"
+          Model.IntegerTypeUint8 -> xsd "unsignedByte"
+          Model.IntegerTypeUint16 -> xsd "unsignedShort"
+          Model.IntegerTypeUint32 -> xsd "unsignedInt"
+          Model.IntegerTypeUint64 -> xsd "unsignedLong"
+        Model.LiteralTypeString -> xsd "string"
+
+-- | Encode a Hydra term as a list of RDF Descriptions
+encodeTerm :: Syntax.Resource -> Model.Term -> Int -> Graph.Graph -> Either Errors.Error ([Syntax.Description], Int)
+encodeTerm subject term cx g =
+    case term of
+      Model.TermAnnotated v0 -> encodeTerm subject (Model.annotatedTermBody v0) cx g
+      Model.TermList v0 -> encodeList subject v0 cx g
+      Model.TermLiteral v0 -> Right (
+        [
+          Syntax.Description {
+            Syntax.descriptionSubject = (Syntax.NodeLiteral (Utils.encodeLiteral v0)),
+            Syntax.descriptionGraph = (Syntax.Graph Sets.empty)}],
+        cx)
+      Model.TermMap v0 -> Eithers.map (\_r -> (
+        [
+          Syntax.Description {
+            Syntax.descriptionSubject = (Utils.resourceToNode subject),
+            Syntax.descriptionGraph = (Syntax.Graph (Sets.fromList (Lists.concat (Pairs.first _r))))}],
+        (Pairs.second _r))) (foldAccumResult (\_cx0 -> \kv -> Eithers.bind (ExtractModel.string g (Strip.deannotateTerm (Pairs.first kv))) (\_ks ->
+        let pair2 = Utils.nextBlankNode _cx0
+            node2 = Pairs.first pair2
+            cx2 = Pairs.second pair2
+        in (Eithers.map (\_dr -> (
+          Lists.concat2 (Utils.forObjects subject (Utils.keyIri _ks) (Utils.subjectsOf (Pairs.first _dr))) (Utils.triplesOf (Pairs.first _dr)),
+          (Pairs.second _dr))) (encodeTerm node2 (Pairs.second kv) cx2 g)))) cx (Maps.toList v0))
+      Model.TermWrap v0 -> encodeTerm subject (Rewriting.wrapTermToRecord (Model.wrappedTermTypeName v0) (Model.wrappedTermBody v0)) cx g
+      Model.TermOptional v0 -> Optionals.match v0 (Right ([], cx)) (\_inner -> encodeTerm subject _inner cx g)
+      Model.TermUnit -> Right ([], cx)
+      Model.TermRecord v0 ->
+        let rname = Model.recordTypeName v0
+            fields = Model.recordFields v0
+        in (Eithers.map (\_r -> (
+          [
+            withType rname (Syntax.Description {
+              Syntax.descriptionSubject = (Utils.resourceToNode subject),
+              Syntax.descriptionGraph = (Syntax.Graph (Sets.fromList (Lists.concat (Pairs.first _r))))})],
+          (Pairs.second _r))) (foldAccumResult (\_cx0 -> \field -> encodeField rname subject field _cx0 g) cx fields))
+      Model.TermSet v0 -> Eithers.map (\_r -> (Lists.concat (Pairs.first _r), (Pairs.second _r))) (foldAccumResult (\_cx0 -> \t ->
+        let pair3 = Utils.nextBlankNode _cx0
+            node3 = Pairs.first pair3
+            cx3 = Pairs.second pair3
+        in (encodeTerm node3 t cx3 g)) cx (Sets.toList v0))
+      Model.TermInject v0 ->
+        let rname = Model.injectionTypeName v0
+            field = Model.injectionField v0
+        in (Eithers.map (\_r -> (
+          [
+            withType rname (Syntax.Description {
+              Syntax.descriptionSubject = (Utils.resourceToNode subject),
+              Syntax.descriptionGraph = (Syntax.Graph (Sets.fromList (Pairs.first _r)))})],
+          (Pairs.second _r))) (encodeField rname subject field cx g))
+      _ -> unexpectedE "RDF-compatible term" "unsupported term variant"
+
+-- | Encode a Hydra type as SHACL CommonProperties
+encodeType :: Model.Name -> Model.Type -> t0 -> Either Errors.Error ShaclModel.CommonProperties
+encodeType tname typ cx =
+
+      let any = Right (common [])
+      in case (Strip.deannotateType typ) of
+        Model.TypeEither _ -> any
+        Model.TypeList _ -> any
+        Model.TypeLiteral v0 -> Right (encodeLiteralType v0)
+        Model.TypeMap _ -> any
+        Model.TypePair _ -> any
+        Model.TypeWrap v0 -> encodeType tname (Rewriting.wrapTypeToRecord v0) cx
+        Model.TypeRecord v0 -> Eithers.map (\_props -> common [
+          ShaclModel.CommonConstraintProperty (Sets.fromList (Lists.map (\_p -> ShaclModel.ReferenceDefinition _p) _props))]) (Eithers.mapList (\_pair -> encodeFieldType tname (Just (Pairs.first _pair)) (Pairs.second _pair) cx) (Lists.zip (Lists.map (\_i -> Literals.int32ToBigint _i) (Math.range 0 (Lists.length v0))) v0))
+        Model.TypeSet _ -> any
+        Model.TypeUnion v0 -> Eithers.map (\_props -> common [
+          ShaclModel.CommonConstraintXone (Sets.fromList (Lists.map (\_p -> ShaclModel.ReferenceAnonymous (node [
+            ShaclModel.CommonConstraintProperty (Sets.fromList [
+              ShaclModel.ReferenceDefinition _p])])) _props))]) (Eithers.mapList (\_ft -> encodeFieldType tname Nothing _ft cx) v0)
+        Model.TypeUnit -> any
+        Model.TypeVariable v0 -> Right (common [
+          ShaclModel.CommonConstraintNode (Sets.fromList [
+            ShaclModel.ReferenceNamed (Utils.nameToIri v0)])])
+        _ -> unexpectedE "type" "unsupported type variant"
+
+-- | Construct an error result with the given message
+err :: String -> Either Errors.Error t0
+err msg = Left (Errors.ErrorOther (Errors.OtherError msg))
+
+-- | Fold over a list, accumulating results and threading context through each step
+foldAccumResult :: (t0 -> t1 -> Either t2 (t3, t0)) -> t0 -> [t1] -> Either t2 ([t3], t0)
+foldAccumResult f cx xs =
+    Optionals.match (Lists.uncons xs) (Right ([], cx)) (\p -> Eithers.bind (f cx (Pairs.first p)) (\_r -> Eithers.map (\_rest -> (Lists.cons (Pairs.first _r) (Pairs.first _rest), (Pairs.second _rest))) (foldAccumResult f (Pairs.second _r) (Pairs.second p))))
+
+-- | Construct a SHACL node shape from a list of common constraints
+node :: [ShaclModel.CommonConstraint] -> ShaclModel.Shape
+node constraints = ShaclModel.ShapeNode (ShaclModel.NodeShape {
+  ShaclModel.nodeShapeCommon = (common constraints)})
+
+-- | Construct a default property shape with the given IRI as its path
+property :: Syntax.Iri -> ShaclModel.PropertyShape
+property iri =
+    ShaclModel.PropertyShape {
+      ShaclModel.propertyShapeCommon = defaultCommonProperties,
+      ShaclModel.propertyShapeConstraints = Sets.empty,
+      ShaclModel.propertyShapeDefaultValue = Nothing,
+      ShaclModel.propertyShapeDescription = (Syntax.LangStrings Maps.empty),
+      ShaclModel.propertyShapeName = (Syntax.LangStrings Maps.empty),
+      ShaclModel.propertyShapeOrder = Nothing,
+      ShaclModel.propertyShapePath = iri}
+
+-- | Encode a module's type elements as a SHACL ShapesGraph
+shaclCoder :: Packaging.Module -> t0 -> Graph.Graph -> Either Errors.Error (ShaclModel.ShapesGraph, t0)
+shaclCoder mod cx g =
+
+      let typeEls =
+              Optionals.givens (Lists.map (\d -> case d of
+                Packaging.DefinitionType v0 -> Just ((\name -> \typ ->
+                  let schemaTerm = Model.TermVariable (Model.Name "hydra.core.model.Type")
+                      dataTerm =
+                              Annotations.normalizeTermAnnotations (Model.TermAnnotated (Model.AnnotatedTerm {
+                                Model.annotatedTermBody = (EncodeModel.type_ typ),
+                                Model.annotatedTermAnnotation = (Annotations.wrapAnnotationMap (Maps.fromList [
+                                  (Constants.keyType, schemaTerm)]))}))
+                  in Model.Binding {
+                    Model.bindingName = name,
+                    Model.bindingTerm = dataTerm,
+                    Model.bindingTypeScheme = (Just (Model.TypeScheme {
+                      Model.typeSchemeVariables = [],
+                      Model.typeSchemeBody = (Model.TypeVariable (Model.Name "hydra.core.model.Type")),
+                      Model.typeSchemeConstraints = Maps.empty}))}) (Packaging.typeDefinitionName v0) (Model.typeSchemeBody (Packaging.typeDefinitionBody v0)))
+                _ -> Nothing) (Packaging.moduleDefinitions mod))
+          toShape =
+                  \el -> Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_t -> _t) (DecodeModel.type_ g (Model.bindingTerm el))) (\_typ -> Eithers.map (\_cp -> ShaclModel.Definition {
+                    ShaclModel.definitionIri = (elementIri el),
+                    ShaclModel.definitionTarget = (ShaclModel.ShapeNode (ShaclModel.NodeShape {
+                      ShaclModel.nodeShapeCommon = _cp}))}) (encodeType (Model.bindingName el) _typ cx))
+      in (Eithers.map (\_shapes -> (ShaclModel.ShapesGraph (Sets.fromList _shapes), cx)) (Eithers.mapList toShape typeEls))
+
+-- | Construct an error for unexpected input, given expected and found descriptions
+unexpectedE :: String -> String -> Either Errors.Error t0
+unexpectedE expected found =
+    err (Strings.concat [
+      "Expected ",
+      expected,
+      ", found: ",
+      found])
+
+-- | Add an rdf:type triple to an RDF Description
+withType :: Model.Name -> Syntax.Description -> Syntax.Description
+withType name desc =
+
+      let subj = Syntax.descriptionSubject desc
+          triples = Syntax.unGraph (Syntax.descriptionGraph desc)
+          subjRes =
+                  case subj of
+                    Syntax.NodeIri v0 -> Syntax.ResourceIri v0
+                    Syntax.NodeBnode v0 -> Syntax.ResourceBnode v0
+          triple =
+                  Syntax.Triple {
+                    Syntax.tripleSubject = subjRes,
+                    Syntax.triplePredicate = (Utils.rdfIri "type"),
+                    Syntax.tripleObject = (Syntax.NodeIri (Utils.nameToIri name))}
+      in Syntax.Description {
+        Syntax.descriptionSubject = subj,
+        Syntax.descriptionGraph = (Syntax.Graph (Sets.insert triple triples))}
diff --git a/src/main/haskell/Hydra/Rdf/Shacl/Language.hs b/src/main/haskell/Hydra/Rdf/Shacl/Language.hs
new file mode 100644
--- /dev/null
+++ b/src/main/haskell/Hydra/Rdf/Shacl/Language.hs
@@ -0,0 +1,108 @@
+-- Note: this is an automatically generated file. Do not edit.
+
+-- | Language constraints for W3C SHACL
+
+module Hydra.Rdf.Shacl.Language where
+
+import qualified Hydra.Core.Ast as Ast
+import qualified Hydra.Core.Coders as Coders
+import qualified Hydra.Core.Diff as Diff
+import qualified Hydra.Core.Docs as Docs
+import qualified Hydra.Core.Error.Checking as Checking
+import qualified Hydra.Core.Error.File as ErrorFile
+import qualified Hydra.Core.Error.Model as ErrorModel
+import qualified Hydra.Core.Error.Packaging as ErrorPackaging
+import qualified Hydra.Core.Error.System as ErrorSystem
+import qualified Hydra.Core.Errors as Errors
+import qualified Hydra.Core.File as File
+import qualified Hydra.Core.Graph as Graph
+import qualified Hydra.Core.Json.Model as JsonModel
+import qualified Hydra.Core.Lexical as Lexical
+import qualified Hydra.Core.Overlay.Haskell.Lib.Sets as Sets
+import qualified Hydra.Core.Markdown as Markdown
+import qualified Hydra.Core.Model as Model
+import qualified Hydra.Core.Packaging as Packaging
+import qualified Hydra.Core.Parsing as Parsing
+import qualified Hydra.Core.Paths as Paths
+import qualified Hydra.Core.Query as Query
+import qualified Hydra.Core.Regex as Regex
+import qualified Hydra.Core.Relational as Relational
+import qualified Hydra.Core.System as System
+import qualified Hydra.Core.Tabular as Tabular
+import qualified Hydra.Core.Testing as Testing
+import qualified Hydra.Core.Time as Time
+import qualified Hydra.Core.Topology as Topology
+import qualified Hydra.Core.Typed as Typed
+import qualified Hydra.Core.Typing as Typing
+import qualified Hydra.Core.Util as Util
+import qualified Hydra.Core.Validation as Validation
+import qualified Hydra.Core.Variants as Variants
+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
+import qualified Data.Scientific as Sci
+import Data.Void
+
+-- | Language constraints for W3C SHACL
+shaclLanguage :: Coders.Language
+shaclLanguage =
+    Coders.Language {
+      Coders.languageName = (Coders.LanguageName "hydra.shacl"),
+      Coders.languageConstraints = Coders.LanguageConstraints {
+        Coders.languageConstraintsLiteralVariants = literalVariants,
+        Coders.languageConstraintsFloatTypes = floatTypes,
+        Coders.languageConstraintsIntegerTypes = integerTypes,
+        Coders.languageConstraintsTermVariants = termVariants,
+        Coders.languageConstraintsTypeVariants = typeVariants,
+        Coders.languageConstraintsTypes = typePredicate},
+      Coders.languageSupportedFeatures = (Sets.fromList [
+        Coders.LanguageFeaturePartialApplication,
+        Coders.LanguageFeatureNestedCaseStatements,
+        Coders.LanguageFeatureNestedPolymorphicLetBindings]),
+      Coders.languageCaseConventions = Coders.CaseConventions {
+        Coders.caseConventionsConstant = Util.CaseConventionUpperSnake,
+        Coders.caseConventionsDirectory = Util.CaseConventionLowerSnake,
+        Coders.caseConventionsEnumValue = Util.CaseConventionPascal,
+        Coders.caseConventionsField = Util.CaseConventionCamel,
+        Coders.caseConventionsFile = Util.CaseConventionLowerSnake,
+        Coders.caseConventionsModule = Util.CaseConventionLowerSnake,
+        Coders.caseConventionsTerm = Util.CaseConventionCamel,
+        Coders.caseConventionsTermVariable = Util.CaseConventionCamel,
+        Coders.caseConventionsType = Util.CaseConventionPascal,
+        Coders.caseConventionsTypeVariable = Util.CaseConventionPascal},
+      Coders.languageDefaultFileExtension = (File.FileExtension "ttl")}
+  where
+    literalVariants =
+        Sets.fromList [
+          Variants.LiteralVariantBoolean,
+          Variants.LiteralVariantFloat,
+          Variants.LiteralVariantInteger,
+          Variants.LiteralVariantString]
+    floatTypes =
+        Sets.fromList [
+          Model.FloatTypeFloat32,
+          Model.FloatTypeFloat64]
+    integerTypes =
+        Sets.fromList [
+          Model.IntegerTypeInt32,
+          Model.IntegerTypeInt64]
+    termVariants =
+        Sets.fromList [
+          Variants.TermVariantList,
+          Variants.TermVariantLiteral,
+          Variants.TermVariantMap,
+          Variants.TermVariantWrap,
+          Variants.TermVariantOptional,
+          Variants.TermVariantRecord,
+          Variants.TermVariantSet,
+          Variants.TermVariantInject]
+    typeVariants =
+        Sets.fromList [
+          Variants.TypeVariantAnnotated,
+          Variants.TypeVariantList,
+          Variants.TypeVariantLiteral,
+          Variants.TypeVariantMap,
+          Variants.TypeVariantWrap,
+          Variants.TypeVariantOptional,
+          Variants.TypeVariantRecord,
+          Variants.TypeVariantSet,
+          Variants.TypeVariantUnion]
+    typePredicate = \_ -> True
diff --git a/src/main/haskell/Hydra/Rdf/Shacl/Model.hs b/src/main/haskell/Hydra/Rdf/Shacl/Model.hs
new file mode 100644
--- /dev/null
+++ b/src/main/haskell/Hydra/Rdf/Shacl/Model.hs
@@ -0,0 +1,361 @@
+-- Note: this is an automatically generated file. Do not edit.
+
+-- | A SHACL syntax model. See https://www.w3.org/TR/shacl
+
+module Hydra.Rdf.Shacl.Model where
+
+import qualified Hydra.Core.Model as Model
+import qualified Hydra.Rdf.Syntax as Syntax
+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
+import qualified Data.Scientific as Sci
+import Data.Void
+import qualified Data.Set as S
+
+-- | A SHACL closed-shape constraint, restricting a node's properties to those explicitly listed or ignored
+data Closed =
+  Closed {
+    closedIsClosed :: Bool,
+    closedIgnoredProperties :: (Maybe (S.Set Syntax.Property))}
+  deriving (Eq, Ord, Read, Show)
+
+_Closed = Model.Name "hydra.rdf.shacl.model.Closed"
+
+_Closed_isClosed = Model.Name "isClosed"
+
+_Closed_ignoredProperties = Model.Name "ignoredProperties"
+
+-- | Any of a number of constraint parameters which can be applied either to node or property shapes
+data CommonConstraint =
+  -- | See https://www.w3.org/TR/shacl/#AndConstraintComponent
+  CommonConstraintAnd (S.Set (Reference Shape)) |
+  -- | See https://www.w3.org/TR/shacl/#ClosedConstraintComponent
+  CommonConstraintClosed Closed |
+  -- | See https://www.w3.org/TR/shacl/#ClassConstraintComponent
+  CommonConstraintClass (S.Set Syntax.RdfsClass) |
+  -- | See https://www.w3.org/TR/shacl/#DatatypeConstraintComponent
+  CommonConstraintDatatype Syntax.Iri |
+  -- | See https://www.w3.org/TR/shacl/#DisjointConstraintComponent
+  CommonConstraintDisjoint (S.Set Syntax.Property) |
+  -- | See https://www.w3.org/TR/shacl/#EqualsConstraintComponent
+  CommonConstraintEquals (S.Set Syntax.Property) |
+  -- | Specifies the condition that at least one value node is equal to the given RDF term. See https://www.w3.org/TR/shacl/#HasValueConstraintComponent
+  CommonConstraintHasValue (S.Set Syntax.Node) |
+  -- | Specifies the condition that each value node is a member of a provided SHACL list. See https://www.w3.org/TR/shacl/#InConstraintComponent
+  CommonConstraintIn [Syntax.Node] |
+  -- | See https://www.w3.org/TR/shacl/#LanguageInConstraintComponent
+  CommonConstraintLanguageIn (S.Set Syntax.LanguageTag) |
+  -- | See https://www.w3.org/TR/shacl/#NodeKindConstraintComponent
+  CommonConstraintNodeKind NodeKind |
+  -- | See https://www.w3.org/TR/shacl/#NodeConstraintComponent
+  CommonConstraintNode (S.Set (Reference NodeShape)) |
+  -- | See https://www.w3.org/TR/shacl/#NotConstraintComponent
+  CommonConstraintNot (S.Set (Reference Shape)) |
+  -- | See https://www.w3.org/TR/shacl/#MaxExclusiveConstraintComponent
+  CommonConstraintMaxExclusive Syntax.Literal |
+  -- | See https://www.w3.org/TR/shacl/#MaxInclusiveConstraintComponent
+  CommonConstraintMaxInclusive Syntax.Literal |
+  -- | See https://www.w3.org/TR/shacl/#MaxLengthConstraintComponent
+  CommonConstraintMaxLength Integer |
+  -- | See https://www.w3.org/TR/shacl/#MinExclusiveConstraintComponent
+  CommonConstraintMinExclusive Syntax.Literal |
+  -- | See https://www.w3.org/TR/shacl/#MinInclusiveConstraintComponent
+  CommonConstraintMinInclusive Syntax.Literal |
+  -- | See https://www.w3.org/TR/shacl/#MinLengthConstraintComponent
+  CommonConstraintMinLength Integer |
+  -- | See https://www.w3.org/TR/shacl/#PatternConstraintComponent
+  CommonConstraintPattern Pattern |
+  -- | See https://www.w3.org/TR/shacl/#PropertyConstraintComponent
+  CommonConstraintProperty (S.Set (Reference PropertyShape)) |
+  -- | See https://www.w3.org/TR/shacl/#OrConstraintComponent
+  CommonConstraintOr (S.Set (Reference Shape)) |
+  -- | See https://www.w3.org/TR/shacl/#XoneConstraintComponent
+  CommonConstraintXone (S.Set (Reference Shape))
+  deriving (Eq, Ord, Read, Show)
+
+_CommonConstraint = Model.Name "hydra.rdf.shacl.model.CommonConstraint"
+
+_CommonConstraint_and = Model.Name "and"
+
+_CommonConstraint_closed = Model.Name "closed"
+
+_CommonConstraint_class = Model.Name "class"
+
+_CommonConstraint_datatype = Model.Name "datatype"
+
+_CommonConstraint_disjoint = Model.Name "disjoint"
+
+_CommonConstraint_equals = Model.Name "equals"
+
+_CommonConstraint_hasValue = Model.Name "hasValue"
+
+_CommonConstraint_in = Model.Name "in"
+
+_CommonConstraint_languageIn = Model.Name "languageIn"
+
+_CommonConstraint_nodeKind = Model.Name "nodeKind"
+
+_CommonConstraint_node = Model.Name "node"
+
+_CommonConstraint_not = Model.Name "not"
+
+_CommonConstraint_maxExclusive = Model.Name "maxExclusive"
+
+_CommonConstraint_maxInclusive = Model.Name "maxInclusive"
+
+_CommonConstraint_maxLength = Model.Name "maxLength"
+
+_CommonConstraint_minExclusive = Model.Name "minExclusive"
+
+_CommonConstraint_minInclusive = Model.Name "minInclusive"
+
+_CommonConstraint_minLength = Model.Name "minLength"
+
+_CommonConstraint_pattern = Model.Name "pattern"
+
+_CommonConstraint_property = Model.Name "property"
+
+_CommonConstraint_or = Model.Name "or"
+
+_CommonConstraint_xone = Model.Name "xone"
+
+-- | Common constraint parameters and other properties for SHACL shapes
+data CommonProperties =
+  CommonProperties {
+    -- | Common constraint parameters attached to this shape
+    commonPropertiesConstraints :: (S.Set CommonConstraint),
+    -- | See https://www.w3.org/TR/shacl/#deactivated
+    commonPropertiesDeactivated :: (Maybe Bool),
+    -- | See https://www.w3.org/TR/shacl/#message
+    commonPropertiesMessage :: Syntax.LangStrings,
+    -- | See https://www.w3.org/TR/shacl/#severity
+    commonPropertiesSeverity :: Severity,
+    -- | See https://www.w3.org/TR/shacl/#targetClass
+    commonPropertiesTargetClass :: (S.Set Syntax.RdfsClass),
+    -- | See https://www.w3.org/TR/shacl/#targetNode
+    commonPropertiesTargetNode :: (S.Set Syntax.IriOrLiteral),
+    -- | See https://www.w3.org/TR/shacl/#targetObjectsOf
+    commonPropertiesTargetObjectsOf :: (S.Set Syntax.Property),
+    -- | See https://www.w3.org/TR/shacl/#targetSubjectsOf
+    commonPropertiesTargetSubjectsOf :: (S.Set Syntax.Property)}
+  deriving (Eq, Ord, Read, Show)
+
+_CommonProperties = Model.Name "hydra.rdf.shacl.model.CommonProperties"
+
+_CommonProperties_constraints = Model.Name "constraints"
+
+_CommonProperties_deactivated = Model.Name "deactivated"
+
+_CommonProperties_message = Model.Name "message"
+
+_CommonProperties_severity = Model.Name "severity"
+
+_CommonProperties_targetClass = Model.Name "targetClass"
+
+_CommonProperties_targetNode = Model.Name "targetNode"
+
+_CommonProperties_targetObjectsOf = Model.Name "targetObjectsOf"
+
+_CommonProperties_targetSubjectsOf = Model.Name "targetSubjectsOf"
+
+-- | An instance of a type like sh:Shape or sh:NodeShape, together with a unique IRI for that instance
+data Definition a =
+  Definition {
+    definitionIri :: Syntax.Iri,
+    definitionTarget :: a}
+  deriving (Eq, Ord, Read, Show)
+
+_Definition = Model.Name "hydra.rdf.shacl.model.Definition"
+
+_Definition_iri = Model.Name "iri"
+
+_Definition_target = Model.Name "target"
+
+-- | The SHACL node kind of an RDF term
+data NodeKind =
+  -- | A blank node
+  NodeKindBlankNode |
+  -- | An IRI
+  NodeKindIri |
+  -- | A literal
+  NodeKindLiteral |
+  -- | A blank node or an IRI
+  NodeKindBlankNodeOrIri |
+  -- | A blank node or a literal
+  NodeKindBlankNodeOrLiteral |
+  -- | An IRI or a literal
+  NodeKindIriOrLiteral
+  deriving (Eq, Ord, Read, Show)
+
+_NodeKind = Model.Name "hydra.rdf.shacl.model.NodeKind"
+
+_NodeKind_blankNode = Model.Name "blankNode"
+
+_NodeKind_iri = Model.Name "iri"
+
+_NodeKind_literal = Model.Name "literal"
+
+_NodeKind_blankNodeOrIri = Model.Name "blankNodeOrIri"
+
+_NodeKind_blankNodeOrLiteral = Model.Name "blankNodeOrLiteral"
+
+_NodeKind_iriOrLiteral = Model.Name "iriOrLiteral"
+
+-- | A SHACL node shape. See https://www.w3.org/TR/shacl/#node-shapes
+data NodeShape =
+  NodeShape {
+    nodeShapeCommon :: CommonProperties}
+  deriving (Eq, Ord, Read, Show)
+
+_NodeShape = Model.Name "hydra.rdf.shacl.model.NodeShape"
+
+_NodeShape_common = Model.Name "common"
+
+-- | A SHACL pattern. See https://www.w3.org/TR/shacl/#PatternConstraintComponent
+data Pattern =
+  Pattern {
+    patternRegex :: String,
+    patternFlags :: (Maybe String)}
+  deriving (Eq, Ord, Read, Show)
+
+_Pattern = Model.Name "hydra.rdf.shacl.model.Pattern"
+
+_Pattern_regex = Model.Name "regex"
+
+_Pattern_flags = Model.Name "flags"
+
+-- | A SHACL property shape. See https://www.w3.org/TR/shacl/#property-shapes
+data PropertyShape =
+  PropertyShape {
+    propertyShapeCommon :: CommonProperties,
+    -- | Any property shape -specific constraint parameters
+    propertyShapeConstraints :: (S.Set PropertyShapeConstraint),
+    -- | See https://www.w3.org/TR/shacl/#defaultValue
+    propertyShapeDefaultValue :: (Maybe Syntax.Node),
+    -- | See https://www.w3.org/TR/shacl/#name
+    propertyShapeDescription :: Syntax.LangStrings,
+    -- | See https://www.w3.org/TR/shacl/#name
+    propertyShapeName :: Syntax.LangStrings,
+    -- | See https://www.w3.org/TR/shacl/#order
+    propertyShapeOrder :: (Maybe Integer),
+    propertyShapePath :: Syntax.Iri}
+  deriving (Eq, Ord, Read, Show)
+
+_PropertyShape = Model.Name "hydra.rdf.shacl.model.PropertyShape"
+
+_PropertyShape_common = Model.Name "common"
+
+_PropertyShape_constraints = Model.Name "constraints"
+
+_PropertyShape_defaultValue = Model.Name "defaultValue"
+
+_PropertyShape_description = Model.Name "description"
+
+_PropertyShape_name = Model.Name "name"
+
+_PropertyShape_order = Model.Name "order"
+
+_PropertyShape_path = Model.Name "path"
+
+-- | A number of constraint parameters which are specific to property shapes, and cannot be applied to node shapes
+data PropertyShapeConstraint =
+  -- | See https://www.w3.org/TR/shacl/#LessThanConstraintComponent
+  PropertyShapeConstraintLessThan (S.Set Syntax.Property) |
+  -- | See https://www.w3.org/TR/shacl/#LessThanOrEqualsConstraintComponent
+  PropertyShapeConstraintLessThanOrEquals (S.Set Syntax.Property) |
+  -- | The maximum cardinality. Node shapes cannot have any value for sh:maxCount. See https://www.w3.org/TR/shacl/#MaxCountConstraintComponent
+  PropertyShapeConstraintMaxCount Integer |
+  -- | The minimum cardinality. Node shapes cannot have any value for sh:minCount. See https://www.w3.org/TR/shacl/#MinCountConstraintComponent
+  PropertyShapeConstraintMinCount Integer |
+  -- | See https://www.w3.org/TR/shacl/#UniqueLangConstraintComponent
+  PropertyShapeConstraintUniqueLang Bool |
+  -- | See https://www.w3.org/TR/shacl/#QualifiedValueShapeConstraintComponent
+  PropertyShapeConstraintQualifiedValueShape QualifiedValueShape
+  deriving (Eq, Ord, Read, Show)
+
+_PropertyShapeConstraint = Model.Name "hydra.rdf.shacl.model.PropertyShapeConstraint"
+
+_PropertyShapeConstraint_lessThan = Model.Name "lessThan"
+
+_PropertyShapeConstraint_lessThanOrEquals = Model.Name "lessThanOrEquals"
+
+_PropertyShapeConstraint_maxCount = Model.Name "maxCount"
+
+_PropertyShapeConstraint_minCount = Model.Name "minCount"
+
+_PropertyShapeConstraint_uniqueLang = Model.Name "uniqueLang"
+
+_PropertyShapeConstraint_qualifiedValueShape = Model.Name "qualifiedValueShape"
+
+-- | A SHACL qualified value shape constraint, requiring a count of values conforming to a given shape
+data QualifiedValueShape =
+  QualifiedValueShape {
+    qualifiedValueShapeQualifiedValueShape :: (Reference Shape),
+    qualifiedValueShapeQualifiedMaxCount :: Integer,
+    qualifiedValueShapeQualifiedMinCount :: Integer,
+    qualifiedValueShapeQualifiedValueShapesDisjoint :: (Maybe Bool)}
+  deriving (Eq, Ord, Read, Show)
+
+_QualifiedValueShape = Model.Name "hydra.rdf.shacl.model.QualifiedValueShape"
+
+_QualifiedValueShape_qualifiedValueShape = Model.Name "qualifiedValueShape"
+
+_QualifiedValueShape_qualifiedMaxCount = Model.Name "qualifiedMaxCount"
+
+_QualifiedValueShape_qualifiedMinCount = Model.Name "qualifiedMinCount"
+
+_QualifiedValueShape_qualifiedValueShapesDisjoint = Model.Name "qualifiedValueShapesDisjoint"
+
+-- | Either an instance of a type like sh:Shape or sh:NodeShape, or an IRI which refers to an instance of that type
+data Reference a =
+  ReferenceNamed Syntax.Iri |
+  -- | An anonymous instance
+  ReferenceAnonymous a |
+  -- | An inline definition
+  ReferenceDefinition (Definition a)
+  deriving (Eq, Ord, Read, Show)
+
+_Reference = Model.Name "hydra.rdf.shacl.model.Reference"
+
+_Reference_named = Model.Name "named"
+
+_Reference_anonymous = Model.Name "anonymous"
+
+_Reference_definition = Model.Name "definition"
+
+-- | The severity of a SHACL constraint violation
+data Severity =
+  -- | A non-critical constraint violation indicating an informative message
+  SeverityInfo |
+  -- | A non-critical constraint violation indicating a warning
+  SeverityWarning |
+  -- | A constraint violation
+  SeverityViolation
+  deriving (Eq, Ord, Read, Show)
+
+_Severity = Model.Name "hydra.rdf.shacl.model.Severity"
+
+_Severity_info = Model.Name "info"
+
+_Severity_warning = Model.Name "warning"
+
+_Severity_violation = Model.Name "violation"
+
+-- | A SHACL node or property shape. See https://www.w3.org/TR/shacl/#shapes
+data Shape =
+  ShapeNode NodeShape |
+  ShapeProperty PropertyShape
+  deriving (Eq, Ord, Read, Show)
+
+_Shape = Model.Name "hydra.rdf.shacl.model.Shape"
+
+_Shape_node = Model.Name "node"
+
+_Shape_property = Model.Name "property"
+
+-- | An RDF graph containing zero or more shapes that is passed into a SHACL validation process so that a data graph can be validated against the shapes
+newtype ShapesGraph =
+  ShapesGraph {
+    unShapesGraph :: (S.Set (Definition Shape))}
+  deriving (Eq, Ord, Read, Show)
+
+_ShapesGraph = Model.Name "hydra.rdf.shacl.model.ShapesGraph"
diff --git a/src/main/haskell/Hydra/Rdf/ShaclRdf.hs b/src/main/haskell/Hydra/Rdf/ShaclRdf.hs
--- a/src/main/haskell/Hydra/Rdf/ShaclRdf.hs
+++ b/src/main/haskell/Hydra/Rdf/ShaclRdf.hs
@@ -4,44 +4,46 @@
 
 module Hydra.Rdf.ShaclRdf where
 
-import qualified Hydra.Ast as Ast
-import qualified Hydra.Coders as Coders
-import qualified Hydra.Core as Core
-import qualified Hydra.Docs as Docs
-import qualified Hydra.Error.Checking as Checking
-import qualified Hydra.Error.Core as ErrorCore
-import qualified Hydra.Error.File as ErrorFile
-import qualified Hydra.Error.Packaging as ErrorPackaging
-import qualified Hydra.Error.System as ErrorSystem
-import qualified Hydra.Errors as Errors
-import qualified Hydra.File as File
-import qualified Hydra.Graph as Graph
-import qualified Hydra.Json.Model as JsonModel
-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists
-import qualified Hydra.Overlay.Haskell.Lib.Literals as Literals
-import qualified Hydra.Overlay.Haskell.Lib.Logic as Logic
-import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals
-import qualified Hydra.Overlay.Haskell.Lib.Sets as Sets
-import qualified Hydra.Packaging as Packaging
-import qualified Hydra.Parsing as Parsing
-import qualified Hydra.Paths as Paths
-import qualified Hydra.Query as Query
+import qualified Hydra.Core.Ast as Ast
+import qualified Hydra.Core.Coders as Coders
+import qualified Hydra.Core.Diff as Diff
+import qualified Hydra.Core.Docs as Docs
+import qualified Hydra.Core.Error.Checking as Checking
+import qualified Hydra.Core.Error.File as ErrorFile
+import qualified Hydra.Core.Error.Model as ErrorModel
+import qualified Hydra.Core.Error.Packaging as ErrorPackaging
+import qualified Hydra.Core.Error.System as ErrorSystem
+import qualified Hydra.Core.Errors as Errors
+import qualified Hydra.Core.File as File
+import qualified Hydra.Core.Graph as Graph
+import qualified Hydra.Core.Json.Model as JsonModel
+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists
+import qualified Hydra.Core.Overlay.Haskell.Lib.Literals as Literals
+import qualified Hydra.Core.Overlay.Haskell.Lib.Logic as Logic
+import qualified Hydra.Core.Overlay.Haskell.Lib.Optionals as Optionals
+import qualified Hydra.Core.Overlay.Haskell.Lib.Sets as Sets
+import qualified Hydra.Core.Markdown as Markdown
+import qualified Hydra.Core.Model as Model
+import qualified Hydra.Core.Packaging as Packaging
+import qualified Hydra.Core.Parsing as Parsing
+import qualified Hydra.Core.Paths as Paths
+import qualified Hydra.Core.Query as Query
+import qualified Hydra.Core.Regex as Regex
+import qualified Hydra.Core.Relational as Relational
+import qualified Hydra.Core.System as System
+import qualified Hydra.Core.Tabular as Tabular
+import qualified Hydra.Core.Testing as Testing
+import qualified Hydra.Core.Time as Time
+import qualified Hydra.Core.Topology as Topology
+import qualified Hydra.Core.Typed as Typed
+import qualified Hydra.Core.Typing as Typing
+import qualified Hydra.Core.Util as Util
+import qualified Hydra.Core.Validation as Validation
+import qualified Hydra.Core.Variants as Variants
 import qualified Hydra.Rdf.Serde as Serde
+import qualified Hydra.Rdf.Shacl.Model as ShaclModel
 import qualified Hydra.Rdf.Syntax as Syntax
 import qualified Hydra.Rdf.Utils as Utils
-import qualified Hydra.Regex as Regex
-import qualified Hydra.Relational as Relational
-import qualified Hydra.Shacl.Model as ShaclModel
-import qualified Hydra.System as System
-import qualified Hydra.Tabular as Tabular
-import qualified Hydra.Testing as Testing
-import qualified Hydra.Time as Time
-import qualified Hydra.Topology as Topology
-import qualified Hydra.Typed as Typed
-import qualified Hydra.Typing as Typing
-import qualified Hydra.Util as Util
-import qualified Hydra.Validation as Validation
-import qualified Hydra.Variants as Variants
 import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
 import qualified Data.Scientific as Sci
 import Data.Void
diff --git a/src/main/haskell/Hydra/Rdf/Shex/Syntax.hs b/src/main/haskell/Hydra/Rdf/Shex/Syntax.hs
new file mode 100644
--- /dev/null
+++ b/src/main/haskell/Hydra/Rdf/Shex/Syntax.hs
@@ -0,0 +1,1746 @@
+-- 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.Rdf.Shex.Syntax where
+
+import qualified Hydra.Core.Model as Model
+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
+import qualified Data.Scientific as Sci
+import Data.Void
+
+-- | ShEx grammar production: Annotation ::= '//' Predicate (Iri | Literal)
+data Annotation =
+  Annotation {
+    annotationPredicate :: Predicate,
+    annotationAlts :: AnnotationAlts}
+  deriving (Eq, Ord, Read, Show)
+
+_Annotation = Model.Name "hydra.rdf.shex.syntax.Annotation"
+
+_Annotation_Predicate = Model.Name "Predicate"
+
+_Annotation_alts = Model.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 = Model.Name "hydra.rdf.shex.syntax.AnnotationAlts"
+
+_AnnotationAlts_Iri = Model.Name "Iri"
+
+_AnnotationAlts_Literal = Model.Name "Literal"
+
+-- | ShEx grammar production: AtpNameLn ::= '@' PnameNs PnLocal
+data AtpNameLn =
+  AtpNameLn {
+    atpNameLnPnameNs :: PnameNs,
+    atpNameLnPnLocal :: PnLocal}
+  deriving (Eq, Ord, Read, Show)
+
+_AtpNameLn = Model.Name "hydra.rdf.shex.syntax.AtpNameLn"
+
+_AtpNameLn_PnameNs = Model.Name "PnameNs"
+
+_AtpNameLn_PnLocal = Model.Name "PnLocal"
+
+-- | ShEx grammar production: AtpNameNs ::= '@' PnPrefix? ':'
+newtype AtpNameNs =
+  AtpNameNs {
+    unAtpNameNs :: (Maybe PnPrefix)}
+  deriving (Eq, Ord, Read, Show)
+
+_AtpNameNs = Model.Name "hydra.rdf.shex.syntax.AtpNameNs"
+
+-- | ShEx grammar production: BaseDecl ::= 'BASE' IriRef
+newtype BaseDecl =
+  BaseDecl {
+    unBaseDecl :: IriRef}
+  deriving (Eq, Ord, Read, Show)
+
+_BaseDecl = Model.Name "hydra.rdf.shex.syntax.BaseDecl"
+
+-- | ShEx grammar production: BlankNode ::= BlankNodeLabel
+newtype BlankNode =
+  BlankNode {
+    unBlankNode :: BlankNodeLabel}
+  deriving (Eq, Ord, Read, Show)
+
+_BlankNode = Model.Name "hydra.rdf.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 = Model.Name "hydra.rdf.shex.syntax.BlankNodeLabel"
+
+_BlankNodeLabel_alts = Model.Name "alts"
+
+_BlankNodeLabel_ListOfAlts = Model.Name "ListOfAlts"
+
+_BlankNodeLabel_PnChars = Model.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 = Model.Name "hydra.rdf.shex.syntax.BlankNodeLabelAlts"
+
+_BlankNodeLabelAlts_PnCharsU = Model.Name "PnCharsU"
+
+_BlankNodeLabelAlts_regex = Model.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 = Model.Name "hydra.rdf.shex.syntax.BlankNodeLabelListOfAltsOptionElmt"
+
+_BlankNodeLabelListOfAltsOptionElmt_PnChars = Model.Name "PnChars"
+
+_BlankNodeLabelListOfAltsOptionElmt_Period = Model.Name "Period"
+
+-- | ShEx grammar production: BooleanLiteral ::= 'true' | 'false'
+data BooleanLiteral =
+  BooleanLiteralTrue |
+  BooleanLiteralFalse
+  deriving (Eq, Ord, Read, Show)
+
+_BooleanLiteral = Model.Name "hydra.rdf.shex.syntax.BooleanLiteral"
+
+_BooleanLiteral_True = Model.Name "True"
+
+_BooleanLiteral_False = Model.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 = Model.Name "hydra.rdf.shex.syntax.BracketedTripleExpr"
+
+_BracketedTripleExpr_InnerTripleExpr = Model.Name "InnerTripleExpr"
+
+_BracketedTripleExpr_Cardinality = Model.Name "Cardinality"
+
+_BracketedTripleExpr_listOfAnnotation = Model.Name "listOfAnnotation"
+
+_BracketedTripleExpr_SemanticActions = Model.Name "SemanticActions"
+
+-- | ShEx grammar production: Cardinality ::= '*' | '+' | '?' | RepeatRange
+data Cardinality =
+  CardinalityAst |
+  CardinalityPlus |
+  CardinalityQuest |
+  CardinalityRepeatRange RepeatRange
+  deriving (Eq, Ord, Read, Show)
+
+_Cardinality = Model.Name "hydra.rdf.shex.syntax.Cardinality"
+
+_Cardinality_Ast = Model.Name "Ast"
+
+_Cardinality_Plus = Model.Name "Plus"
+
+_Cardinality_Quest = Model.Name "Quest"
+
+_Cardinality_RepeatRange = Model.Name "RepeatRange"
+
+-- | A component of the ShEx Code production
+newtype Code =
+  Code {
+    unCode :: [CodeElmt]}
+  deriving (Eq, Ord, Read, Show)
+
+_Code = Model.Name "hydra.rdf.shex.syntax.Code"
+
+-- | ShEx grammar production: CodeDecl ::= '%' Iri (Code | '%')
+data CodeDecl =
+  CodeDecl {
+    codeDeclIri :: Iri,
+    codeDeclAlts :: CodeDeclAlts}
+  deriving (Eq, Ord, Read, Show)
+
+_CodeDecl = Model.Name "hydra.rdf.shex.syntax.CodeDecl"
+
+_CodeDecl_Iri = Model.Name "Iri"
+
+_CodeDecl_alts = Model.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 = Model.Name "hydra.rdf.shex.syntax.CodeDeclAlts"
+
+_CodeDeclAlts_Code = Model.Name "Code"
+
+_CodeDeclAlts_Percnt = Model.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 = Model.Name "hydra.rdf.shex.syntax.CodeElmt"
+
+_CodeElmt_regex = Model.Name "regex"
+
+_CodeElmt_sequence = Model.Name "sequence"
+
+_CodeElmt_Uchar = Model.Name "Uchar"
+
+-- | ShEx grammar production: Datatype ::= Iri
+newtype Datatype =
+  Datatype {
+    unDatatype :: Iri}
+  deriving (Eq, Ord, Read, Show)
+
+_Datatype = Model.Name "hydra.rdf.shex.syntax.Datatype"
+
+-- | A component of the ShEx Decimal production
+newtype Decimal =
+  Decimal {
+    unDecimal :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_Decimal = Model.Name "hydra.rdf.shex.syntax.Decimal"
+
+-- | ShEx grammar production: Directive ::= BaseDecl | PrefixDecl
+data Directive =
+  DirectiveBaseDecl BaseDecl |
+  DirectivePrefixDecl PrefixDecl
+  deriving (Eq, Ord, Read, Show)
+
+_Directive = Model.Name "hydra.rdf.shex.syntax.Directive"
+
+_Directive_BaseDecl = Model.Name "BaseDecl"
+
+_Directive_PrefixDecl = Model.Name "PrefixDecl"
+
+-- | A component of the ShEx Double production
+newtype Double_ =
+  Double_ {
+    unDouble :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_Double = Model.Name "hydra.rdf.shex.syntax.Double"
+
+-- | ShEx grammar production: Echar ::= '\' [tbnrf\'']
+newtype Echar =
+  Echar {
+    unEchar :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_Echar = Model.Name "hydra.rdf.shex.syntax.Echar"
+
+-- | ShEx grammar production: Exclusion ::= '-' Iri '~'?
+newtype Exclusion =
+  Exclusion {
+    unExclusion :: Iri}
+  deriving (Eq, Ord, Read, Show)
+
+_Exclusion = Model.Name "hydra.rdf.shex.syntax.Exclusion"
+
+-- | ShEx grammar production: ExtraPropertySet ::= 'EXTRA' Predicate+
+newtype ExtraPropertySet =
+  ExtraPropertySet {
+    unExtraPropertySet :: [Predicate]}
+  deriving (Eq, Ord, Read, Show)
+
+_ExtraPropertySet = Model.Name "hydra.rdf.shex.syntax.ExtraPropertySet"
+
+-- | ShEx grammar production: GroupTripleExpr ::= SingleElementGroup | MultiElementGroup
+data GroupTripleExpr =
+  GroupTripleExprSingleElementGroup SingleElementGroup |
+  GroupTripleExprMultiElementGroup MultiElementGroup
+  deriving (Eq, Ord, Read, Show)
+
+_GroupTripleExpr = Model.Name "hydra.rdf.shex.syntax.GroupTripleExpr"
+
+_GroupTripleExpr_SingleElementGroup = Model.Name "SingleElementGroup"
+
+_GroupTripleExpr_MultiElementGroup = Model.Name "MultiElementGroup"
+
+-- | ShEx grammar production: Hex ::= [0-9] | [A-F] | [a-f]
+newtype Hex =
+  Hex {
+    unHex :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_Hex = Model.Name "hydra.rdf.shex.syntax.Hex"
+
+-- | ShEx grammar production: Include ::= '&' TripleExprLabel
+newtype Include =
+  Include {
+    unInclude :: TripleExprLabel}
+  deriving (Eq, Ord, Read, Show)
+
+_Include = Model.Name "hydra.rdf.shex.syntax.Include"
+
+-- | ShEx grammar production: IncludeSet ::= '&' ShapeExprLabel+
+newtype IncludeSet =
+  IncludeSet {
+    unIncludeSet :: [ShapeExprLabel]}
+  deriving (Eq, Ord, Read, Show)
+
+_IncludeSet = Model.Name "hydra.rdf.shex.syntax.IncludeSet"
+
+-- | ShEx grammar production: InlineShapeAnd ::= InlineShapeNot ('AND' InlineShapeNot)*
+data InlineShapeAnd =
+  InlineShapeAnd {
+    inlineShapeAndInlineShapeNot :: InlineShapeNot,
+    inlineShapeAndListOfSequence :: [InlineShapeNot]}
+  deriving (Eq, Ord, Read, Show)
+
+_InlineShapeAnd = Model.Name "hydra.rdf.shex.syntax.InlineShapeAnd"
+
+_InlineShapeAnd_InlineShapeNot = Model.Name "InlineShapeNot"
+
+_InlineShapeAnd_listOfSequence = Model.Name "listOfSequence"
+
+-- | A component of the ShEx InlineShapeAtom production
+data InlineShapeAtom =
+  InlineShapeAtomSeq InlineShapeAtomSequence |
+  InlineShapeAtomSeq2 InlineShapeAtomSequence2 |
+  InlineShapeAtomSequence3 ShapeExpression |
+  InlineShapeAtomPeriod
+  deriving (Eq, Ord, Read, Show)
+
+_InlineShapeAtom = Model.Name "hydra.rdf.shex.syntax.InlineShapeAtom"
+
+_InlineShapeAtom_seq = Model.Name "seq"
+
+_InlineShapeAtom_seq2 = Model.Name "seq2"
+
+_InlineShapeAtom_sequence3 = Model.Name "sequence3"
+
+_InlineShapeAtom_Period = Model.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 = Model.Name "hydra.rdf.shex.syntax.InlineShapeAtomSequence"
+
+_InlineShapeAtomSequence_NodeConstraint = Model.Name "NodeConstraint"
+
+_InlineShapeAtomSequence_InlineShapeOrRef = Model.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 = Model.Name "hydra.rdf.shex.syntax.InlineShapeAtomSequence2"
+
+_InlineShapeAtomSequence2_InlineShapeOrRef = Model.Name "InlineShapeOrRef"
+
+_InlineShapeAtomSequence2_NodeConstraint = Model.Name "NodeConstraint"
+
+-- | A component of the ShEx InlineShapeDefinition production
+data InlineShapeDefinition =
+  InlineShapeDefinition {
+    inlineShapeDefinitionListOfAlts :: [InlineShapeDefinitionListOfAltsElmt],
+    inlineShapeDefinitionTripleExpression :: (Maybe TripleExpression)}
+  deriving (Eq, Ord, Read, Show)
+
+_InlineShapeDefinition = Model.Name "hydra.rdf.shex.syntax.InlineShapeDefinition"
+
+_InlineShapeDefinition_listOfAlts = Model.Name "listOfAlts"
+
+_InlineShapeDefinition_TripleExpression = Model.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 = Model.Name "hydra.rdf.shex.syntax.InlineShapeDefinitionListOfAltsElmt"
+
+_InlineShapeDefinitionListOfAltsElmt_IncludeSet = Model.Name "IncludeSet"
+
+_InlineShapeDefinitionListOfAltsElmt_ExtraPropertySet = Model.Name "ExtraPropertySet"
+
+_InlineShapeDefinitionListOfAltsElmt_CLOSED = Model.Name "CLOSED"
+
+-- | ShEx grammar production: InlineShapeExpression ::= InlineShapeOr
+newtype InlineShapeExpression =
+  InlineShapeExpression {
+    unInlineShapeExpression :: InlineShapeOr}
+  deriving (Eq, Ord, Read, Show)
+
+_InlineShapeExpression = Model.Name "hydra.rdf.shex.syntax.InlineShapeExpression"
+
+-- | ShEx grammar production: InlineShapeNot ::= 'NOT'? InlineShapeAtom
+data InlineShapeNot =
+  InlineShapeNot {
+    inlineShapeNotNOT :: (Maybe ()),
+    inlineShapeNotInlineShapeAtom :: InlineShapeAtom}
+  deriving (Eq, Ord, Read, Show)
+
+_InlineShapeNot = Model.Name "hydra.rdf.shex.syntax.InlineShapeNot"
+
+_InlineShapeNot_NOT = Model.Name "NOT"
+
+_InlineShapeNot_InlineShapeAtom = Model.Name "InlineShapeAtom"
+
+-- | ShEx grammar production: InlineShapeOr ::= InlineShapeAnd ('OR' InlineShapeAnd)*
+data InlineShapeOr =
+  InlineShapeOr {
+    inlineShapeOrShapeAnd :: ShapeAnd,
+    inlineShapeOrListOfSequence :: [InlineShapeAnd]}
+  deriving (Eq, Ord, Read, Show)
+
+_InlineShapeOr = Model.Name "hydra.rdf.shex.syntax.InlineShapeOr"
+
+_InlineShapeOr_ShapeAnd = Model.Name "ShapeAnd"
+
+_InlineShapeOr_listOfSequence = Model.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 = Model.Name "hydra.rdf.shex.syntax.InlineShapeOrRef"
+
+_InlineShapeOrRef_InlineShapeDefinition = Model.Name "InlineShapeDefinition"
+
+_InlineShapeOrRef_AtpNameLn = Model.Name "AtpNameLn"
+
+_InlineShapeOrRef_AtpNameNs = Model.Name "AtpNameNs"
+
+_InlineShapeOrRef_sequence = Model.Name "sequence"
+
+-- | ShEx grammar production: InnerTripleExpr ::= MultiElementGroup | MultiElementOneOf
+data InnerTripleExpr =
+  InnerTripleExprMultiElementGroup MultiElementGroup |
+  InnerTripleExprMultiElementOneOf MultiElementOneOf
+  deriving (Eq, Ord, Read, Show)
+
+_InnerTripleExpr = Model.Name "hydra.rdf.shex.syntax.InnerTripleExpr"
+
+_InnerTripleExpr_MultiElementGroup = Model.Name "MultiElementGroup"
+
+_InnerTripleExpr_MultiElementOneOf = Model.Name "MultiElementOneOf"
+
+-- | A component of the ShEx Integer production
+newtype Integer_ =
+  Integer_ {
+    unInteger :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_Integer = Model.Name "hydra.rdf.shex.syntax.Integer"
+
+-- | ShEx grammar production: Iri ::= IriRef | PrefixedName
+data Iri =
+  IriIriRef IriRef |
+  IriPrefixedName PrefixedName
+  deriving (Eq, Ord, Read, Show)
+
+_Iri = Model.Name "hydra.rdf.shex.syntax.Iri"
+
+_Iri_IriRef = Model.Name "IriRef"
+
+_Iri_PrefixedName = Model.Name "PrefixedName"
+
+-- | A component of the ShEx IriRange production
+data IriRange =
+  IriRangeSeq IriRangeSequence |
+  IriRangeSequence2 [Exclusion]
+  deriving (Eq, Ord, Read, Show)
+
+_IriRange = Model.Name "hydra.rdf.shex.syntax.IriRange"
+
+_IriRange_seq = Model.Name "seq"
+
+_IriRange_sequence2 = Model.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 = Model.Name "hydra.rdf.shex.syntax.IriRangeSequence"
+
+_IriRangeSequence_Iri = Model.Name "Iri"
+
+_IriRangeSequence_Sequence = Model.Name "Sequence"
+
+-- | A component of the ShEx IriRef production
+newtype IriRef =
+  IriRef {
+    unIriRef :: [IriRefElmt]}
+  deriving (Eq, Ord, Read, Show)
+
+_IriRef = Model.Name "hydra.rdf.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 = Model.Name "hydra.rdf.shex.syntax.IriRefElmt"
+
+_IriRefElmt_regex = Model.Name "regex"
+
+_IriRefElmt_Uchar = Model.Name "Uchar"
+
+-- | A component of the ShEx LangTag production
+newtype LangTag =
+  LangTag {
+    unLangTag :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_LangTag = Model.Name "hydra.rdf.shex.syntax.LangTag"
+
+-- | ShEx grammar production: Literal ::= RdfLiteral | NumericLiteral | BooleanLiteral
+data Literal =
+  LiteralRdfLiteral RdfLiteral |
+  LiteralNumericLiteral NumericLiteral |
+  LiteralBooleanLiteral BooleanLiteral
+  deriving (Eq, Ord, Read, Show)
+
+_Literal = Model.Name "hydra.rdf.shex.syntax.Literal"
+
+_Literal_RdfLiteral = Model.Name "RdfLiteral"
+
+_Literal_NumericLiteral = Model.Name "NumericLiteral"
+
+_Literal_BooleanLiteral = Model.Name "BooleanLiteral"
+
+-- | ShEx grammar production: MultiElementGroup ::= UnaryTripleExpr (';' UnaryTripleExpr)+ ';'?
+data MultiElementGroup =
+  MultiElementGroup {
+    multiElementGroupUnaryTripleExpr :: UnaryTripleExpr,
+    multiElementGroupListOfSequence :: [UnaryTripleExpr],
+    multiElementGroupSemi :: (Maybe ())}
+  deriving (Eq, Ord, Read, Show)
+
+_MultiElementGroup = Model.Name "hydra.rdf.shex.syntax.MultiElementGroup"
+
+_MultiElementGroup_UnaryTripleExpr = Model.Name "UnaryTripleExpr"
+
+_MultiElementGroup_listOfSequence = Model.Name "listOfSequence"
+
+_MultiElementGroup_Semi = Model.Name "Semi"
+
+-- | ShEx grammar production: MultiElementOneOf ::= GroupTripleExpr ('|' GroupTripleExpr)+
+data MultiElementOneOf =
+  MultiElementOneOf {
+    multiElementOneOfGroupTripleExpr :: GroupTripleExpr,
+    multiElementOneOfListOfSequence :: [GroupTripleExpr]}
+  deriving (Eq, Ord, Read, Show)
+
+_MultiElementOneOf = Model.Name "hydra.rdf.shex.syntax.MultiElementOneOf"
+
+_MultiElementOneOf_GroupTripleExpr = Model.Name "GroupTripleExpr"
+
+_MultiElementOneOf_listOfSequence = Model.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 = Model.Name "hydra.rdf.shex.syntax.NodeConstraint"
+
+_NodeConstraint_sequence = Model.Name "sequence"
+
+_NodeConstraint_seq2 = Model.Name "seq2"
+
+_NodeConstraint_seq3 = Model.Name "seq3"
+
+_NodeConstraint_seq4 = Model.Name "seq4"
+
+_NodeConstraint_seq5 = Model.Name "seq5"
+
+_NodeConstraint_listOfXsFacet = Model.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 = Model.Name "hydra.rdf.shex.syntax.NodeConstraintSequence2"
+
+_NodeConstraintSequence2_NonLiteralKind = Model.Name "NonLiteralKind"
+
+_NodeConstraintSequence2_listOfStringFacet = Model.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 = Model.Name "hydra.rdf.shex.syntax.NodeConstraintSequence3"
+
+_NodeConstraintSequence3_Datatype = Model.Name "Datatype"
+
+_NodeConstraintSequence3_listOfXsFacet = Model.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 = Model.Name "hydra.rdf.shex.syntax.NodeConstraintSequence4"
+
+_NodeConstraintSequence4_ValueSet = Model.Name "ValueSet"
+
+_NodeConstraintSequence4_listOfXsFacet = Model.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 = Model.Name "hydra.rdf.shex.syntax.NodeConstraintSequence5"
+
+_NodeConstraintSequence5_ValueSet = Model.Name "ValueSet"
+
+_NodeConstraintSequence5_listOfXsFacet = Model.Name "listOfXsFacet"
+
+-- | ShEx grammar production: NonLiteralKind ::= 'IRI' | 'BNODE' | 'NONLITERAL'
+data NonLiteralKind =
+  NonLiteralKindIRI |
+  NonLiteralKindBNODE |
+  NonLiteralKindNONLITERAL
+  deriving (Eq, Ord, Read, Show)
+
+_NonLiteralKind = Model.Name "hydra.rdf.shex.syntax.NonLiteralKind"
+
+_NonLiteralKind_IRI = Model.Name "IRI"
+
+_NonLiteralKind_BNODE = Model.Name "BNODE"
+
+_NonLiteralKind_NONLITERAL = Model.Name "NONLITERAL"
+
+-- | ShEx grammar production: NotStartAction ::= start | shapeExprDecl
+data NotStartAction =
+  NotStartActionStart ShapeExpression |
+  NotStartActionDeclaration NotStartActionShapeExprDecl
+  deriving (Eq, Ord, Read, Show)
+
+_NotStartAction = Model.Name "hydra.rdf.shex.syntax.NotStartAction"
+
+_NotStartAction_start = Model.Name "start"
+
+_NotStartAction_declaration = Model.Name "declaration"
+
+-- | A component of the ShEx NotStartActionShapeExprDecl production
+data NotStartActionShapeExprDecl =
+  NotStartActionShapeExprDecl {
+    notStartActionShapeExprDeclShapeExprLabel :: ShapeExprLabel,
+    notStartActionShapeExprDeclAlts :: NotStartActionShapeExprDeclAlts}
+  deriving (Eq, Ord, Read, Show)
+
+_NotStartActionShapeExprDecl = Model.Name "hydra.rdf.shex.syntax.NotStartActionShapeExprDecl"
+
+_NotStartActionShapeExprDecl_ShapeExprLabel = Model.Name "ShapeExprLabel"
+
+_NotStartActionShapeExprDecl_alts = Model.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 = Model.Name "hydra.rdf.shex.syntax.NotStartActionShapeExprDeclAlts"
+
+_NotStartActionShapeExprDeclAlts_ShapeExpression = Model.Name "ShapeExpression"
+
+_NotStartActionShapeExprDeclAlts_EXTERNAL = Model.Name "EXTERNAL"
+
+-- | A component of the ShEx NumericFacet production
+data NumericFacet =
+  NumericFacetSeq NumericFacetSequence |
+  NumericFacetSeq2 NumericFacetSequence2
+  deriving (Eq, Ord, Read, Show)
+
+_NumericFacet = Model.Name "hydra.rdf.shex.syntax.NumericFacet"
+
+_NumericFacet_seq = Model.Name "seq"
+
+_NumericFacet_seq2 = Model.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 = Model.Name "hydra.rdf.shex.syntax.NumericFacetSequence"
+
+_NumericFacetSequence_NumericRange = Model.Name "NumericRange"
+
+_NumericFacetSequence_NumericLiteral = Model.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 = Model.Name "hydra.rdf.shex.syntax.NumericFacetSequence2"
+
+_NumericFacetSequence2_NumericLength = Model.Name "NumericLength"
+
+_NumericFacetSequence2_Integer = Model.Name "Integer"
+
+-- | A component of the ShEx NumericLength production
+data NumericLength =
+  NumericLengthTOTALDIGITS |
+  NumericLengthFRACTIONDIGITS
+  deriving (Eq, Ord, Read, Show)
+
+_NumericLength = Model.Name "hydra.rdf.shex.syntax.NumericLength"
+
+_NumericLength_TOTALDIGITS = Model.Name "TOTALDIGITS"
+
+_NumericLength_FRACTIONDIGITS = Model.Name "FRACTIONDIGITS"
+
+-- | ShEx grammar production: NumericLiteral ::= Integer | Decimal | Double
+data NumericLiteral =
+  NumericLiteralInteger Integer_ |
+  NumericLiteralDecimal Decimal |
+  NumericLiteralDouble Double_
+  deriving (Eq, Ord, Read, Show)
+
+_NumericLiteral = Model.Name "hydra.rdf.shex.syntax.NumericLiteral"
+
+_NumericLiteral_Integer = Model.Name "Integer"
+
+_NumericLiteral_Decimal = Model.Name "Decimal"
+
+_NumericLiteral_Double = Model.Name "Double"
+
+-- | A component of the ShEx NumericRange production
+data NumericRange =
+  NumericRangeMININCLUSIVE |
+  NumericRangeMINEXCLUSIVE |
+  NumericRangeMAXINCLUSIVE |
+  NumericRangeMAXEXCLUSIVE
+  deriving (Eq, Ord, Read, Show)
+
+_NumericRange = Model.Name "hydra.rdf.shex.syntax.NumericRange"
+
+_NumericRange_MININCLUSIVE = Model.Name "MININCLUSIVE"
+
+_NumericRange_MINEXCLUSIVE = Model.Name "MINEXCLUSIVE"
+
+_NumericRange_MAXINCLUSIVE = Model.Name "MAXINCLUSIVE"
+
+_NumericRange_MAXEXCLUSIVE = Model.Name "MAXEXCLUSIVE"
+
+-- | ShEx grammar production: OneOfTripleExpr ::= GroupTripleExpr | MultiElementOneOf
+data OneOfTripleExpr =
+  OneOfTripleExprGroupTripleExpr GroupTripleExpr |
+  OneOfTripleExprMultiElementOneOf MultiElementOneOf
+  deriving (Eq, Ord, Read, Show)
+
+_OneOfTripleExpr = Model.Name "hydra.rdf.shex.syntax.OneOfTripleExpr"
+
+_OneOfTripleExpr_GroupTripleExpr = Model.Name "GroupTripleExpr"
+
+_OneOfTripleExpr_MultiElementOneOf = Model.Name "MultiElementOneOf"
+
+-- | ShEx grammar production: Percent ::= '%' Hex Hex
+data Percent =
+  Percent {
+    percentHex :: Hex,
+    percentHex2 :: Hex}
+  deriving (Eq, Ord, Read, Show)
+
+_Percent = Model.Name "hydra.rdf.shex.syntax.Percent"
+
+_Percent_Hex = Model.Name "Hex"
+
+_Percent_Hex2 = Model.Name "Hex2"
+
+-- | ShEx grammar production: Plx ::= Percent | PnLocalEsc
+data Plx =
+  PlxPercent Percent |
+  PlxPnLocalEsc PnLocalEsc
+  deriving (Eq, Ord, Read, Show)
+
+_Plx = Model.Name "hydra.rdf.shex.syntax.Plx"
+
+_Plx_Percent = Model.Name "Percent"
+
+_Plx_PnLocalEsc = Model.Name "PnLocalEsc"
+
+-- | A component of the ShEx PnChars production
+data PnChars =
+  PnCharsPnCharsU PnCharsU |
+  PnCharsMinus |
+  PnCharsRegex String
+  deriving (Eq, Ord, Read, Show)
+
+_PnChars = Model.Name "hydra.rdf.shex.syntax.PnChars"
+
+_PnChars_PnCharsU = Model.Name "PnCharsU"
+
+_PnChars_Minus = Model.Name "Minus"
+
+_PnChars_regex = Model.Name "regex"
+
+-- | A component of the ShEx PnCharsBase production
+data PnCharsBase =
+  PnCharsBaseRegex String |
+  PnCharsBaseRegex2 String
+  deriving (Eq, Ord, Read, Show)
+
+_PnCharsBase = Model.Name "hydra.rdf.shex.syntax.PnCharsBase"
+
+_PnCharsBase_regex = Model.Name "regex"
+
+_PnCharsBase_regex2 = Model.Name "regex2"
+
+-- | ShEx grammar production: PnCharsU ::= PnCharsBase | '_'
+data PnCharsU =
+  PnCharsUPnCharsBase PnCharsBase |
+  PnCharsULowbar
+  deriving (Eq, Ord, Read, Show)
+
+_PnCharsU = Model.Name "hydra.rdf.shex.syntax.PnCharsU"
+
+_PnCharsU_PnCharsBase = Model.Name "PnCharsBase"
+
+_PnCharsU_Lowbar = Model.Name "Lowbar"
+
+-- | A component of the ShEx PnLocal production
+data PnLocal =
+  PnLocal {
+    pnLocalAlts :: PnLocalAlts,
+    pnLocalSequence :: (Maybe PnLocalSequenceOption)}
+  deriving (Eq, Ord, Read, Show)
+
+_PnLocal = Model.Name "hydra.rdf.shex.syntax.PnLocal"
+
+_PnLocal_alts = Model.Name "alts"
+
+_PnLocal_Sequence = Model.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 = Model.Name "hydra.rdf.shex.syntax.PnLocalAlts"
+
+_PnLocalAlts_PnCharsU = Model.Name "PnCharsU"
+
+_PnLocalAlts_Colon = Model.Name "Colon"
+
+_PnLocalAlts_regex = Model.Name "regex"
+
+_PnLocalAlts_Plx = Model.Name "Plx"
+
+-- | A component of the ShEx PnLocalEsc production
+newtype PnLocalEsc =
+  PnLocalEsc {
+    unPnLocalEsc :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_PnLocalEsc = Model.Name "hydra.rdf.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 = Model.Name "hydra.rdf.shex.syntax.PnLocalSequenceOption"
+
+_PnLocalSequenceOption_listOfAlts = Model.Name "listOfAlts"
+
+_PnLocalSequenceOption_alts = Model.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 = Model.Name "hydra.rdf.shex.syntax.PnLocalSequenceOptionAlts"
+
+_PnLocalSequenceOptionAlts_PnChars = Model.Name "PnChars"
+
+_PnLocalSequenceOptionAlts_Colon = Model.Name "Colon"
+
+_PnLocalSequenceOptionAlts_Plx = Model.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 = Model.Name "hydra.rdf.shex.syntax.PnLocalSequenceOptionListOfAltsElmt"
+
+_PnLocalSequenceOptionListOfAltsElmt_PnChars = Model.Name "PnChars"
+
+_PnLocalSequenceOptionListOfAltsElmt_Period = Model.Name "Period"
+
+_PnLocalSequenceOptionListOfAltsElmt_Colon = Model.Name "Colon"
+
+_PnLocalSequenceOptionListOfAltsElmt_Plx = Model.Name "Plx"
+
+-- | A component of the ShEx PnPrefix production
+data PnPrefix =
+  PnPrefix {
+    pnPrefixPnCharsBase :: PnCharsBase,
+    pnPrefixSequence :: (Maybe PnPrefixSequenceOption)}
+  deriving (Eq, Ord, Read, Show)
+
+_PnPrefix = Model.Name "hydra.rdf.shex.syntax.PnPrefix"
+
+_PnPrefix_PnCharsBase = Model.Name "PnCharsBase"
+
+_PnPrefix_Sequence = Model.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 = Model.Name "hydra.rdf.shex.syntax.PnPrefixSequenceOption"
+
+_PnPrefixSequenceOption_alts = Model.Name "alts"
+
+_PnPrefixSequenceOption_PnChars = Model.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 = Model.Name "hydra.rdf.shex.syntax.PnPrefixSequenceOptionAlts"
+
+_PnPrefixSequenceOptionAlts_PnChars = Model.Name "PnChars"
+
+_PnPrefixSequenceOptionAlts_Period = Model.Name "Period"
+
+-- | ShEx grammar production: PnameLn ::= PnameNs PnLocal
+data PnameLn =
+  PnameLn {
+    pnameLnPnameNs :: PnameNs,
+    pnameLnPnLocal :: PnLocal}
+  deriving (Eq, Ord, Read, Show)
+
+_PnameLn = Model.Name "hydra.rdf.shex.syntax.PnameLn"
+
+_PnameLn_PnameNs = Model.Name "PnameNs"
+
+_PnameLn_PnLocal = Model.Name "PnLocal"
+
+-- | ShEx grammar production: PnameNs ::= PnPrefix? ':'
+newtype PnameNs =
+  PnameNs {
+    unPnameNs :: (Maybe PnPrefix)}
+  deriving (Eq, Ord, Read, Show)
+
+_PnameNs = Model.Name "hydra.rdf.shex.syntax.PnameNs"
+
+-- | ShEx grammar production: Predicate ::= Iri | RdfType
+data Predicate =
+  PredicateIri Iri |
+  PredicateRdfType RdfType
+  deriving (Eq, Ord, Read, Show)
+
+_Predicate = Model.Name "hydra.rdf.shex.syntax.Predicate"
+
+_Predicate_Iri = Model.Name "Iri"
+
+_Predicate_RdfType = Model.Name "RdfType"
+
+-- | ShEx grammar production: PrefixDecl ::= 'PREFIX' PnameNs IriRef
+data PrefixDecl =
+  PrefixDecl {
+    prefixDeclPnameNs :: PnameNs,
+    prefixDeclIriRef :: IriRef}
+  deriving (Eq, Ord, Read, Show)
+
+_PrefixDecl = Model.Name "hydra.rdf.shex.syntax.PrefixDecl"
+
+_PrefixDecl_PnameNs = Model.Name "PnameNs"
+
+_PrefixDecl_IriRef = Model.Name "IriRef"
+
+-- | ShEx grammar production: PrefixedName ::= PnameLn | PnameNs
+data PrefixedName =
+  PrefixedNamePnameLn PnameLn |
+  PrefixedNamePnameNs PnameNs
+  deriving (Eq, Ord, Read, Show)
+
+_PrefixedName = Model.Name "hydra.rdf.shex.syntax.PrefixedName"
+
+_PrefixedName_PnameLn = Model.Name "PnameLn"
+
+_PrefixedName_PnameNs = Model.Name "PnameNs"
+
+-- | ShEx grammar production: RdfLiteral ::= String (LangTag | '^^' Datatype)?
+data RdfLiteral =
+  RdfLiteral {
+    rdfLiteralString :: String_,
+    rdfLiteralAlts :: (Maybe RdfLiteralAltsOption)}
+  deriving (Eq, Ord, Read, Show)
+
+_RdfLiteral = Model.Name "hydra.rdf.shex.syntax.RdfLiteral"
+
+_RdfLiteral_String = Model.Name "String"
+
+_RdfLiteral_Alts = Model.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 = Model.Name "hydra.rdf.shex.syntax.RdfLiteralAltsOption"
+
+_RdfLiteralAltsOption_LangTag = Model.Name "LangTag"
+
+_RdfLiteralAltsOption_sequence = Model.Name "sequence"
+
+-- | ShEx grammar production: RdfType ::= 'a'
+newtype RdfType =
+  RdfType {
+    unRdfType :: ()}
+  deriving (Eq, Ord, Read, Show)
+
+_RdfType = Model.Name "hydra.rdf.shex.syntax.RdfType"
+
+-- | A component of the ShEx Regexp production
+data Regexp =
+  Regexp {
+    regexpListOfAlts :: [RegexpListOfAltsElmt],
+    regexpListOfRegex :: [String]}
+  deriving (Eq, Ord, Read, Show)
+
+_Regexp = Model.Name "hydra.rdf.shex.syntax.Regexp"
+
+_Regexp_listOfAlts = Model.Name "listOfAlts"
+
+_Regexp_listOfRegex = Model.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 = Model.Name "hydra.rdf.shex.syntax.RegexpListOfAltsElmt"
+
+_RegexpListOfAltsElmt_regex = Model.Name "regex"
+
+_RegexpListOfAltsElmt_sequence = Model.Name "sequence"
+
+_RegexpListOfAltsElmt_Uchar = Model.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 = Model.Name "hydra.rdf.shex.syntax.RepeatRange"
+
+_RepeatRange_Integer = Model.Name "Integer"
+
+_RepeatRange_Sequence = Model.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 = Model.Name "hydra.rdf.shex.syntax.RepeatRangeSequenceOptionOptionOption"
+
+_RepeatRangeSequenceOptionOptionOption_Integer = Model.Name "Integer"
+
+_RepeatRangeSequenceOptionOptionOption_Ast = Model.Name "Ast"
+
+-- | ShEx grammar production: SemanticActions ::= CodeDecl*
+newtype SemanticActions =
+  SemanticActions {
+    unSemanticActions :: [CodeDecl]}
+  deriving (Eq, Ord, Read, Show)
+
+_SemanticActions = Model.Name "hydra.rdf.shex.syntax.SemanticActions"
+
+-- | ShEx grammar production: SenseFlags ::= '^'
+newtype SenseFlags =
+  SenseFlags {
+    unSenseFlags :: ()}
+  deriving (Eq, Ord, Read, Show)
+
+_SenseFlags = Model.Name "hydra.rdf.shex.syntax.SenseFlags"
+
+-- | ShEx grammar production: ShapeAnd ::= ShapeNot ('AND' ShapeNot)*
+data ShapeAnd =
+  ShapeAnd {
+    shapeAndShapeNot :: ShapeNot,
+    shapeAndListOfSequence :: [ShapeNot]}
+  deriving (Eq, Ord, Read, Show)
+
+_ShapeAnd = Model.Name "hydra.rdf.shex.syntax.ShapeAnd"
+
+_ShapeAnd_ShapeNot = Model.Name "ShapeNot"
+
+_ShapeAnd_listOfSequence = Model.Name "listOfSequence"
+
+-- | A component of the ShEx ShapeAtom production
+data ShapeAtom =
+  ShapeAtomSeq ShapeAtomSequence |
+  ShapeAtomShapeOrRef ShapeOrRef |
+  ShapeAtomSequence2 ShapeExpression |
+  ShapeAtomPeriod
+  deriving (Eq, Ord, Read, Show)
+
+_ShapeAtom = Model.Name "hydra.rdf.shex.syntax.ShapeAtom"
+
+_ShapeAtom_seq = Model.Name "seq"
+
+_ShapeAtom_ShapeOrRef = Model.Name "ShapeOrRef"
+
+_ShapeAtom_sequence2 = Model.Name "sequence2"
+
+_ShapeAtom_Period = Model.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 = Model.Name "hydra.rdf.shex.syntax.ShapeAtomSequence"
+
+_ShapeAtomSequence_NodeConstraint = Model.Name "NodeConstraint"
+
+_ShapeAtomSequence_ShapeOrRef = Model.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 = Model.Name "hydra.rdf.shex.syntax.ShapeDefinition"
+
+_ShapeDefinition_listOfAlts = Model.Name "listOfAlts"
+
+_ShapeDefinition_TripleExpression = Model.Name "TripleExpression"
+
+_ShapeDefinition_listOfAnnotation = Model.Name "listOfAnnotation"
+
+_ShapeDefinition_SemanticActions = Model.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 = Model.Name "hydra.rdf.shex.syntax.ShapeDefinitionListOfAltsElmt"
+
+_ShapeDefinitionListOfAltsElmt_IncludeSet = Model.Name "IncludeSet"
+
+_ShapeDefinitionListOfAltsElmt_ExtraPropertySet = Model.Name "ExtraPropertySet"
+
+_ShapeDefinitionListOfAltsElmt_CLOSED = Model.Name "CLOSED"
+
+-- | ShEx grammar production: ShapeExprLabel ::= Iri | BlankNode
+data ShapeExprLabel =
+  ShapeExprLabelIri Iri |
+  ShapeExprLabelBlankNode BlankNode
+  deriving (Eq, Ord, Read, Show)
+
+_ShapeExprLabel = Model.Name "hydra.rdf.shex.syntax.ShapeExprLabel"
+
+_ShapeExprLabel_Iri = Model.Name "Iri"
+
+_ShapeExprLabel_BlankNode = Model.Name "BlankNode"
+
+-- | ShEx grammar production: ShapeExpression ::= ShapeOr
+newtype ShapeExpression =
+  ShapeExpression {
+    unShapeExpression :: ShapeOr}
+  deriving (Eq, Ord, Read, Show)
+
+_ShapeExpression = Model.Name "hydra.rdf.shex.syntax.ShapeExpression"
+
+-- | ShEx grammar production: ShapeNot ::= 'NOT'? ShapeAtom
+data ShapeNot =
+  ShapeNot {
+    shapeNotNOT :: (Maybe ()),
+    shapeNotShapeAtom :: ShapeAtom}
+  deriving (Eq, Ord, Read, Show)
+
+_ShapeNot = Model.Name "hydra.rdf.shex.syntax.ShapeNot"
+
+_ShapeNot_NOT = Model.Name "NOT"
+
+_ShapeNot_ShapeAtom = Model.Name "ShapeAtom"
+
+-- | ShEx grammar production: ShapeOr ::= ShapeAnd ('OR' ShapeAnd)*
+data ShapeOr =
+  ShapeOr {
+    shapeOrShapeAnd :: ShapeAnd,
+    shapeOrListOfSequence :: [ShapeAnd]}
+  deriving (Eq, Ord, Read, Show)
+
+_ShapeOr = Model.Name "hydra.rdf.shex.syntax.ShapeOr"
+
+_ShapeOr_ShapeAnd = Model.Name "ShapeAnd"
+
+_ShapeOr_listOfSequence = Model.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 = Model.Name "hydra.rdf.shex.syntax.ShapeOrRef"
+
+_ShapeOrRef_ShapeDefinition = Model.Name "ShapeDefinition"
+
+_ShapeOrRef_AtpNameLn = Model.Name "AtpNameLn"
+
+_ShapeOrRef_AtpNameNs = Model.Name "AtpNameNs"
+
+_ShapeOrRef_sequence = Model.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 = Model.Name "hydra.rdf.shex.syntax.ShexDoc"
+
+_ShexDoc_listOfDirective = Model.Name "listOfDirective"
+
+_ShexDoc_Sequence = Model.Name "Sequence"
+
+_ShexDoc_PrefixDecl = Model.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 = Model.Name "hydra.rdf.shex.syntax.ShexDocSequenceOption"
+
+_ShexDocSequenceOption_alts = Model.Name "alts"
+
+_ShexDocSequenceOption_listOfStatement = Model.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 = Model.Name "hydra.rdf.shex.syntax.ShexDocSequenceOptionAlts"
+
+_ShexDocSequenceOptionAlts_NotStartAction = Model.Name "NotStartAction"
+
+_ShexDocSequenceOptionAlts_StartActions = Model.Name "StartActions"
+
+-- | ShEx grammar production: SingleElementGroup ::= UnaryTripleExpr ';'?
+data SingleElementGroup =
+  SingleElementGroup {
+    singleElementGroupUnaryTripleExpr :: UnaryTripleExpr,
+    singleElementGroupSemi :: (Maybe ())}
+  deriving (Eq, Ord, Read, Show)
+
+_SingleElementGroup = Model.Name "hydra.rdf.shex.syntax.SingleElementGroup"
+
+_SingleElementGroup_UnaryTripleExpr = Model.Name "UnaryTripleExpr"
+
+_SingleElementGroup_Semi = Model.Name "Semi"
+
+-- | ShEx grammar production: StartActions ::= CodeDecl+
+newtype StartActions =
+  StartActions {
+    unStartActions :: [CodeDecl]}
+  deriving (Eq, Ord, Read, Show)
+
+_StartActions = Model.Name "hydra.rdf.shex.syntax.StartActions"
+
+-- | ShEx grammar production: Statement ::= Directive | NotStartAction
+data Statement =
+  StatementDirective Directive |
+  StatementNotStartAction NotStartAction
+  deriving (Eq, Ord, Read, Show)
+
+_Statement = Model.Name "hydra.rdf.shex.syntax.Statement"
+
+_Statement_Directive = Model.Name "Directive"
+
+_Statement_NotStartAction = Model.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 = Model.Name "hydra.rdf.shex.syntax.String"
+
+_String_StringLiteral1 = Model.Name "StringLiteral1"
+
+_String_StringLiteralLong1 = Model.Name "StringLiteralLong1"
+
+_String_StringLiteral2 = Model.Name "StringLiteral2"
+
+_String_StringLiteralLong2 = Model.Name "StringLiteralLong2"
+
+-- | ShEx grammar production: StringFacet ::= StringLength Integer | Regexp
+data StringFacet =
+  StringFacetSeq StringFacetSequence |
+  StringFacetRegexp Regexp
+  deriving (Eq, Ord, Read, Show)
+
+_StringFacet = Model.Name "hydra.rdf.shex.syntax.StringFacet"
+
+_StringFacet_seq = Model.Name "seq"
+
+_StringFacet_Regexp = Model.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 = Model.Name "hydra.rdf.shex.syntax.StringFacetSequence"
+
+_StringFacetSequence_StringLength = Model.Name "StringLength"
+
+_StringFacetSequence_Integer = Model.Name "Integer"
+
+-- | ShEx grammar production: StringLength ::= 'LENGTH' | 'MINLENGTH' | 'MAXLENGTH'
+data StringLength =
+  StringLengthLENGTH |
+  StringLengthMINLENGTH |
+  StringLengthMAXLENGTH
+  deriving (Eq, Ord, Read, Show)
+
+_StringLength = Model.Name "hydra.rdf.shex.syntax.StringLength"
+
+_StringLength_LENGTH = Model.Name "LENGTH"
+
+_StringLength_MINLENGTH = Model.Name "MINLENGTH"
+
+_StringLength_MAXLENGTH = Model.Name "MAXLENGTH"
+
+-- | A component of the ShEx StringLiteral1 production
+newtype StringLiteral1 =
+  StringLiteral1 {
+    unStringLiteral1 :: [StringLiteral1Elmt]}
+  deriving (Eq, Ord, Read, Show)
+
+_StringLiteral1 = Model.Name "hydra.rdf.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 = Model.Name "hydra.rdf.shex.syntax.StringLiteral1Elmt"
+
+_StringLiteral1Elmt_regex = Model.Name "regex"
+
+_StringLiteral1Elmt_Echar = Model.Name "Echar"
+
+_StringLiteral1Elmt_Uchar = Model.Name "Uchar"
+
+-- | A component of the ShEx StringLiteral2 production
+newtype StringLiteral2 =
+  StringLiteral2 {
+    unStringLiteral2 :: [StringLiteral2Elmt]}
+  deriving (Eq, Ord, Read, Show)
+
+_StringLiteral2 = Model.Name "hydra.rdf.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 = Model.Name "hydra.rdf.shex.syntax.StringLiteral2Elmt"
+
+_StringLiteral2Elmt_regex = Model.Name "regex"
+
+_StringLiteral2Elmt_Echar = Model.Name "Echar"
+
+_StringLiteral2Elmt_Uchar = Model.Name "Uchar"
+
+-- | A component of the ShEx StringLiteralLong1 production
+newtype StringLiteralLong1 =
+  StringLiteralLong1 {
+    unStringLiteralLong1 :: [StringLiteralLong1Elmt]}
+  deriving (Eq, Ord, Read, Show)
+
+_StringLiteralLong1 = Model.Name "hydra.rdf.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 = Model.Name "hydra.rdf.shex.syntax.StringLiteralLong1Elmt"
+
+_StringLiteralLong1Elmt_seq = Model.Name "seq"
+
+_StringLiteralLong1Elmt_Echar = Model.Name "Echar"
+
+_StringLiteralLong1Elmt_Uchar = Model.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 = Model.Name "hydra.rdf.shex.syntax.StringLiteralLong1ElmtSequence"
+
+_StringLiteralLong1ElmtSequence_Alts = Model.Name "Alts"
+
+_StringLiteralLong1ElmtSequence_regex = Model.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 = Model.Name "hydra.rdf.shex.syntax.StringLiteralLong1ElmtSequenceAltsOption"
+
+_StringLiteralLong1ElmtSequenceAltsOption_Apos = Model.Name "Apos"
+
+_StringLiteralLong1ElmtSequenceAltsOption_seq = Model.Name "seq"
+
+-- | A synthetic Hydra type representing a sequence within an optional alternative of an element of the ShEx StringLiteralLong1 production
+type StringLiteralLong1ElmtSequenceAltsOptionSequence = ()
+
+_StringLiteralLong1ElmtSequenceAltsOptionSequence =
+    Model.Name "hydra.rdf.shex.syntax.StringLiteralLong1ElmtSequenceAltsOptionSequence"
+
+-- | A component of the ShEx StringLiteralLong2 production
+newtype StringLiteralLong2 =
+  StringLiteralLong2 {
+    unStringLiteralLong2 :: [StringLiteralLong2Elmt]}
+  deriving (Eq, Ord, Read, Show)
+
+_StringLiteralLong2 = Model.Name "hydra.rdf.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 = Model.Name "hydra.rdf.shex.syntax.StringLiteralLong2Elmt"
+
+_StringLiteralLong2Elmt_seq = Model.Name "seq"
+
+_StringLiteralLong2Elmt_Echar = Model.Name "Echar"
+
+_StringLiteralLong2Elmt_Uchar = Model.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 = Model.Name "hydra.rdf.shex.syntax.StringLiteralLong2ElmtSequence"
+
+_StringLiteralLong2ElmtSequence_Alts = Model.Name "Alts"
+
+_StringLiteralLong2ElmtSequence_regex = Model.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 = Model.Name "hydra.rdf.shex.syntax.StringLiteralLong2ElmtSequenceAltsOption"
+
+_StringLiteralLong2ElmtSequenceAltsOption_Quot = Model.Name "Quot"
+
+_StringLiteralLong2ElmtSequenceAltsOption_seq = Model.Name "seq"
+
+-- | A synthetic Hydra type representing a sequence within an optional alternative of an element of the ShEx StringLiteralLong2 production
+type StringLiteralLong2ElmtSequenceAltsOptionSequence = ()
+
+_StringLiteralLong2ElmtSequenceAltsOptionSequence =
+    Model.Name "hydra.rdf.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 = Model.Name "hydra.rdf.shex.syntax.TripleConstraint"
+
+_TripleConstraint_SenseFlags = Model.Name "SenseFlags"
+
+_TripleConstraint_Predicate = Model.Name "Predicate"
+
+_TripleConstraint_InlineShapeExpression = Model.Name "InlineShapeExpression"
+
+_TripleConstraint_Cardinality = Model.Name "Cardinality"
+
+_TripleConstraint_listOfAnnotation = Model.Name "listOfAnnotation"
+
+_TripleConstraint_SemanticActions = Model.Name "SemanticActions"
+
+-- | ShEx grammar production: TripleExprLabel ::= Iri | BlankNode
+data TripleExprLabel =
+  TripleExprLabelIri Iri |
+  TripleExprLabelBlankNode BlankNode
+  deriving (Eq, Ord, Read, Show)
+
+_TripleExprLabel = Model.Name "hydra.rdf.shex.syntax.TripleExprLabel"
+
+_TripleExprLabel_Iri = Model.Name "Iri"
+
+_TripleExprLabel_BlankNode = Model.Name "BlankNode"
+
+-- | ShEx grammar production: TripleExpression ::= OneOfTripleExpr
+newtype TripleExpression =
+  TripleExpression {
+    unTripleExpression :: OneOfTripleExpr}
+  deriving (Eq, Ord, Read, Show)
+
+_TripleExpression = Model.Name "hydra.rdf.shex.syntax.TripleExpression"
+
+-- | A component of the ShEx Uchar production
+data Uchar =
+  UcharSeq UcharSequence |
+  UcharSeq2 UcharSequence2
+  deriving (Eq, Ord, Read, Show)
+
+_Uchar = Model.Name "hydra.rdf.shex.syntax.Uchar"
+
+_Uchar_seq = Model.Name "seq"
+
+_Uchar_seq2 = Model.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 = Model.Name "hydra.rdf.shex.syntax.UcharSequence"
+
+_UcharSequence_Hex = Model.Name "Hex"
+
+_UcharSequence_Hex2 = Model.Name "Hex2"
+
+_UcharSequence_Hex3 = Model.Name "Hex3"
+
+_UcharSequence_Hex4 = Model.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 = Model.Name "hydra.rdf.shex.syntax.UcharSequence2"
+
+_UcharSequence2_Hex = Model.Name "Hex"
+
+_UcharSequence2_Hex2 = Model.Name "Hex2"
+
+_UcharSequence2_Hex3 = Model.Name "Hex3"
+
+_UcharSequence2_Hex4 = Model.Name "Hex4"
+
+_UcharSequence2_Hex5 = Model.Name "Hex5"
+
+_UcharSequence2_Hex6 = Model.Name "Hex6"
+
+_UcharSequence2_Hex7 = Model.Name "Hex7"
+
+_UcharSequence2_Hex8 = Model.Name "Hex8"
+
+-- | A component of the ShEx UnaryTripleExpr production
+data UnaryTripleExpr =
+  UnaryTripleExprSeq UnaryTripleExprSequence |
+  UnaryTripleExprInclude Include
+  deriving (Eq, Ord, Read, Show)
+
+_UnaryTripleExpr = Model.Name "hydra.rdf.shex.syntax.UnaryTripleExpr"
+
+_UnaryTripleExpr_seq = Model.Name "seq"
+
+_UnaryTripleExpr_Include = Model.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 = Model.Name "hydra.rdf.shex.syntax.UnaryTripleExprSequence"
+
+_UnaryTripleExprSequence_Sequence = Model.Name "Sequence"
+
+_UnaryTripleExprSequence_alts = Model.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 = Model.Name "hydra.rdf.shex.syntax.UnaryTripleExprSequenceAlts"
+
+_UnaryTripleExprSequenceAlts_TripleConstraint = Model.Name "TripleConstraint"
+
+_UnaryTripleExprSequenceAlts_BracketedTripleExpr = Model.Name "BracketedTripleExpr"
+
+-- | ShEx grammar production: ValueSet ::= '[' ValueSetValue* ']'
+newtype ValueSet =
+  ValueSet {
+    unValueSet :: [ValueSetValue]}
+  deriving (Eq, Ord, Read, Show)
+
+_ValueSet = Model.Name "hydra.rdf.shex.syntax.ValueSet"
+
+-- | ShEx grammar production: ValueSetValue ::= IriRange | Literal
+data ValueSetValue =
+  ValueSetValueIriRange IriRange |
+  ValueSetValueLiteral Literal
+  deriving (Eq, Ord, Read, Show)
+
+_ValueSetValue = Model.Name "hydra.rdf.shex.syntax.ValueSetValue"
+
+_ValueSetValue_IriRange = Model.Name "IriRange"
+
+_ValueSetValue_Literal = Model.Name "Literal"
+
+-- | ShEx grammar production: XsFacet ::= StringFacet | NumericFacet
+data XsFacet =
+  XsFacetStringFacet StringFacet |
+  XsFacetNumericFacet NumericFacet
+  deriving (Eq, Ord, Read, Show)
+
+_XsFacet = Model.Name "hydra.rdf.shex.syntax.XsFacet"
+
+_XsFacet_StringFacet = Model.Name "StringFacet"
+
+_XsFacet_NumericFacet = Model.Name "NumericFacet"
diff --git a/src/main/haskell/Hydra/Rdf/Syntax.hs b/src/main/haskell/Hydra/Rdf/Syntax.hs
--- a/src/main/haskell/Hydra/Rdf/Syntax.hs
+++ b/src/main/haskell/Hydra/Rdf/Syntax.hs
@@ -4,7 +4,7 @@
 
 module Hydra.Rdf.Syntax where
 
-import qualified Hydra.Core as Core
+import qualified Hydra.Core.Model as Model
 import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
 import qualified Data.Scientific as Sci
 import Data.Void
@@ -17,7 +17,7 @@
     unBlankNode :: String}
   deriving (Eq, Ord, Read, Show)
 
-_BlankNode = Core.Name "hydra.rdf.syntax.BlankNode"
+_BlankNode = Model.Name "hydra.rdf.syntax.BlankNode"
 
 -- | A set of RDF quads
 newtype Dataset =
@@ -25,7 +25,7 @@
     unDataset :: (S.Set Quad)}
   deriving (Eq, Ord, Read, Show)
 
-_Dataset = Core.Name "hydra.rdf.syntax.Dataset"
+_Dataset = Model.Name "hydra.rdf.syntax.Dataset"
 
 -- | A graph of RDF statements together with a distinguished subject and/or object node
 data Description =
@@ -34,11 +34,11 @@
     descriptionGraph :: Graph}
   deriving (Eq, Ord, Read, Show)
 
-_Description = Core.Name "hydra.rdf.syntax.Description"
+_Description = Model.Name "hydra.rdf.syntax.Description"
 
-_Description_subject = Core.Name "subject"
+_Description_subject = Model.Name "subject"
 
-_Description_graph = Core.Name "graph"
+_Description_graph = Model.Name "graph"
 
 -- | A set of RDF triples
 newtype Graph =
@@ -46,7 +46,7 @@
     unGraph :: (S.Set Triple)}
   deriving (Eq, Ord, Read, Show)
 
-_Graph = Core.Name "hydra.rdf.syntax.Graph"
+_Graph = Model.Name "hydra.rdf.syntax.Graph"
 
 -- | An Internationalized Resource Identifier
 newtype Iri =
@@ -54,7 +54,7 @@
     unIri :: String}
   deriving (Eq, Ord, Read, Show)
 
-_Iri = Core.Name "hydra.rdf.syntax.Iri"
+_Iri = Model.Name "hydra.rdf.syntax.Iri"
 
 -- | An IRI or a literal; this type is a convenience for downstream models like SHACL which may exclude blank nodes
 data IriOrLiteral =
@@ -62,11 +62,11 @@
   IriOrLiteralLiteral Literal
   deriving (Eq, Ord, Read, Show)
 
-_IriOrLiteral = Core.Name "hydra.rdf.syntax.IriOrLiteral"
+_IriOrLiteral = Model.Name "hydra.rdf.syntax.IriOrLiteral"
 
-_IriOrLiteral_iri = Core.Name "iri"
+_IriOrLiteral_iri = Model.Name "iri"
 
-_IriOrLiteral_literal = Core.Name "literal"
+_IriOrLiteral_literal = Model.Name "literal"
 
 -- | A convenience type which provides at most one string value per language, and optionally a value without a language
 newtype LangStrings =
@@ -74,7 +74,7 @@
     unLangStrings :: (M.Map (Maybe LanguageTag) String)}
   deriving (Eq, Ord, Read, Show)
 
-_LangStrings = Core.Name "hydra.rdf.syntax.LangStrings"
+_LangStrings = Model.Name "hydra.rdf.syntax.LangStrings"
 
 -- | A BCP47 language tag
 newtype LanguageTag =
@@ -82,7 +82,7 @@
     unLanguageTag :: String}
   deriving (Eq, Ord, Read, Show)
 
-_LanguageTag = Core.Name "hydra.rdf.syntax.LanguageTag"
+_LanguageTag = Model.Name "hydra.rdf.syntax.LanguageTag"
 
 -- | A value such as a string, number, or date
 data Literal =
@@ -95,13 +95,13 @@
     literalLanguageTag :: (Maybe LanguageTag)}
   deriving (Eq, Ord, Read, Show)
 
-_Literal = Core.Name "hydra.rdf.syntax.Literal"
+_Literal = Model.Name "hydra.rdf.syntax.Literal"
 
-_Literal_lexicalForm = Core.Name "lexicalForm"
+_Literal_lexicalForm = Model.Name "lexicalForm"
 
-_Literal_datatypeIri = Core.Name "datatypeIri"
+_Literal_datatypeIri = Model.Name "datatypeIri"
 
-_Literal_languageTag = Core.Name "languageTag"
+_Literal_languageTag = Model.Name "languageTag"
 
 -- | An RDF node: an IRI, a blank node, or a literal
 data Node =
@@ -110,13 +110,13 @@
   NodeLiteral Literal
   deriving (Eq, Ord, Read, Show)
 
-_Node = Core.Name "hydra.rdf.syntax.Node"
+_Node = Model.Name "hydra.rdf.syntax.Node"
 
-_Node_iri = Core.Name "iri"
+_Node_iri = Model.Name "iri"
 
-_Node_bnode = Core.Name "bnode"
+_Node_bnode = Model.Name "bnode"
 
-_Node_literal = Core.Name "literal"
+_Node_literal = Model.Name "literal"
 
 -- | A type representing an RDF property, and encapsulating its domain, range, and subclass relationships
 data Property =
@@ -128,13 +128,13 @@
     propertySubPropertyOf :: (S.Set Property)}
   deriving (Eq, Ord, Read, Show)
 
-_Property = Core.Name "hydra.rdf.syntax.Property"
+_Property = Model.Name "hydra.rdf.syntax.Property"
 
-_Property_domain = Core.Name "domain"
+_Property_domain = Model.Name "domain"
 
-_Property_range = Core.Name "range"
+_Property_range = Model.Name "range"
 
-_Property_subPropertyOf = Core.Name "subPropertyOf"
+_Property_subPropertyOf = Model.Name "subPropertyOf"
 
 -- | An RDF triple with an optional named graph component
 data Quad =
@@ -145,15 +145,15 @@
     quadGraph :: (Maybe Iri)}
   deriving (Eq, Ord, Read, Show)
 
-_Quad = Core.Name "hydra.rdf.syntax.Quad"
+_Quad = Model.Name "hydra.rdf.syntax.Quad"
 
-_Quad_subject = Core.Name "subject"
+_Quad_subject = Model.Name "subject"
 
-_Quad_predicate = Core.Name "predicate"
+_Quad_predicate = Model.Name "predicate"
 
-_Quad_object = Core.Name "object"
+_Quad_object = Model.Name "object"
 
-_Quad_graph = Core.Name "graph"
+_Quad_graph = Model.Name "graph"
 
 -- | Stand-in for rdfs:Class
 newtype RdfsClass =
@@ -161,7 +161,7 @@
     unRdfsClass :: ()}
   deriving (Eq, Ord, Read, Show)
 
-_RdfsClass = Core.Name "hydra.rdf.syntax.RdfsClass"
+_RdfsClass = Model.Name "hydra.rdf.syntax.RdfsClass"
 
 -- | An RDF resource: an IRI or a blank node
 data Resource =
@@ -169,11 +169,11 @@
   ResourceBnode BlankNode
   deriving (Eq, Ord, Read, Show)
 
-_Resource = Core.Name "hydra.rdf.syntax.Resource"
+_Resource = Model.Name "hydra.rdf.syntax.Resource"
 
-_Resource_iri = Core.Name "iri"
+_Resource_iri = Model.Name "iri"
 
-_Resource_bnode = Core.Name "bnode"
+_Resource_bnode = Model.Name "bnode"
 
 -- | An RDF triple defined by a subject, predicate, and object
 data Triple =
@@ -183,10 +183,10 @@
     tripleObject :: Node}
   deriving (Eq, Ord, Read, Show)
 
-_Triple = Core.Name "hydra.rdf.syntax.Triple"
+_Triple = Model.Name "hydra.rdf.syntax.Triple"
 
-_Triple_subject = Core.Name "subject"
+_Triple_subject = Model.Name "subject"
 
-_Triple_predicate = Core.Name "predicate"
+_Triple_predicate = Model.Name "predicate"
 
-_Triple_object = Core.Name "object"
+_Triple_object = Model.Name "object"
diff --git a/src/main/haskell/Hydra/Rdf/Utils.hs b/src/main/haskell/Hydra/Rdf/Utils.hs
--- a/src/main/haskell/Hydra/Rdf/Utils.hs
+++ b/src/main/haskell/Hydra/Rdf/Utils.hs
@@ -4,46 +4,48 @@
 
 module Hydra.Rdf.Utils where
 
-import qualified Hydra.Ast as Ast
-import qualified Hydra.Coders as Coders
-import qualified Hydra.Core as Core
-import qualified Hydra.Docs as Docs
-import qualified Hydra.Error.Checking as Checking
-import qualified Hydra.Error.Core as ErrorCore
-import qualified Hydra.Error.File as ErrorFile
-import qualified Hydra.Error.Packaging as ErrorPackaging
-import qualified Hydra.Error.System as ErrorSystem
-import qualified Hydra.Errors as Errors
-import qualified Hydra.File as File
-import qualified Hydra.Formatting as Formatting
-import qualified Hydra.Graph as Graph
-import qualified Hydra.Json.Model as Model
-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists
-import qualified Hydra.Overlay.Haskell.Lib.Literals as Literals
-import qualified Hydra.Overlay.Haskell.Lib.Logic as Logic
-import qualified Hydra.Overlay.Haskell.Lib.Maps as Maps
-import qualified Hydra.Overlay.Haskell.Lib.Math as Math
-import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals
-import qualified Hydra.Overlay.Haskell.Lib.Sets as Sets
-import qualified Hydra.Overlay.Haskell.Lib.Strings as Strings
-import qualified Hydra.Names as Names
-import qualified Hydra.Packaging as Packaging
-import qualified Hydra.Parsing as Parsing
-import qualified Hydra.Paths as Paths
-import qualified Hydra.Query as Query
+import qualified Hydra.Core.Ast as Ast
+import qualified Hydra.Core.Coders as Coders
+import qualified Hydra.Core.Diff as Diff
+import qualified Hydra.Core.Docs as Docs
+import qualified Hydra.Core.Error.Checking as Checking
+import qualified Hydra.Core.Error.File as ErrorFile
+import qualified Hydra.Core.Error.Model as ErrorModel
+import qualified Hydra.Core.Error.Packaging as ErrorPackaging
+import qualified Hydra.Core.Error.System as ErrorSystem
+import qualified Hydra.Core.Errors as Errors
+import qualified Hydra.Core.File as File
+import qualified Hydra.Core.Formatting as Formatting
+import qualified Hydra.Core.Graph as Graph
+import qualified Hydra.Core.Json.Model as JsonModel
+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists
+import qualified Hydra.Core.Overlay.Haskell.Lib.Literals as Literals
+import qualified Hydra.Core.Overlay.Haskell.Lib.Logic as Logic
+import qualified Hydra.Core.Overlay.Haskell.Lib.Maps as Maps
+import qualified Hydra.Core.Overlay.Haskell.Lib.Math as Math
+import qualified Hydra.Core.Overlay.Haskell.Lib.Optionals as Optionals
+import qualified Hydra.Core.Overlay.Haskell.Lib.Sets as Sets
+import qualified Hydra.Core.Overlay.Haskell.Lib.Strings as Strings
+import qualified Hydra.Core.Markdown as Markdown
+import qualified Hydra.Core.Model as Model
+import qualified Hydra.Core.Names as Names
+import qualified Hydra.Core.Packaging as Packaging
+import qualified Hydra.Core.Parsing as Parsing
+import qualified Hydra.Core.Paths as Paths
+import qualified Hydra.Core.Query as Query
+import qualified Hydra.Core.Regex as Regex
+import qualified Hydra.Core.Relational as Relational
+import qualified Hydra.Core.System as System
+import qualified Hydra.Core.Tabular as Tabular
+import qualified Hydra.Core.Testing as Testing
+import qualified Hydra.Core.Time as Time
+import qualified Hydra.Core.Topology as Topology
+import qualified Hydra.Core.Typed as Typed
+import qualified Hydra.Core.Typing as Typing
+import qualified Hydra.Core.Util as Util
+import qualified Hydra.Core.Validation as Validation
+import qualified Hydra.Core.Variants as Variants
 import qualified Hydra.Rdf.Syntax as Syntax
-import qualified Hydra.Regex as Regex
-import qualified Hydra.Relational as Relational
-import qualified Hydra.System as System
-import qualified Hydra.Tabular as Tabular
-import qualified Hydra.Testing as Testing
-import qualified Hydra.Time as Time
-import qualified Hydra.Topology as Topology
-import qualified Hydra.Typed as Typed
-import qualified Hydra.Typing as Typing
-import qualified Hydra.Util as Util
-import qualified Hydra.Validation as Validation
-import qualified Hydra.Variants as Variants
 import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
 import qualified Data.Scientific as Sci
 import Data.Void
@@ -68,64 +70,64 @@
 emptyRdfGraph = Syntax.Graph Sets.empty
 
 -- | Encode a Hydra literal as an RDF literal
-encodeLiteral :: Core.Literal -> Syntax.Literal
+encodeLiteral :: Model.Literal -> Syntax.Literal
 encodeLiteral lit =
     case lit of
-      Core.LiteralBinary v0 -> Syntax.Literal {
+      Model.LiteralBinary v0 -> Syntax.Literal {
         Syntax.literalLexicalForm = (Literals.binaryToBase64 v0),
         Syntax.literalDatatypeIri = (xmlSchemaDatatypeIri "base64Binary"),
         Syntax.literalLanguageTag = Nothing}
-      Core.LiteralBoolean v0 -> Syntax.Literal {
+      Model.LiteralBoolean v0 -> Syntax.Literal {
         Syntax.literalLexicalForm = (Logic.ifElse v0 "true" "false"),
         Syntax.literalDatatypeIri = (xmlSchemaDatatypeIri "boolean"),
         Syntax.literalLanguageTag = Nothing}
-      Core.LiteralFloat v0 -> case v0 of
-        Core.FloatValueFloat32 v1 -> Syntax.Literal {
+      Model.LiteralFloat v0 -> case v0 of
+        Model.FloatValueFloat32 v1 -> Syntax.Literal {
           Syntax.literalLexicalForm = (Literals.printFloat32 v1),
           Syntax.literalDatatypeIri = (xmlSchemaDatatypeIri "float"),
           Syntax.literalLanguageTag = Nothing}
-        Core.FloatValueFloat64 v1 -> Syntax.Literal {
+        Model.FloatValueFloat64 v1 -> Syntax.Literal {
           Syntax.literalLexicalForm = (Literals.printFloat64 v1),
           Syntax.literalDatatypeIri = (xmlSchemaDatatypeIri "double"),
           Syntax.literalLanguageTag = Nothing}
-      Core.LiteralInteger v0 -> case v0 of
-        Core.IntegerValueBigint v1 -> Syntax.Literal {
+      Model.LiteralInteger v0 -> case v0 of
+        Model.IntegerValueBigint v1 -> Syntax.Literal {
           Syntax.literalLexicalForm = (Literals.printBigint v1),
           Syntax.literalDatatypeIri = (xmlSchemaDatatypeIri "integer"),
           Syntax.literalLanguageTag = Nothing}
-        Core.IntegerValueInt8 v1 -> Syntax.Literal {
+        Model.IntegerValueInt8 v1 -> Syntax.Literal {
           Syntax.literalLexicalForm = (Literals.printInt8 v1),
           Syntax.literalDatatypeIri = (xmlSchemaDatatypeIri "byte"),
           Syntax.literalLanguageTag = Nothing}
-        Core.IntegerValueInt16 v1 -> Syntax.Literal {
+        Model.IntegerValueInt16 v1 -> Syntax.Literal {
           Syntax.literalLexicalForm = (Literals.printInt16 v1),
           Syntax.literalDatatypeIri = (xmlSchemaDatatypeIri "short"),
           Syntax.literalLanguageTag = Nothing}
-        Core.IntegerValueInt32 v1 -> Syntax.Literal {
+        Model.IntegerValueInt32 v1 -> Syntax.Literal {
           Syntax.literalLexicalForm = (Literals.printInt32 v1),
           Syntax.literalDatatypeIri = (xmlSchemaDatatypeIri "int"),
           Syntax.literalLanguageTag = Nothing}
-        Core.IntegerValueInt64 v1 -> Syntax.Literal {
+        Model.IntegerValueInt64 v1 -> Syntax.Literal {
           Syntax.literalLexicalForm = (Literals.printInt64 v1),
           Syntax.literalDatatypeIri = (xmlSchemaDatatypeIri "long"),
           Syntax.literalLanguageTag = Nothing}
-        Core.IntegerValueUint8 v1 -> Syntax.Literal {
+        Model.IntegerValueUint8 v1 -> Syntax.Literal {
           Syntax.literalLexicalForm = (Literals.printUint8 v1),
           Syntax.literalDatatypeIri = (xmlSchemaDatatypeIri "unsignedByte"),
           Syntax.literalLanguageTag = Nothing}
-        Core.IntegerValueUint16 v1 -> Syntax.Literal {
+        Model.IntegerValueUint16 v1 -> Syntax.Literal {
           Syntax.literalLexicalForm = (Literals.printUint16 v1),
           Syntax.literalDatatypeIri = (xmlSchemaDatatypeIri "unsignedShort"),
           Syntax.literalLanguageTag = Nothing}
-        Core.IntegerValueUint32 v1 -> Syntax.Literal {
+        Model.IntegerValueUint32 v1 -> Syntax.Literal {
           Syntax.literalLexicalForm = (Literals.printUint32 v1),
           Syntax.literalDatatypeIri = (xmlSchemaDatatypeIri "unsignedInt"),
           Syntax.literalLanguageTag = Nothing}
-        Core.IntegerValueUint64 v1 -> Syntax.Literal {
+        Model.IntegerValueUint64 v1 -> Syntax.Literal {
           Syntax.literalLexicalForm = (Literals.printUint64 v1),
           Syntax.literalDatatypeIri = (xmlSchemaDatatypeIri "unsignedLong"),
           Syntax.literalLanguageTag = Nothing}
-      Core.LiteralString v0 -> Syntax.Literal {
+      Model.LiteralString v0 -> Syntax.Literal {
         Syntax.literalLexicalForm = v0,
         Syntax.literalDatatypeIri = (xmlSchemaDatatypeIri "string"),
         Syntax.literalLanguageTag = Nothing}
@@ -151,8 +153,8 @@
 mergeGraphs graphs = Syntax.Graph (Sets.unions (Lists.map Syntax.unGraph graphs))
 
 -- | Convert a Hydra name to an RDF IRI
-nameToIri :: Core.Name -> Syntax.Iri
-nameToIri name = Syntax.Iri (Strings.concat2 "urn:" (Core.unName name))
+nameToIri :: Model.Name -> Syntax.Iri
+nameToIri name = Syntax.Iri (Strings.concat2 "urn:" (Model.unName name))
 
 -- | Generate the next blank node and an incremented counter
 nextBlankNode :: Int -> (Syntax.Resource, Int)
@@ -160,7 +162,7 @@
     (Syntax.ResourceBnode (Syntax.BlankNode (Strings.concat2 "b" (Literals.printInt32 counter))), (Math.add counter 1))
 
 -- | Construct a property IRI from a record name and field name
-propertyIri :: Core.Name -> Core.Name -> Syntax.Iri
+propertyIri :: Model.Name -> Model.Name -> Syntax.Iri
 propertyIri rname fname =
 
       let qualName = Names.qualifyName rname
@@ -171,7 +173,7 @@
         (Optionals.match gname "" Packaging.unModuleName),
         "#",
         (Formatting.decapitalize local_),
-        (Formatting.capitalize (Core.unName fname))]))
+        (Formatting.capitalize (Model.unName fname))]))
 
 -- | Construct an RDF namespace IRI
 rdfIri :: String -> Syntax.Iri
diff --git a/src/main/haskell/Hydra/Rdf/Xml/Schema.hs b/src/main/haskell/Hydra/Rdf/Xml/Schema.hs
new file mode 100644
--- /dev/null
+++ b/src/main/haskell/Hydra/Rdf/Xml/Schema.hs
@@ -0,0 +1,513 @@
+-- Note: this is an automatically generated file. Do not edit.
+
+-- | A partial XML Schema model, focusing on datatypes. All simple datatypes (i.e. xsd:anySimpleType and below) are included.
+-- | See: https://www.w3.org/TR/xmlschema-2
+-- | Note: for most of the XML Schema datatype definitions included here, the associated Hydra type is simply
+-- |       the string type. Exceptions are made for xsd:boolean and most of the numeric types, where there is a clearly
+-- |       corresponding Hydra literal type.
+
+module Hydra.Rdf.Xml.Schema where
+
+import qualified Hydra.Core.Model as Model
+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
+import qualified Data.Scientific as Sci
+import Data.Void
+import qualified Data.Int as I
+
+-- | The XSD anySimpleType, the base type of all simple (non-list, non-union-composed) XML Schema datatypes
+newtype AnySimpleType =
+  AnySimpleType {
+    unAnySimpleType :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_AnySimpleType = Model.Name "hydra.rdf.xml.schema.AnySimpleType"
+
+-- | The XSD anyType, the root of the XML Schema type hierarchy
+newtype AnyType =
+  AnyType {
+    unAnyType :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_AnyType = Model.Name "hydra.rdf.xml.schema.AnyType"
+
+-- | The XSD anyURI datatype: a URI reference
+newtype AnyURI =
+  AnyURI {
+    unAnyURI :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_AnyURI = Model.Name "hydra.rdf.xml.schema.AnyURI"
+
+-- | The XSD base64Binary datatype: arbitrary binary data encoded as base64
+newtype Base64Binary =
+  Base64Binary {
+    unBase64Binary :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_Base64Binary = Model.Name "hydra.rdf.xml.schema.Base64Binary"
+
+-- | The XSD boolean datatype: true or false
+newtype Boolean =
+  Boolean {
+    unBoolean :: Bool}
+  deriving (Eq, Ord, Read, Show)
+
+_Boolean = Model.Name "hydra.rdf.xml.schema.Boolean"
+
+-- | The XSD byte datatype: an 8-bit signed integer
+newtype Byte =
+  Byte {
+    unByte :: I.Int8}
+  deriving (Eq, Ord, Read, Show)
+
+_Byte = Model.Name "hydra.rdf.xml.schema.Byte"
+
+-- | An XML Schema constraining facet, restricting the value space of a datatype
+newtype ConstrainingFacet =
+  ConstrainingFacet {
+    unConstrainingFacet :: ()}
+  deriving (Eq, Ord, Read, Show)
+
+_ConstrainingFacet = Model.Name "hydra.rdf.xml.schema.ConstrainingFacet"
+
+-- | The name of a built-in XML Schema datatype
+data Datatype =
+  DatatypeAnySimpleType |
+  DatatypeAnyType |
+  DatatypeAnyURI |
+  DatatypeBase64Binary |
+  DatatypeBoolean |
+  DatatypeByte |
+  DatatypeDate |
+  DatatypeDateTime |
+  DatatypeDecimal |
+  DatatypeDouble |
+  DatatypeDuration |
+  DatatypeENTITIES |
+  DatatypeENTITY |
+  DatatypeFloat |
+  DatatypeGDay |
+  DatatypeGMonth |
+  DatatypeGMonthDay |
+  DatatypeGYear |
+  DatatypeGYearMonth |
+  DatatypeHexBinary |
+  DatatypeID |
+  DatatypeIDREF |
+  DatatypeIDREFS |
+  DatatypeInt |
+  DatatypeInteger |
+  DatatypeLanguage |
+  DatatypeLong |
+  DatatypeNMTOKEN |
+  DatatypeNOTATION |
+  DatatypeName |
+  DatatypeNegativeInteger |
+  DatatypeNonNegativeInteger |
+  DatatypeNonPositiveInteger |
+  DatatypeNormalizedString |
+  DatatypePositiveInteger |
+  DatatypeQName |
+  DatatypeShort |
+  DatatypeString |
+  DatatypeTime |
+  DatatypeToken |
+  DatatypeUnsignedByte |
+  DatatypeUnsignedInt |
+  DatatypeUnsignedLong |
+  DatatypeUnsignedShort
+  deriving (Eq, Ord, Read, Show)
+
+_Datatype = Model.Name "hydra.rdf.xml.schema.Datatype"
+
+_Datatype_anySimpleType = Model.Name "anySimpleType"
+
+_Datatype_anyType = Model.Name "anyType"
+
+_Datatype_anyURI = Model.Name "anyURI"
+
+_Datatype_base64Binary = Model.Name "base64Binary"
+
+_Datatype_boolean = Model.Name "boolean"
+
+_Datatype_byte = Model.Name "byte"
+
+_Datatype_date = Model.Name "date"
+
+_Datatype_dateTime = Model.Name "dateTime"
+
+_Datatype_decimal = Model.Name "decimal"
+
+_Datatype_double = Model.Name "double"
+
+_Datatype_duration = Model.Name "duration"
+
+_Datatype_ENTITIES = Model.Name "ENTITIES"
+
+_Datatype_ENTITY = Model.Name "ENTITY"
+
+_Datatype_float = Model.Name "float"
+
+_Datatype_gDay = Model.Name "gDay"
+
+_Datatype_gMonth = Model.Name "gMonth"
+
+_Datatype_gMonthDay = Model.Name "gMonthDay"
+
+_Datatype_gYear = Model.Name "gYear"
+
+_Datatype_gYearMonth = Model.Name "gYearMonth"
+
+_Datatype_hexBinary = Model.Name "hexBinary"
+
+_Datatype_ID = Model.Name "ID"
+
+_Datatype_IDREF = Model.Name "IDREF"
+
+_Datatype_IDREFS = Model.Name "IDREFS"
+
+_Datatype_int = Model.Name "int"
+
+_Datatype_integer = Model.Name "integer"
+
+_Datatype_language = Model.Name "language"
+
+_Datatype_long = Model.Name "long"
+
+_Datatype_NMTOKEN = Model.Name "NMTOKEN"
+
+_Datatype_NOTATION = Model.Name "NOTATION"
+
+_Datatype_name = Model.Name "name"
+
+_Datatype_negativeInteger = Model.Name "negativeInteger"
+
+_Datatype_nonNegativeInteger = Model.Name "nonNegativeInteger"
+
+_Datatype_nonPositiveInteger = Model.Name "nonPositiveInteger"
+
+_Datatype_normalizedString = Model.Name "normalizedString"
+
+_Datatype_positiveInteger = Model.Name "positiveInteger"
+
+_Datatype_qName = Model.Name "qName"
+
+_Datatype_short = Model.Name "short"
+
+_Datatype_string = Model.Name "string"
+
+_Datatype_time = Model.Name "time"
+
+_Datatype_token = Model.Name "token"
+
+_Datatype_unsignedByte = Model.Name "unsignedByte"
+
+_Datatype_unsignedInt = Model.Name "unsignedInt"
+
+_Datatype_unsignedLong = Model.Name "unsignedLong"
+
+_Datatype_unsignedShort = Model.Name "unsignedShort"
+
+-- | The XSD date datatype: a calendar date, optionally with a timezone
+newtype Date =
+  Date {
+    unDate :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_Date = Model.Name "hydra.rdf.xml.schema.Date"
+
+-- | The XSD dateTime datatype: a date and time, optionally with a timezone
+newtype DateTime =
+  DateTime {
+    unDateTime :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_DateTime = Model.Name "hydra.rdf.xml.schema.DateTime"
+
+-- | The XSD decimal datatype: an arbitrary-precision signed decimal number
+newtype Decimal =
+  Decimal {
+    unDecimal :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_Decimal = Model.Name "hydra.rdf.xml.schema.Decimal"
+
+-- | The XSD double datatype: an IEEE 754 double-precision floating-point number
+newtype Double_ =
+  Double_ {
+    unDouble :: Double}
+  deriving (Eq, Ord, Read, Show)
+
+_Double = Model.Name "hydra.rdf.xml.schema.Double"
+
+-- | The XSD duration datatype: a duration of time
+newtype Duration =
+  Duration {
+    unDuration :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_Duration = Model.Name "hydra.rdf.xml.schema.Duration"
+
+-- | The XSD ENTITIES datatype: a whitespace-separated list of unparsed entity names
+newtype ENTITIES =
+  ENTITIES {
+    unENTITIES :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_ENTITIES = Model.Name "hydra.rdf.xml.schema.ENTITIES"
+
+-- | The XSD ENTITY datatype: the name of an unparsed entity
+newtype ENTITY =
+  ENTITY {
+    unENTITY :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_ENTITY = Model.Name "hydra.rdf.xml.schema.ENTITY"
+
+-- | The XSD float datatype: an IEEE 754 single-precision floating-point number
+newtype Float_ =
+  Float_ {
+    unFloat :: Float}
+  deriving (Eq, Ord, Read, Show)
+
+_Float = Model.Name "hydra.rdf.xml.schema.Float"
+
+-- | The XSD gDay datatype: a day of the month, recurring
+newtype GDay =
+  GDay {
+    unGDay :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_GDay = Model.Name "hydra.rdf.xml.schema.GDay"
+
+-- | The XSD gMonth datatype: a month of the year, recurring
+newtype GMonth =
+  GMonth {
+    unGMonth :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_GMonth = Model.Name "hydra.rdf.xml.schema.GMonth"
+
+-- | The XSD gMonthDay datatype: a day of a specific month, recurring yearly
+newtype GMonthDay =
+  GMonthDay {
+    unGMonthDay :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_GMonthDay = Model.Name "hydra.rdf.xml.schema.GMonthDay"
+
+-- | The XSD gYear datatype: a calendar year
+newtype GYear =
+  GYear {
+    unGYear :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_GYear = Model.Name "hydra.rdf.xml.schema.GYear"
+
+-- | The XSD gYearMonth datatype: a specific month of a specific year
+newtype GYearMonth =
+  GYearMonth {
+    unGYearMonth :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_GYearMonth = Model.Name "hydra.rdf.xml.schema.GYearMonth"
+
+-- | The XSD hexBinary datatype: arbitrary binary data encoded as hexadecimal
+newtype HexBinary =
+  HexBinary {
+    unHexBinary :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_HexBinary = Model.Name "hydra.rdf.xml.schema.HexBinary"
+
+-- | The XSD ID datatype: an XML identifier attribute value, unique within a document
+newtype ID =
+  ID {
+    unID :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_ID = Model.Name "hydra.rdf.xml.schema.ID"
+
+-- | The XSD IDREF datatype: a reference to an XML ID attribute value
+newtype IDREF =
+  IDREF {
+    unIDREF :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_IDREF = Model.Name "hydra.rdf.xml.schema.IDREF"
+
+-- | The XSD IDREFS datatype: a whitespace-separated list of IDREF values
+newtype IDREFS =
+  IDREFS {
+    unIDREFS :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_IDREFS = Model.Name "hydra.rdf.xml.schema.IDREFS"
+
+-- | The XSD int datatype: a 32-bit signed integer
+newtype Int_ =
+  Int_ {
+    unInt :: Int}
+  deriving (Eq, Ord, Read, Show)
+
+_Int = Model.Name "hydra.rdf.xml.schema.Int"
+
+-- | The XSD integer datatype: an arbitrary-precision signed integer
+newtype Integer_ =
+  Integer_ {
+    unInteger :: Integer}
+  deriving (Eq, Ord, Read, Show)
+
+_Integer = Model.Name "hydra.rdf.xml.schema.Integer"
+
+-- | The XSD language datatype: an RFC 3066 language tag
+newtype Language =
+  Language {
+    unLanguage :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_Language = Model.Name "hydra.rdf.xml.schema.Language"
+
+-- | The XSD long datatype: a 64-bit signed integer
+newtype Long =
+  Long {
+    unLong :: I.Int64}
+  deriving (Eq, Ord, Read, Show)
+
+_Long = Model.Name "hydra.rdf.xml.schema.Long"
+
+-- | The XSD NMTOKEN datatype: an XML name token
+newtype NMTOKEN =
+  NMTOKEN {
+    unNMTOKEN :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_NMTOKEN = Model.Name "hydra.rdf.xml.schema.NMTOKEN"
+
+-- | The XSD NOTATION datatype: the name of a notation declared in the document's DTD
+newtype NOTATION =
+  NOTATION {
+    unNOTATION :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_NOTATION = Model.Name "hydra.rdf.xml.schema.NOTATION"
+
+-- | The XSD Name datatype: an XML Name (a token that may not start with a digit)
+newtype Name =
+  Name {
+    unName :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_Name = Model.Name "hydra.rdf.xml.schema.Name"
+
+-- | The XSD negativeInteger datatype: an arbitrary-precision integer less than zero
+newtype NegativeInteger =
+  NegativeInteger {
+    unNegativeInteger :: Integer}
+  deriving (Eq, Ord, Read, Show)
+
+_NegativeInteger = Model.Name "hydra.rdf.xml.schema.NegativeInteger"
+
+-- | The XSD nonNegativeInteger datatype: an arbitrary-precision integer greater than or equal to zero
+newtype NonNegativeInteger =
+  NonNegativeInteger {
+    unNonNegativeInteger :: Integer}
+  deriving (Eq, Ord, Read, Show)
+
+_NonNegativeInteger = Model.Name "hydra.rdf.xml.schema.NonNegativeInteger"
+
+-- | The XSD nonPositiveInteger datatype: an arbitrary-precision integer less than or equal to zero
+newtype NonPositiveInteger =
+  NonPositiveInteger {
+    unNonPositiveInteger :: Integer}
+  deriving (Eq, Ord, Read, Show)
+
+_NonPositiveInteger = Model.Name "hydra.rdf.xml.schema.NonPositiveInteger"
+
+-- | The XSD normalizedString datatype: a string with no carriage return, line feed, or tab characters
+newtype NormalizedString =
+  NormalizedString {
+    unNormalizedString :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_NormalizedString = Model.Name "hydra.rdf.xml.schema.NormalizedString"
+
+-- | The XSD positiveInteger datatype: an arbitrary-precision integer greater than zero
+newtype PositiveInteger =
+  PositiveInteger {
+    unPositiveInteger :: Integer}
+  deriving (Eq, Ord, Read, Show)
+
+_PositiveInteger = Model.Name "hydra.rdf.xml.schema.PositiveInteger"
+
+-- | The XSD QName datatype: a namespace-qualified XML name
+newtype QName =
+  QName {
+    unQName :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_QName = Model.Name "hydra.rdf.xml.schema.QName"
+
+-- | The XSD short datatype: a 16-bit signed integer
+newtype Short =
+  Short {
+    unShort :: I.Int16}
+  deriving (Eq, Ord, Read, Show)
+
+_Short = Model.Name "hydra.rdf.xml.schema.Short"
+
+-- | The XSD string datatype: a character string
+newtype String_ =
+  String_ {
+    unString :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_String = Model.Name "hydra.rdf.xml.schema.String"
+
+-- | The XSD time datatype: a time of day, optionally with a timezone
+newtype Time =
+  Time {
+    unTime :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_Time = Model.Name "hydra.rdf.xml.schema.Time"
+
+-- | The XSD token datatype: a normalized string with no leading, trailing, or consecutive internal whitespace
+newtype Token =
+  Token {
+    unToken :: String}
+  deriving (Eq, Ord, Read, Show)
+
+_Token = Model.Name "hydra.rdf.xml.schema.Token"
+
+-- | The XSD unsignedByte datatype: an 8-bit unsigned integer
+newtype UnsignedByte =
+  UnsignedByte {
+    unUnsignedByte :: I.Int16}
+  deriving (Eq, Ord, Read, Show)
+
+_UnsignedByte = Model.Name "hydra.rdf.xml.schema.UnsignedByte"
+
+-- | The XSD unsignedInt datatype: a 32-bit unsigned integer
+newtype UnsignedInt =
+  UnsignedInt {
+    unUnsignedInt :: I.Int64}
+  deriving (Eq, Ord, Read, Show)
+
+_UnsignedInt = Model.Name "hydra.rdf.xml.schema.UnsignedInt"
+
+-- | The XSD unsignedLong datatype: a 64-bit unsigned integer
+newtype UnsignedLong =
+  UnsignedLong {
+    unUnsignedLong :: Integer}
+  deriving (Eq, Ord, Read, Show)
+
+_UnsignedLong = Model.Name "hydra.rdf.xml.schema.UnsignedLong"
+
+-- | The XSD unsignedShort datatype: a 16-bit unsigned integer
+newtype UnsignedShort =
+  UnsignedShort {
+    unUnsignedShort :: Int}
+  deriving (Eq, Ord, Read, Show)
+
+_UnsignedShort = Model.Name "hydra.rdf.xml.schema.UnsignedShort"
diff --git a/src/main/haskell/Hydra/Shacl/Coder.hs b/src/main/haskell/Hydra/Shacl/Coder.hs
deleted file mode 100644
--- a/src/main/haskell/Hydra/Shacl/Coder.hs
+++ /dev/null
@@ -1,340 +0,0 @@
--- Note: this is an automatically generated file. Do not edit.
-
--- | SHACL coder: converts Hydra types and terms to SHACL shapes and RDF descriptions
-
-module Hydra.Shacl.Coder where
-
-import qualified Hydra.Annotations as Annotations
-import qualified Hydra.Ast as Ast
-import qualified Hydra.Coders as Coders
-import qualified Hydra.Constants as Constants
-import qualified Hydra.Core as Core
-import qualified Hydra.Decode.Core as DecodeCore
-import qualified Hydra.Docs as Docs
-import qualified Hydra.Encode.Core as EncodeCore
-import qualified Hydra.Error.Checking as Checking
-import qualified Hydra.Error.Core as ErrorCore
-import qualified Hydra.Error.File as ErrorFile
-import qualified Hydra.Error.Packaging as ErrorPackaging
-import qualified Hydra.Error.System as ErrorSystem
-import qualified Hydra.Errors as Errors
-import qualified Hydra.Extract.Core as ExtractCore
-import qualified Hydra.File as File
-import qualified Hydra.Formatting as Formatting
-import qualified Hydra.Graph as Graph
-import qualified Hydra.Json.Model as JsonModel
-import qualified Hydra.Lexical as Lexical
-import qualified Hydra.Overlay.Haskell.Lib.Eithers as Eithers
-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists
-import qualified Hydra.Overlay.Haskell.Lib.Literals as Literals
-import qualified Hydra.Overlay.Haskell.Lib.Logic as Logic
-import qualified Hydra.Overlay.Haskell.Lib.Maps as Maps
-import qualified Hydra.Overlay.Haskell.Lib.Math as Math
-import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals
-import qualified Hydra.Overlay.Haskell.Lib.Pairs as Pairs
-import qualified Hydra.Overlay.Haskell.Lib.Sets as Sets
-import qualified Hydra.Overlay.Haskell.Lib.Strings as Strings
-import qualified Hydra.Names as Names
-import qualified Hydra.Packaging as Packaging
-import qualified Hydra.Parsing as Parsing
-import qualified Hydra.Paths as Paths
-import qualified Hydra.Query as Query
-import qualified Hydra.Rdf.Syntax as Syntax
-import qualified Hydra.Rdf.Utils as Utils
-import qualified Hydra.Regex as Regex
-import qualified Hydra.Relational as Relational
-import qualified Hydra.Rewriting as Rewriting
-import qualified Hydra.Shacl.Model as ShaclModel
-import qualified Hydra.Strip as Strip
-import qualified Hydra.System as System
-import qualified Hydra.Tabular as Tabular
-import qualified Hydra.Testing as Testing
-import qualified Hydra.Time as Time
-import qualified Hydra.Topology as Topology
-import qualified Hydra.Typed as Typed
-import qualified Hydra.Typing as Typing
-import qualified Hydra.Util as Util
-import qualified Hydra.Validation as Validation
-import qualified Hydra.Variants as Variants
-import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
-import qualified Data.Scientific as Sci
-import Data.Void
-
--- | Construct CommonProperties from a list of constraints, using defaults for other fields
-common :: [ShaclModel.CommonConstraint] -> ShaclModel.CommonProperties
-common constraints =
-    ShaclModel.CommonProperties {
-      ShaclModel.commonPropertiesConstraints = (Sets.fromList constraints),
-      ShaclModel.commonPropertiesDeactivated = Nothing,
-      ShaclModel.commonPropertiesMessage = (Syntax.LangStrings Maps.empty),
-      ShaclModel.commonPropertiesSeverity = ShaclModel.SeverityInfo,
-      ShaclModel.commonPropertiesTargetClass = Sets.empty,
-      ShaclModel.commonPropertiesTargetNode = Sets.empty,
-      ShaclModel.commonPropertiesTargetObjectsOf = Sets.empty,
-      ShaclModel.commonPropertiesTargetSubjectsOf = Sets.empty}
-
--- | Default CommonProperties with empty constraints and default severity
-defaultCommonProperties :: ShaclModel.CommonProperties
-defaultCommonProperties = common []
-
--- | Convert a binding's name to an RDF IRI
-elementIri :: Core.Binding -> Syntax.Iri
-elementIri el = Utils.nameToIri (Core.bindingName el)
-
--- | Encode a record field as RDF triples with a given subject
-encodeField :: Core.Name -> Syntax.Resource -> Core.Field -> Int -> Graph.Graph -> Either Errors.Error ([Syntax.Triple], Int)
-encodeField rname subject field cx g =
-
-      let pair1 = Utils.nextBlankNode cx
-          node = Pairs.first pair1
-          cx1 = Pairs.second pair1
-      in (Eithers.bind (encodeTerm node (Core.fieldTerm field) cx1 g) (\_r1 ->
-        let descs = Pairs.first _r1
-            cx2 = Pairs.second _r1
-        in (Right (
-          Lists.concat2 (Utils.triplesOf descs) (Utils.forObjects subject (Utils.propertyIri rname (Core.fieldName field)) (Utils.subjectsOf descs)),
-          cx2))))
-
--- | Encode a FieldType as a SHACL property shape Definition
-encodeFieldType :: Core.Name -> Maybe Integer -> Core.FieldType -> t0 -> Either Errors.Error (ShaclModel.Definition ShaclModel.PropertyShape)
-encodeFieldType rname order ft cx =
-
-      let fname = Core.fieldTypeName ft
-          ftype = Core.fieldTypeType ft
-          iri = Utils.propertyIri rname fname
-          forType =
-                  \mn -> \mx -> \t -> case (Strip.deannotateType t) of
-                    Core.TypeOptional v0 -> forType (Just 0) mx v0
-                    Core.TypeSet v0 -> forType mn Nothing v0
-                    _ -> forTypeDefault mn mx t
-          forTypeDefault =
-                  \mn -> \mx -> \t -> Eithers.map (\_cp ->
-                    let baseProp = property iri
-                        minC = Optionals.map (\_n -> ShaclModel.PropertyShapeConstraintMinCount _n) mn
-                        maxC = Optionals.map (\_n -> ShaclModel.PropertyShapeConstraintMaxCount _n) mx
-                    in ShaclModel.Definition {
-                      ShaclModel.definitionIri = iri,
-                      ShaclModel.definitionTarget = ShaclModel.PropertyShape {
-                        ShaclModel.propertyShapeCommon = _cp,
-                        ShaclModel.propertyShapeConstraints = (Sets.fromList (Optionals.givens [
-                          minC,
-                          maxC])),
-                        ShaclModel.propertyShapeDefaultValue = Nothing,
-                        ShaclModel.propertyShapeDescription = (Syntax.LangStrings Maps.empty),
-                        ShaclModel.propertyShapeName = (Syntax.LangStrings Maps.empty),
-                        ShaclModel.propertyShapeOrder = order,
-                        ShaclModel.propertyShapePath = iri}}) (encodeType rname t cx)
-      in (forType (Just 1) (Just 1) ftype)
-
--- | Encode a list of terms as RDF list structure
-encodeList :: Syntax.Resource -> [Core.Term] -> Int -> Graph.Graph -> Either Errors.Error ([Syntax.Description], Int)
-encodeList subj terms cx0 g =
-    Logic.ifElse (Lists.isEmpty terms) (Right (
-      [
-        Syntax.Description {
-          Syntax.descriptionSubject = (Syntax.NodeIri (Syntax.Iri "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil")),
-          Syntax.descriptionGraph = (Syntax.Graph Sets.empty)}],
-      cx0)) (Optionals.match (Lists.uncons terms) (Right ([], cx0)) (\p ->
-      let pair1 = Utils.nextBlankNode cx0
-          node1 = Pairs.first pair1
-          cx1 = Pairs.second pair1
-      in (Eithers.bind (encodeTerm node1 (Pairs.first p) cx1 g) (\_r1 ->
-        let fdescs = Pairs.first _r1
-            cx2 = Pairs.second _r1
-            firstTriples = Lists.concat2 (Utils.triplesOf fdescs) (Utils.forObjects subj (Utils.rdfIri "first") (Utils.subjectsOf fdescs))
-            pair2 = Utils.nextBlankNode cx2
-            next = Pairs.first pair2
-            cx3 = Pairs.second pair2
-        in (Eithers.map (\_r2 ->
-          let rdescs = Pairs.first _r2
-              cx4 = Pairs.second _r2
-              restTriples = Lists.concat2 (Utils.triplesOf rdescs) (Utils.forObjects subj (Utils.rdfIri "rest") (Utils.subjectsOf rdescs))
-          in (
-            [
-              Syntax.Description {
-                Syntax.descriptionSubject = (Utils.resourceToNode subj),
-                Syntax.descriptionGraph = (Syntax.Graph (Sets.fromList (Lists.concat2 firstTriples restTriples)))}],
-            cx4)) (encodeList next (Pairs.second p) cx3 g))))))
-
--- | Encode a LiteralType as SHACL CommonProperties with an XSD datatype constraint
-encodeLiteralType :: Core.LiteralType -> ShaclModel.CommonProperties
-encodeLiteralType lt =
-
-      let xsd = \local -> common [
-            ShaclModel.CommonConstraintDatatype (Utils.xmlSchemaDatatypeIri local)]
-      in case lt of
-        Core.LiteralTypeBinary -> xsd "base64Binary"
-        Core.LiteralTypeBoolean -> xsd "boolean"
-        Core.LiteralTypeFloat v0 -> case v0 of
-          Core.FloatTypeFloat32 -> xsd "float"
-          Core.FloatTypeFloat64 -> xsd "double"
-        Core.LiteralTypeInteger v0 -> case v0 of
-          Core.IntegerTypeBigint -> xsd "integer"
-          Core.IntegerTypeInt8 -> xsd "byte"
-          Core.IntegerTypeInt16 -> xsd "short"
-          Core.IntegerTypeInt32 -> xsd "int"
-          Core.IntegerTypeInt64 -> xsd "long"
-          Core.IntegerTypeUint8 -> xsd "unsignedByte"
-          Core.IntegerTypeUint16 -> xsd "unsignedShort"
-          Core.IntegerTypeUint32 -> xsd "unsignedInt"
-          Core.IntegerTypeUint64 -> xsd "unsignedLong"
-        Core.LiteralTypeString -> xsd "string"
-
--- | Encode a Hydra term as a list of RDF Descriptions
-encodeTerm :: Syntax.Resource -> Core.Term -> Int -> Graph.Graph -> Either Errors.Error ([Syntax.Description], Int)
-encodeTerm subject term cx g =
-    case term of
-      Core.TermAnnotated v0 -> encodeTerm subject (Core.annotatedTermBody v0) cx g
-      Core.TermList v0 -> encodeList subject v0 cx g
-      Core.TermLiteral v0 -> Right (
-        [
-          Syntax.Description {
-            Syntax.descriptionSubject = (Syntax.NodeLiteral (Utils.encodeLiteral v0)),
-            Syntax.descriptionGraph = (Syntax.Graph Sets.empty)}],
-        cx)
-      Core.TermMap v0 -> Eithers.map (\_r -> (
-        [
-          Syntax.Description {
-            Syntax.descriptionSubject = (Utils.resourceToNode subject),
-            Syntax.descriptionGraph = (Syntax.Graph (Sets.fromList (Lists.concat (Pairs.first _r))))}],
-        (Pairs.second _r))) (foldAccumResult (\_cx0 -> \kv -> Eithers.bind (ExtractCore.string g (Strip.deannotateTerm (Pairs.first kv))) (\_ks ->
-        let pair2 = Utils.nextBlankNode _cx0
-            node2 = Pairs.first pair2
-            cx2 = Pairs.second pair2
-        in (Eithers.map (\_dr -> (
-          Lists.concat2 (Utils.forObjects subject (Utils.keyIri _ks) (Utils.subjectsOf (Pairs.first _dr))) (Utils.triplesOf (Pairs.first _dr)),
-          (Pairs.second _dr))) (encodeTerm node2 (Pairs.second kv) cx2 g)))) cx (Maps.toList v0))
-      Core.TermWrap v0 -> encodeTerm subject (Rewriting.wrapTermToRecord (Core.wrappedTermTypeName v0) (Core.wrappedTermBody v0)) cx g
-      Core.TermOptional v0 -> Optionals.match v0 (Right ([], cx)) (\_inner -> encodeTerm subject _inner cx g)
-      Core.TermUnit -> Right ([], cx)
-      Core.TermRecord v0 ->
-        let rname = Core.recordTypeName v0
-            fields = Core.recordFields v0
-        in (Eithers.map (\_r -> (
-          [
-            withType rname (Syntax.Description {
-              Syntax.descriptionSubject = (Utils.resourceToNode subject),
-              Syntax.descriptionGraph = (Syntax.Graph (Sets.fromList (Lists.concat (Pairs.first _r))))})],
-          (Pairs.second _r))) (foldAccumResult (\_cx0 -> \field -> encodeField rname subject field _cx0 g) cx fields))
-      Core.TermSet v0 -> Eithers.map (\_r -> (Lists.concat (Pairs.first _r), (Pairs.second _r))) (foldAccumResult (\_cx0 -> \t ->
-        let pair3 = Utils.nextBlankNode _cx0
-            node3 = Pairs.first pair3
-            cx3 = Pairs.second pair3
-        in (encodeTerm node3 t cx3 g)) cx (Sets.toList v0))
-      Core.TermInject v0 ->
-        let rname = Core.injectionTypeName v0
-            field = Core.injectionField v0
-        in (Eithers.map (\_r -> (
-          [
-            withType rname (Syntax.Description {
-              Syntax.descriptionSubject = (Utils.resourceToNode subject),
-              Syntax.descriptionGraph = (Syntax.Graph (Sets.fromList (Pairs.first _r)))})],
-          (Pairs.second _r))) (encodeField rname subject field cx g))
-      _ -> unexpectedE "RDF-compatible term" "unsupported term variant"
-
--- | Encode a Hydra type as SHACL CommonProperties
-encodeType :: Core.Name -> Core.Type -> t0 -> Either Errors.Error ShaclModel.CommonProperties
-encodeType tname typ cx =
-
-      let any = Right (common [])
-      in case (Strip.deannotateType typ) of
-        Core.TypeEither _ -> any
-        Core.TypeList _ -> any
-        Core.TypeLiteral v0 -> Right (encodeLiteralType v0)
-        Core.TypeMap _ -> any
-        Core.TypePair _ -> any
-        Core.TypeWrap v0 -> encodeType tname (Rewriting.wrapTypeToRecord v0) cx
-        Core.TypeRecord v0 -> Eithers.map (\_props -> common [
-          ShaclModel.CommonConstraintProperty (Sets.fromList (Lists.map (\_p -> ShaclModel.ReferenceDefinition _p) _props))]) (Eithers.mapList (\_pair -> encodeFieldType tname (Just (Pairs.first _pair)) (Pairs.second _pair) cx) (Lists.zip (Lists.map (\_i -> Literals.int32ToBigint _i) (Math.range 0 (Lists.length v0))) v0))
-        Core.TypeSet _ -> any
-        Core.TypeUnion v0 -> Eithers.map (\_props -> common [
-          ShaclModel.CommonConstraintXone (Sets.fromList (Lists.map (\_p -> ShaclModel.ReferenceAnonymous (node [
-            ShaclModel.CommonConstraintProperty (Sets.fromList [
-              ShaclModel.ReferenceDefinition _p])])) _props))]) (Eithers.mapList (\_ft -> encodeFieldType tname Nothing _ft cx) v0)
-        Core.TypeUnit -> any
-        Core.TypeVariable v0 -> Right (common [
-          ShaclModel.CommonConstraintNode (Sets.fromList [
-            ShaclModel.ReferenceNamed (Utils.nameToIri v0)])])
-        _ -> unexpectedE "type" "unsupported type variant"
-
--- | Construct an error result with the given message
-err :: String -> Either Errors.Error t0
-err msg = Left (Errors.ErrorOther (Errors.OtherError msg))
-
--- | Fold over a list, accumulating results and threading context through each step
-foldAccumResult :: (t0 -> t1 -> Either t2 (t3, t0)) -> t0 -> [t1] -> Either t2 ([t3], t0)
-foldAccumResult f cx xs =
-    Optionals.match (Lists.uncons xs) (Right ([], cx)) (\p -> Eithers.bind (f cx (Pairs.first p)) (\_r -> Eithers.map (\_rest -> (Lists.cons (Pairs.first _r) (Pairs.first _rest), (Pairs.second _rest))) (foldAccumResult f (Pairs.second _r) (Pairs.second p))))
-
--- | Construct a SHACL node shape from a list of common constraints
-node :: [ShaclModel.CommonConstraint] -> ShaclModel.Shape
-node constraints = ShaclModel.ShapeNode (ShaclModel.NodeShape {
-  ShaclModel.nodeShapeCommon = (common constraints)})
-
--- | Construct a default property shape with the given IRI as its path
-property :: Syntax.Iri -> ShaclModel.PropertyShape
-property iri =
-    ShaclModel.PropertyShape {
-      ShaclModel.propertyShapeCommon = defaultCommonProperties,
-      ShaclModel.propertyShapeConstraints = Sets.empty,
-      ShaclModel.propertyShapeDefaultValue = Nothing,
-      ShaclModel.propertyShapeDescription = (Syntax.LangStrings Maps.empty),
-      ShaclModel.propertyShapeName = (Syntax.LangStrings Maps.empty),
-      ShaclModel.propertyShapeOrder = Nothing,
-      ShaclModel.propertyShapePath = iri}
-
--- | Encode a module's type elements as a SHACL ShapesGraph
-shaclCoder :: Packaging.Module -> t0 -> Graph.Graph -> Either Errors.Error (ShaclModel.ShapesGraph, t0)
-shaclCoder mod cx g =
-
-      let typeEls =
-              Optionals.givens (Lists.map (\d -> case d of
-                Packaging.DefinitionType v0 -> Just ((\name -> \typ ->
-                  let schemaTerm = Core.TermVariable (Core.Name "hydra.core.Type")
-                      dataTerm =
-                              Annotations.normalizeTermAnnotations (Core.TermAnnotated (Core.AnnotatedTerm {
-                                Core.annotatedTermBody = (EncodeCore.type_ typ),
-                                Core.annotatedTermAnnotation = (Annotations.wrapAnnotationMap (Maps.fromList [
-                                  (Constants.keyType, schemaTerm)]))}))
-                  in Core.Binding {
-                    Core.bindingName = name,
-                    Core.bindingTerm = dataTerm,
-                    Core.bindingTypeScheme = (Just (Core.TypeScheme {
-                      Core.typeSchemeVariables = [],
-                      Core.typeSchemeBody = (Core.TypeVariable (Core.Name "hydra.core.Type")),
-                      Core.typeSchemeConstraints = Maps.empty}))}) (Packaging.typeDefinitionName v0) (Core.typeSchemeBody (Packaging.typeDefinitionBody v0)))
-                _ -> Nothing) (Packaging.moduleDefinitions mod))
-          toShape =
-                  \el -> Eithers.bind (Eithers.bimap (\_de -> Errors.ErrorOther (Errors.OtherError (Errors.unDecodingError _de))) (\_t -> _t) (DecodeCore.type_ g (Core.bindingTerm el))) (\_typ -> Eithers.map (\_cp -> ShaclModel.Definition {
-                    ShaclModel.definitionIri = (elementIri el),
-                    ShaclModel.definitionTarget = (ShaclModel.ShapeNode (ShaclModel.NodeShape {
-                      ShaclModel.nodeShapeCommon = _cp}))}) (encodeType (Core.bindingName el) _typ cx))
-      in (Eithers.map (\_shapes -> (ShaclModel.ShapesGraph (Sets.fromList _shapes), cx)) (Eithers.mapList toShape typeEls))
-
--- | Construct an error for unexpected input, given expected and found descriptions
-unexpectedE :: String -> String -> Either Errors.Error t0
-unexpectedE expected found =
-    err (Strings.concat [
-      "Expected ",
-      expected,
-      ", found: ",
-      found])
-
--- | Add an rdf:type triple to an RDF Description
-withType :: Core.Name -> Syntax.Description -> Syntax.Description
-withType name desc =
-
-      let subj = Syntax.descriptionSubject desc
-          triples = Syntax.unGraph (Syntax.descriptionGraph desc)
-          subjRes =
-                  case subj of
-                    Syntax.NodeIri v0 -> Syntax.ResourceIri v0
-                    Syntax.NodeBnode v0 -> Syntax.ResourceBnode v0
-          triple =
-                  Syntax.Triple {
-                    Syntax.tripleSubject = subjRes,
-                    Syntax.triplePredicate = (Utils.rdfIri "type"),
-                    Syntax.tripleObject = (Syntax.NodeIri (Utils.nameToIri name))}
-      in Syntax.Description {
-        Syntax.descriptionSubject = subj,
-        Syntax.descriptionGraph = (Syntax.Graph (Sets.insert triple triples))}
diff --git a/src/main/haskell/Hydra/Shacl/Language.hs b/src/main/haskell/Hydra/Shacl/Language.hs
deleted file mode 100644
--- a/src/main/haskell/Hydra/Shacl/Language.hs
+++ /dev/null
@@ -1,106 +0,0 @@
--- Note: this is an automatically generated file. Do not edit.
-
--- | Language constraints for W3C SHACL
-
-module Hydra.Shacl.Language where
-
-import qualified Hydra.Ast as Ast
-import qualified Hydra.Coders as Coders
-import qualified Hydra.Core as Core
-import qualified Hydra.Docs as Docs
-import qualified Hydra.Error.Checking as Checking
-import qualified Hydra.Error.Core as ErrorCore
-import qualified Hydra.Error.File as ErrorFile
-import qualified Hydra.Error.Packaging as ErrorPackaging
-import qualified Hydra.Error.System as ErrorSystem
-import qualified Hydra.Errors as Errors
-import qualified Hydra.File as File
-import qualified Hydra.Graph as Graph
-import qualified Hydra.Json.Model as Model
-import qualified Hydra.Lexical as Lexical
-import qualified Hydra.Overlay.Haskell.Lib.Sets as Sets
-import qualified Hydra.Packaging as Packaging
-import qualified Hydra.Parsing as Parsing
-import qualified Hydra.Paths as Paths
-import qualified Hydra.Query as Query
-import qualified Hydra.Regex as Regex
-import qualified Hydra.Relational as Relational
-import qualified Hydra.System as System
-import qualified Hydra.Tabular as Tabular
-import qualified Hydra.Testing as Testing
-import qualified Hydra.Time as Time
-import qualified Hydra.Topology as Topology
-import qualified Hydra.Typed as Typed
-import qualified Hydra.Typing as Typing
-import qualified Hydra.Util as Util
-import qualified Hydra.Validation as Validation
-import qualified Hydra.Variants as Variants
-import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
-import qualified Data.Scientific as Sci
-import Data.Void
-
--- | Language constraints for W3C SHACL
-shaclLanguage :: Coders.Language
-shaclLanguage =
-    Coders.Language {
-      Coders.languageName = (Coders.LanguageName "hydra.shacl"),
-      Coders.languageConstraints = Coders.LanguageConstraints {
-        Coders.languageConstraintsLiteralVariants = literalVariants,
-        Coders.languageConstraintsFloatTypes = floatTypes,
-        Coders.languageConstraintsIntegerTypes = integerTypes,
-        Coders.languageConstraintsTermVariants = termVariants,
-        Coders.languageConstraintsTypeVariants = typeVariants,
-        Coders.languageConstraintsTypes = typePredicate},
-      Coders.languageSupportedFeatures = (Sets.fromList [
-        Coders.LanguageFeaturePartialApplication,
-        Coders.LanguageFeatureNestedCaseStatements,
-        Coders.LanguageFeatureNestedPolymorphicLetBindings]),
-      Coders.languageCaseConventions = Coders.CaseConventions {
-        Coders.caseConventionsConstant = Util.CaseConventionUpperSnake,
-        Coders.caseConventionsDirectory = Util.CaseConventionLowerSnake,
-        Coders.caseConventionsEnumValue = Util.CaseConventionPascal,
-        Coders.caseConventionsField = Util.CaseConventionCamel,
-        Coders.caseConventionsFile = Util.CaseConventionLowerSnake,
-        Coders.caseConventionsModule = Util.CaseConventionLowerSnake,
-        Coders.caseConventionsTerm = Util.CaseConventionCamel,
-        Coders.caseConventionsTermVariable = Util.CaseConventionCamel,
-        Coders.caseConventionsType = Util.CaseConventionPascal,
-        Coders.caseConventionsTypeVariable = Util.CaseConventionPascal},
-      Coders.languageDefaultFileExtension = (File.FileExtension "ttl")}
-  where
-    literalVariants =
-        Sets.fromList [
-          Variants.LiteralVariantBoolean,
-          Variants.LiteralVariantFloat,
-          Variants.LiteralVariantInteger,
-          Variants.LiteralVariantString]
-    floatTypes =
-        Sets.fromList [
-          Core.FloatTypeFloat32,
-          Core.FloatTypeFloat64]
-    integerTypes =
-        Sets.fromList [
-          Core.IntegerTypeInt32,
-          Core.IntegerTypeInt64]
-    termVariants =
-        Sets.fromList [
-          Variants.TermVariantList,
-          Variants.TermVariantLiteral,
-          Variants.TermVariantMap,
-          Variants.TermVariantWrap,
-          Variants.TermVariantOptional,
-          Variants.TermVariantRecord,
-          Variants.TermVariantSet,
-          Variants.TermVariantInject]
-    typeVariants =
-        Sets.fromList [
-          Variants.TypeVariantAnnotated,
-          Variants.TypeVariantList,
-          Variants.TypeVariantLiteral,
-          Variants.TypeVariantMap,
-          Variants.TypeVariantWrap,
-          Variants.TypeVariantOptional,
-          Variants.TypeVariantRecord,
-          Variants.TypeVariantSet,
-          Variants.TypeVariantUnion]
-    typePredicate = \_ -> True
diff --git a/src/main/haskell/Hydra/Shacl/Model.hs b/src/main/haskell/Hydra/Shacl/Model.hs
deleted file mode 100644
--- a/src/main/haskell/Hydra/Shacl/Model.hs
+++ /dev/null
@@ -1,361 +0,0 @@
--- Note: this is an automatically generated file. Do not edit.
-
--- | A SHACL syntax model. See https://www.w3.org/TR/shacl
-
-module Hydra.Shacl.Model where
-
-import qualified Hydra.Core as Core
-import qualified Hydra.Rdf.Syntax as Syntax
-import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
-import qualified Data.Scientific as Sci
-import Data.Void
-import qualified Data.Set as S
-
--- | A SHACL closed-shape constraint, restricting a node's properties to those explicitly listed or ignored
-data Closed =
-  Closed {
-    closedIsClosed :: Bool,
-    closedIgnoredProperties :: (Maybe (S.Set Syntax.Property))}
-  deriving (Eq, Ord, Read, Show)
-
-_Closed = Core.Name "hydra.shacl.model.Closed"
-
-_Closed_isClosed = Core.Name "isClosed"
-
-_Closed_ignoredProperties = Core.Name "ignoredProperties"
-
--- | Any of a number of constraint parameters which can be applied either to node or property shapes
-data CommonConstraint =
-  -- | See https://www.w3.org/TR/shacl/#AndConstraintComponent
-  CommonConstraintAnd (S.Set (Reference Shape)) |
-  -- | See https://www.w3.org/TR/shacl/#ClosedConstraintComponent
-  CommonConstraintClosed Closed |
-  -- | See https://www.w3.org/TR/shacl/#ClassConstraintComponent
-  CommonConstraintClass (S.Set Syntax.RdfsClass) |
-  -- | See https://www.w3.org/TR/shacl/#DatatypeConstraintComponent
-  CommonConstraintDatatype Syntax.Iri |
-  -- | See https://www.w3.org/TR/shacl/#DisjointConstraintComponent
-  CommonConstraintDisjoint (S.Set Syntax.Property) |
-  -- | See https://www.w3.org/TR/shacl/#EqualsConstraintComponent
-  CommonConstraintEquals (S.Set Syntax.Property) |
-  -- | Specifies the condition that at least one value node is equal to the given RDF term. See https://www.w3.org/TR/shacl/#HasValueConstraintComponent
-  CommonConstraintHasValue (S.Set Syntax.Node) |
-  -- | Specifies the condition that each value node is a member of a provided SHACL list. See https://www.w3.org/TR/shacl/#InConstraintComponent
-  CommonConstraintIn [Syntax.Node] |
-  -- | See https://www.w3.org/TR/shacl/#LanguageInConstraintComponent
-  CommonConstraintLanguageIn (S.Set Syntax.LanguageTag) |
-  -- | See https://www.w3.org/TR/shacl/#NodeKindConstraintComponent
-  CommonConstraintNodeKind NodeKind |
-  -- | See https://www.w3.org/TR/shacl/#NodeConstraintComponent
-  CommonConstraintNode (S.Set (Reference NodeShape)) |
-  -- | See https://www.w3.org/TR/shacl/#NotConstraintComponent
-  CommonConstraintNot (S.Set (Reference Shape)) |
-  -- | See https://www.w3.org/TR/shacl/#MaxExclusiveConstraintComponent
-  CommonConstraintMaxExclusive Syntax.Literal |
-  -- | See https://www.w3.org/TR/shacl/#MaxInclusiveConstraintComponent
-  CommonConstraintMaxInclusive Syntax.Literal |
-  -- | See https://www.w3.org/TR/shacl/#MaxLengthConstraintComponent
-  CommonConstraintMaxLength Integer |
-  -- | See https://www.w3.org/TR/shacl/#MinExclusiveConstraintComponent
-  CommonConstraintMinExclusive Syntax.Literal |
-  -- | See https://www.w3.org/TR/shacl/#MinInclusiveConstraintComponent
-  CommonConstraintMinInclusive Syntax.Literal |
-  -- | See https://www.w3.org/TR/shacl/#MinLengthConstraintComponent
-  CommonConstraintMinLength Integer |
-  -- | See https://www.w3.org/TR/shacl/#PatternConstraintComponent
-  CommonConstraintPattern Pattern |
-  -- | See https://www.w3.org/TR/shacl/#PropertyConstraintComponent
-  CommonConstraintProperty (S.Set (Reference PropertyShape)) |
-  -- | See https://www.w3.org/TR/shacl/#OrConstraintComponent
-  CommonConstraintOr (S.Set (Reference Shape)) |
-  -- | See https://www.w3.org/TR/shacl/#XoneConstraintComponent
-  CommonConstraintXone (S.Set (Reference Shape))
-  deriving (Eq, Ord, Read, Show)
-
-_CommonConstraint = Core.Name "hydra.shacl.model.CommonConstraint"
-
-_CommonConstraint_and = Core.Name "and"
-
-_CommonConstraint_closed = Core.Name "closed"
-
-_CommonConstraint_class = Core.Name "class"
-
-_CommonConstraint_datatype = Core.Name "datatype"
-
-_CommonConstraint_disjoint = Core.Name "disjoint"
-
-_CommonConstraint_equals = Core.Name "equals"
-
-_CommonConstraint_hasValue = Core.Name "hasValue"
-
-_CommonConstraint_in = Core.Name "in"
-
-_CommonConstraint_languageIn = Core.Name "languageIn"
-
-_CommonConstraint_nodeKind = Core.Name "nodeKind"
-
-_CommonConstraint_node = Core.Name "node"
-
-_CommonConstraint_not = Core.Name "not"
-
-_CommonConstraint_maxExclusive = Core.Name "maxExclusive"
-
-_CommonConstraint_maxInclusive = Core.Name "maxInclusive"
-
-_CommonConstraint_maxLength = Core.Name "maxLength"
-
-_CommonConstraint_minExclusive = Core.Name "minExclusive"
-
-_CommonConstraint_minInclusive = Core.Name "minInclusive"
-
-_CommonConstraint_minLength = Core.Name "minLength"
-
-_CommonConstraint_pattern = Core.Name "pattern"
-
-_CommonConstraint_property = Core.Name "property"
-
-_CommonConstraint_or = Core.Name "or"
-
-_CommonConstraint_xone = Core.Name "xone"
-
--- | Common constraint parameters and other properties for SHACL shapes
-data CommonProperties =
-  CommonProperties {
-    -- | Common constraint parameters attached to this shape
-    commonPropertiesConstraints :: (S.Set CommonConstraint),
-    -- | See https://www.w3.org/TR/shacl/#deactivated
-    commonPropertiesDeactivated :: (Maybe Bool),
-    -- | See https://www.w3.org/TR/shacl/#message
-    commonPropertiesMessage :: Syntax.LangStrings,
-    -- | See https://www.w3.org/TR/shacl/#severity
-    commonPropertiesSeverity :: Severity,
-    -- | See https://www.w3.org/TR/shacl/#targetClass
-    commonPropertiesTargetClass :: (S.Set Syntax.RdfsClass),
-    -- | See https://www.w3.org/TR/shacl/#targetNode
-    commonPropertiesTargetNode :: (S.Set Syntax.IriOrLiteral),
-    -- | See https://www.w3.org/TR/shacl/#targetObjectsOf
-    commonPropertiesTargetObjectsOf :: (S.Set Syntax.Property),
-    -- | See https://www.w3.org/TR/shacl/#targetSubjectsOf
-    commonPropertiesTargetSubjectsOf :: (S.Set Syntax.Property)}
-  deriving (Eq, Ord, Read, Show)
-
-_CommonProperties = Core.Name "hydra.shacl.model.CommonProperties"
-
-_CommonProperties_constraints = Core.Name "constraints"
-
-_CommonProperties_deactivated = Core.Name "deactivated"
-
-_CommonProperties_message = Core.Name "message"
-
-_CommonProperties_severity = Core.Name "severity"
-
-_CommonProperties_targetClass = Core.Name "targetClass"
-
-_CommonProperties_targetNode = Core.Name "targetNode"
-
-_CommonProperties_targetObjectsOf = Core.Name "targetObjectsOf"
-
-_CommonProperties_targetSubjectsOf = Core.Name "targetSubjectsOf"
-
--- | An instance of a type like sh:Shape or sh:NodeShape, together with a unique IRI for that instance
-data Definition a =
-  Definition {
-    definitionIri :: Syntax.Iri,
-    definitionTarget :: a}
-  deriving (Eq, Ord, Read, Show)
-
-_Definition = Core.Name "hydra.shacl.model.Definition"
-
-_Definition_iri = Core.Name "iri"
-
-_Definition_target = Core.Name "target"
-
--- | The SHACL node kind of an RDF term
-data NodeKind =
-  -- | A blank node
-  NodeKindBlankNode |
-  -- | An IRI
-  NodeKindIri |
-  -- | A literal
-  NodeKindLiteral |
-  -- | A blank node or an IRI
-  NodeKindBlankNodeOrIri |
-  -- | A blank node or a literal
-  NodeKindBlankNodeOrLiteral |
-  -- | An IRI or a literal
-  NodeKindIriOrLiteral
-  deriving (Eq, Ord, Read, Show)
-
-_NodeKind = Core.Name "hydra.shacl.model.NodeKind"
-
-_NodeKind_blankNode = Core.Name "blankNode"
-
-_NodeKind_iri = Core.Name "iri"
-
-_NodeKind_literal = Core.Name "literal"
-
-_NodeKind_blankNodeOrIri = Core.Name "blankNodeOrIri"
-
-_NodeKind_blankNodeOrLiteral = Core.Name "blankNodeOrLiteral"
-
-_NodeKind_iriOrLiteral = Core.Name "iriOrLiteral"
-
--- | A SHACL node shape. See https://www.w3.org/TR/shacl/#node-shapes
-data NodeShape =
-  NodeShape {
-    nodeShapeCommon :: CommonProperties}
-  deriving (Eq, Ord, Read, Show)
-
-_NodeShape = Core.Name "hydra.shacl.model.NodeShape"
-
-_NodeShape_common = Core.Name "common"
-
--- | A SHACL pattern. See https://www.w3.org/TR/shacl/#PatternConstraintComponent
-data Pattern =
-  Pattern {
-    patternRegex :: String,
-    patternFlags :: (Maybe String)}
-  deriving (Eq, Ord, Read, Show)
-
-_Pattern = Core.Name "hydra.shacl.model.Pattern"
-
-_Pattern_regex = Core.Name "regex"
-
-_Pattern_flags = Core.Name "flags"
-
--- | A SHACL property shape. See https://www.w3.org/TR/shacl/#property-shapes
-data PropertyShape =
-  PropertyShape {
-    propertyShapeCommon :: CommonProperties,
-    -- | Any property shape -specific constraint parameters
-    propertyShapeConstraints :: (S.Set PropertyShapeConstraint),
-    -- | See https://www.w3.org/TR/shacl/#defaultValue
-    propertyShapeDefaultValue :: (Maybe Syntax.Node),
-    -- | See https://www.w3.org/TR/shacl/#name
-    propertyShapeDescription :: Syntax.LangStrings,
-    -- | See https://www.w3.org/TR/shacl/#name
-    propertyShapeName :: Syntax.LangStrings,
-    -- | See https://www.w3.org/TR/shacl/#order
-    propertyShapeOrder :: (Maybe Integer),
-    propertyShapePath :: Syntax.Iri}
-  deriving (Eq, Ord, Read, Show)
-
-_PropertyShape = Core.Name "hydra.shacl.model.PropertyShape"
-
-_PropertyShape_common = Core.Name "common"
-
-_PropertyShape_constraints = Core.Name "constraints"
-
-_PropertyShape_defaultValue = Core.Name "defaultValue"
-
-_PropertyShape_description = Core.Name "description"
-
-_PropertyShape_name = Core.Name "name"
-
-_PropertyShape_order = Core.Name "order"
-
-_PropertyShape_path = Core.Name "path"
-
--- | A number of constraint parameters which are specific to property shapes, and cannot be applied to node shapes
-data PropertyShapeConstraint =
-  -- | See https://www.w3.org/TR/shacl/#LessThanConstraintComponent
-  PropertyShapeConstraintLessThan (S.Set Syntax.Property) |
-  -- | See https://www.w3.org/TR/shacl/#LessThanOrEqualsConstraintComponent
-  PropertyShapeConstraintLessThanOrEquals (S.Set Syntax.Property) |
-  -- | The maximum cardinality. Node shapes cannot have any value for sh:maxCount. See https://www.w3.org/TR/shacl/#MaxCountConstraintComponent
-  PropertyShapeConstraintMaxCount Integer |
-  -- | The minimum cardinality. Node shapes cannot have any value for sh:minCount. See https://www.w3.org/TR/shacl/#MinCountConstraintComponent
-  PropertyShapeConstraintMinCount Integer |
-  -- | See https://www.w3.org/TR/shacl/#UniqueLangConstraintComponent
-  PropertyShapeConstraintUniqueLang Bool |
-  -- | See https://www.w3.org/TR/shacl/#QualifiedValueShapeConstraintComponent
-  PropertyShapeConstraintQualifiedValueShape QualifiedValueShape
-  deriving (Eq, Ord, Read, Show)
-
-_PropertyShapeConstraint = Core.Name "hydra.shacl.model.PropertyShapeConstraint"
-
-_PropertyShapeConstraint_lessThan = Core.Name "lessThan"
-
-_PropertyShapeConstraint_lessThanOrEquals = Core.Name "lessThanOrEquals"
-
-_PropertyShapeConstraint_maxCount = Core.Name "maxCount"
-
-_PropertyShapeConstraint_minCount = Core.Name "minCount"
-
-_PropertyShapeConstraint_uniqueLang = Core.Name "uniqueLang"
-
-_PropertyShapeConstraint_qualifiedValueShape = Core.Name "qualifiedValueShape"
-
--- | A SHACL qualified value shape constraint, requiring a count of values conforming to a given shape
-data QualifiedValueShape =
-  QualifiedValueShape {
-    qualifiedValueShapeQualifiedValueShape :: (Reference Shape),
-    qualifiedValueShapeQualifiedMaxCount :: Integer,
-    qualifiedValueShapeQualifiedMinCount :: Integer,
-    qualifiedValueShapeQualifiedValueShapesDisjoint :: (Maybe Bool)}
-  deriving (Eq, Ord, Read, Show)
-
-_QualifiedValueShape = Core.Name "hydra.shacl.model.QualifiedValueShape"
-
-_QualifiedValueShape_qualifiedValueShape = Core.Name "qualifiedValueShape"
-
-_QualifiedValueShape_qualifiedMaxCount = Core.Name "qualifiedMaxCount"
-
-_QualifiedValueShape_qualifiedMinCount = Core.Name "qualifiedMinCount"
-
-_QualifiedValueShape_qualifiedValueShapesDisjoint = Core.Name "qualifiedValueShapesDisjoint"
-
--- | Either an instance of a type like sh:Shape or sh:NodeShape, or an IRI which refers to an instance of that type
-data Reference a =
-  ReferenceNamed Syntax.Iri |
-  -- | An anonymous instance
-  ReferenceAnonymous a |
-  -- | An inline definition
-  ReferenceDefinition (Definition a)
-  deriving (Eq, Ord, Read, Show)
-
-_Reference = Core.Name "hydra.shacl.model.Reference"
-
-_Reference_named = Core.Name "named"
-
-_Reference_anonymous = Core.Name "anonymous"
-
-_Reference_definition = Core.Name "definition"
-
--- | The severity of a SHACL constraint violation
-data Severity =
-  -- | A non-critical constraint violation indicating an informative message
-  SeverityInfo |
-  -- | A non-critical constraint violation indicating a warning
-  SeverityWarning |
-  -- | A constraint violation
-  SeverityViolation
-  deriving (Eq, Ord, Read, Show)
-
-_Severity = Core.Name "hydra.shacl.model.Severity"
-
-_Severity_info = Core.Name "info"
-
-_Severity_warning = Core.Name "warning"
-
-_Severity_violation = Core.Name "violation"
-
--- | A SHACL node or property shape. See https://www.w3.org/TR/shacl/#shapes
-data Shape =
-  ShapeNode NodeShape |
-  ShapeProperty PropertyShape
-  deriving (Eq, Ord, Read, Show)
-
-_Shape = Core.Name "hydra.shacl.model.Shape"
-
-_Shape_node = Core.Name "node"
-
-_Shape_property = Core.Name "property"
-
--- | An RDF graph containing zero or more shapes that is passed into a SHACL validation process so that a data graph can be validated against the shapes
-newtype ShapesGraph =
-  ShapesGraph {
-    unShapesGraph :: (S.Set (Definition Shape))}
-  deriving (Eq, Ord, Read, Show)
-
-_ShapesGraph = Core.Name "hydra.shacl.model.ShapesGraph"
diff --git a/src/main/haskell/Hydra/Shex/Syntax.hs b/src/main/haskell/Hydra/Shex/Syntax.hs
deleted file mode 100644
--- a/src/main/haskell/Hydra/Shex/Syntax.hs
+++ /dev/null
@@ -1,1746 +0,0 @@
--- 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, lines, map, pure, sum, unlines)
-import qualified Data.Scientific as Sci
-import Data.Void
-
--- | 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"
diff --git a/src/main/haskell/Hydra/Xml/Schema.hs b/src/main/haskell/Hydra/Xml/Schema.hs
deleted file mode 100644
--- a/src/main/haskell/Hydra/Xml/Schema.hs
+++ /dev/null
@@ -1,513 +0,0 @@
--- Note: this is an automatically generated file. Do not edit.
-
--- | A partial XML Schema model, focusing on datatypes. All simple datatypes (i.e. xsd:anySimpleType and below) are included.
--- | See: https://www.w3.org/TR/xmlschema-2
--- | Note: for most of the XML Schema datatype definitions included here, the associated Hydra type is simply
--- |       the string type. Exceptions are made for xsd:boolean and most of the numeric types, where there is a clearly
--- |       corresponding Hydra literal type.
-
-module Hydra.Xml.Schema where
-
-import qualified Hydra.Core as Core
-import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
-import qualified Data.Scientific as Sci
-import Data.Void
-import qualified Data.Int as I
-
--- | The XSD anySimpleType, the base type of all simple (non-list, non-union-composed) XML Schema datatypes
-newtype AnySimpleType =
-  AnySimpleType {
-    unAnySimpleType :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_AnySimpleType = Core.Name "hydra.xml.schema.AnySimpleType"
-
--- | The XSD anyType, the root of the XML Schema type hierarchy
-newtype AnyType =
-  AnyType {
-    unAnyType :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_AnyType = Core.Name "hydra.xml.schema.AnyType"
-
--- | The XSD anyURI datatype: a URI reference
-newtype AnyURI =
-  AnyURI {
-    unAnyURI :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_AnyURI = Core.Name "hydra.xml.schema.AnyURI"
-
--- | The XSD base64Binary datatype: arbitrary binary data encoded as base64
-newtype Base64Binary =
-  Base64Binary {
-    unBase64Binary :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_Base64Binary = Core.Name "hydra.xml.schema.Base64Binary"
-
--- | The XSD boolean datatype: true or false
-newtype Boolean =
-  Boolean {
-    unBoolean :: Bool}
-  deriving (Eq, Ord, Read, Show)
-
-_Boolean = Core.Name "hydra.xml.schema.Boolean"
-
--- | The XSD byte datatype: an 8-bit signed integer
-newtype Byte =
-  Byte {
-    unByte :: I.Int8}
-  deriving (Eq, Ord, Read, Show)
-
-_Byte = Core.Name "hydra.xml.schema.Byte"
-
--- | An XML Schema constraining facet, restricting the value space of a datatype
-newtype ConstrainingFacet =
-  ConstrainingFacet {
-    unConstrainingFacet :: ()}
-  deriving (Eq, Ord, Read, Show)
-
-_ConstrainingFacet = Core.Name "hydra.xml.schema.ConstrainingFacet"
-
--- | The name of a built-in XML Schema datatype
-data Datatype =
-  DatatypeAnySimpleType |
-  DatatypeAnyType |
-  DatatypeAnyURI |
-  DatatypeBase64Binary |
-  DatatypeBoolean |
-  DatatypeByte |
-  DatatypeDate |
-  DatatypeDateTime |
-  DatatypeDecimal |
-  DatatypeDouble |
-  DatatypeDuration |
-  DatatypeENTITIES |
-  DatatypeENTITY |
-  DatatypeFloat |
-  DatatypeGDay |
-  DatatypeGMonth |
-  DatatypeGMonthDay |
-  DatatypeGYear |
-  DatatypeGYearMonth |
-  DatatypeHexBinary |
-  DatatypeID |
-  DatatypeIDREF |
-  DatatypeIDREFS |
-  DatatypeInt |
-  DatatypeInteger |
-  DatatypeLanguage |
-  DatatypeLong |
-  DatatypeNMTOKEN |
-  DatatypeNOTATION |
-  DatatypeName |
-  DatatypeNegativeInteger |
-  DatatypeNonNegativeInteger |
-  DatatypeNonPositiveInteger |
-  DatatypeNormalizedString |
-  DatatypePositiveInteger |
-  DatatypeQName |
-  DatatypeShort |
-  DatatypeString |
-  DatatypeTime |
-  DatatypeToken |
-  DatatypeUnsignedByte |
-  DatatypeUnsignedInt |
-  DatatypeUnsignedLong |
-  DatatypeUnsignedShort
-  deriving (Eq, Ord, Read, Show)
-
-_Datatype = Core.Name "hydra.xml.schema.Datatype"
-
-_Datatype_anySimpleType = Core.Name "anySimpleType"
-
-_Datatype_anyType = Core.Name "anyType"
-
-_Datatype_anyURI = Core.Name "anyURI"
-
-_Datatype_base64Binary = Core.Name "base64Binary"
-
-_Datatype_boolean = Core.Name "boolean"
-
-_Datatype_byte = Core.Name "byte"
-
-_Datatype_date = Core.Name "date"
-
-_Datatype_dateTime = Core.Name "dateTime"
-
-_Datatype_decimal = Core.Name "decimal"
-
-_Datatype_double = Core.Name "double"
-
-_Datatype_duration = Core.Name "duration"
-
-_Datatype_ENTITIES = Core.Name "ENTITIES"
-
-_Datatype_ENTITY = Core.Name "ENTITY"
-
-_Datatype_float = Core.Name "float"
-
-_Datatype_gDay = Core.Name "gDay"
-
-_Datatype_gMonth = Core.Name "gMonth"
-
-_Datatype_gMonthDay = Core.Name "gMonthDay"
-
-_Datatype_gYear = Core.Name "gYear"
-
-_Datatype_gYearMonth = Core.Name "gYearMonth"
-
-_Datatype_hexBinary = Core.Name "hexBinary"
-
-_Datatype_ID = Core.Name "ID"
-
-_Datatype_IDREF = Core.Name "IDREF"
-
-_Datatype_IDREFS = Core.Name "IDREFS"
-
-_Datatype_int = Core.Name "int"
-
-_Datatype_integer = Core.Name "integer"
-
-_Datatype_language = Core.Name "language"
-
-_Datatype_long = Core.Name "long"
-
-_Datatype_NMTOKEN = Core.Name "NMTOKEN"
-
-_Datatype_NOTATION = Core.Name "NOTATION"
-
-_Datatype_name = Core.Name "name"
-
-_Datatype_negativeInteger = Core.Name "negativeInteger"
-
-_Datatype_nonNegativeInteger = Core.Name "nonNegativeInteger"
-
-_Datatype_nonPositiveInteger = Core.Name "nonPositiveInteger"
-
-_Datatype_normalizedString = Core.Name "normalizedString"
-
-_Datatype_positiveInteger = Core.Name "positiveInteger"
-
-_Datatype_qName = Core.Name "qName"
-
-_Datatype_short = Core.Name "short"
-
-_Datatype_string = Core.Name "string"
-
-_Datatype_time = Core.Name "time"
-
-_Datatype_token = Core.Name "token"
-
-_Datatype_unsignedByte = Core.Name "unsignedByte"
-
-_Datatype_unsignedInt = Core.Name "unsignedInt"
-
-_Datatype_unsignedLong = Core.Name "unsignedLong"
-
-_Datatype_unsignedShort = Core.Name "unsignedShort"
-
--- | The XSD date datatype: a calendar date, optionally with a timezone
-newtype Date =
-  Date {
-    unDate :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_Date = Core.Name "hydra.xml.schema.Date"
-
--- | The XSD dateTime datatype: a date and time, optionally with a timezone
-newtype DateTime =
-  DateTime {
-    unDateTime :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_DateTime = Core.Name "hydra.xml.schema.DateTime"
-
--- | The XSD decimal datatype: an arbitrary-precision signed decimal number
-newtype Decimal =
-  Decimal {
-    unDecimal :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_Decimal = Core.Name "hydra.xml.schema.Decimal"
-
--- | The XSD double datatype: an IEEE 754 double-precision floating-point number
-newtype Double_ =
-  Double_ {
-    unDouble :: Double}
-  deriving (Eq, Ord, Read, Show)
-
-_Double = Core.Name "hydra.xml.schema.Double"
-
--- | The XSD duration datatype: a duration of time
-newtype Duration =
-  Duration {
-    unDuration :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_Duration = Core.Name "hydra.xml.schema.Duration"
-
--- | The XSD ENTITIES datatype: a whitespace-separated list of unparsed entity names
-newtype ENTITIES =
-  ENTITIES {
-    unENTITIES :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_ENTITIES = Core.Name "hydra.xml.schema.ENTITIES"
-
--- | The XSD ENTITY datatype: the name of an unparsed entity
-newtype ENTITY =
-  ENTITY {
-    unENTITY :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_ENTITY = Core.Name "hydra.xml.schema.ENTITY"
-
--- | The XSD float datatype: an IEEE 754 single-precision floating-point number
-newtype Float_ =
-  Float_ {
-    unFloat :: Float}
-  deriving (Eq, Ord, Read, Show)
-
-_Float = Core.Name "hydra.xml.schema.Float"
-
--- | The XSD gDay datatype: a day of the month, recurring
-newtype GDay =
-  GDay {
-    unGDay :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_GDay = Core.Name "hydra.xml.schema.GDay"
-
--- | The XSD gMonth datatype: a month of the year, recurring
-newtype GMonth =
-  GMonth {
-    unGMonth :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_GMonth = Core.Name "hydra.xml.schema.GMonth"
-
--- | The XSD gMonthDay datatype: a day of a specific month, recurring yearly
-newtype GMonthDay =
-  GMonthDay {
-    unGMonthDay :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_GMonthDay = Core.Name "hydra.xml.schema.GMonthDay"
-
--- | The XSD gYear datatype: a calendar year
-newtype GYear =
-  GYear {
-    unGYear :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_GYear = Core.Name "hydra.xml.schema.GYear"
-
--- | The XSD gYearMonth datatype: a specific month of a specific year
-newtype GYearMonth =
-  GYearMonth {
-    unGYearMonth :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_GYearMonth = Core.Name "hydra.xml.schema.GYearMonth"
-
--- | The XSD hexBinary datatype: arbitrary binary data encoded as hexadecimal
-newtype HexBinary =
-  HexBinary {
-    unHexBinary :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_HexBinary = Core.Name "hydra.xml.schema.HexBinary"
-
--- | The XSD ID datatype: an XML identifier attribute value, unique within a document
-newtype ID =
-  ID {
-    unID :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_ID = Core.Name "hydra.xml.schema.ID"
-
--- | The XSD IDREF datatype: a reference to an XML ID attribute value
-newtype IDREF =
-  IDREF {
-    unIDREF :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_IDREF = Core.Name "hydra.xml.schema.IDREF"
-
--- | The XSD IDREFS datatype: a whitespace-separated list of IDREF values
-newtype IDREFS =
-  IDREFS {
-    unIDREFS :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_IDREFS = Core.Name "hydra.xml.schema.IDREFS"
-
--- | The XSD int datatype: a 32-bit signed integer
-newtype Int_ =
-  Int_ {
-    unInt :: Int}
-  deriving (Eq, Ord, Read, Show)
-
-_Int = Core.Name "hydra.xml.schema.Int"
-
--- | The XSD integer datatype: an arbitrary-precision signed integer
-newtype Integer_ =
-  Integer_ {
-    unInteger :: Integer}
-  deriving (Eq, Ord, Read, Show)
-
-_Integer = Core.Name "hydra.xml.schema.Integer"
-
--- | The XSD language datatype: an RFC 3066 language tag
-newtype Language =
-  Language {
-    unLanguage :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_Language = Core.Name "hydra.xml.schema.Language"
-
--- | The XSD long datatype: a 64-bit signed integer
-newtype Long =
-  Long {
-    unLong :: I.Int64}
-  deriving (Eq, Ord, Read, Show)
-
-_Long = Core.Name "hydra.xml.schema.Long"
-
--- | The XSD NMTOKEN datatype: an XML name token
-newtype NMTOKEN =
-  NMTOKEN {
-    unNMTOKEN :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_NMTOKEN = Core.Name "hydra.xml.schema.NMTOKEN"
-
--- | The XSD NOTATION datatype: the name of a notation declared in the document's DTD
-newtype NOTATION =
-  NOTATION {
-    unNOTATION :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_NOTATION = Core.Name "hydra.xml.schema.NOTATION"
-
--- | The XSD Name datatype: an XML Name (a token that may not start with a digit)
-newtype Name =
-  Name {
-    unName :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_Name = Core.Name "hydra.xml.schema.Name"
-
--- | The XSD negativeInteger datatype: an arbitrary-precision integer less than zero
-newtype NegativeInteger =
-  NegativeInteger {
-    unNegativeInteger :: Integer}
-  deriving (Eq, Ord, Read, Show)
-
-_NegativeInteger = Core.Name "hydra.xml.schema.NegativeInteger"
-
--- | The XSD nonNegativeInteger datatype: an arbitrary-precision integer greater than or equal to zero
-newtype NonNegativeInteger =
-  NonNegativeInteger {
-    unNonNegativeInteger :: Integer}
-  deriving (Eq, Ord, Read, Show)
-
-_NonNegativeInteger = Core.Name "hydra.xml.schema.NonNegativeInteger"
-
--- | The XSD nonPositiveInteger datatype: an arbitrary-precision integer less than or equal to zero
-newtype NonPositiveInteger =
-  NonPositiveInteger {
-    unNonPositiveInteger :: Integer}
-  deriving (Eq, Ord, Read, Show)
-
-_NonPositiveInteger = Core.Name "hydra.xml.schema.NonPositiveInteger"
-
--- | The XSD normalizedString datatype: a string with no carriage return, line feed, or tab characters
-newtype NormalizedString =
-  NormalizedString {
-    unNormalizedString :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_NormalizedString = Core.Name "hydra.xml.schema.NormalizedString"
-
--- | The XSD positiveInteger datatype: an arbitrary-precision integer greater than zero
-newtype PositiveInteger =
-  PositiveInteger {
-    unPositiveInteger :: Integer}
-  deriving (Eq, Ord, Read, Show)
-
-_PositiveInteger = Core.Name "hydra.xml.schema.PositiveInteger"
-
--- | The XSD QName datatype: a namespace-qualified XML name
-newtype QName =
-  QName {
-    unQName :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_QName = Core.Name "hydra.xml.schema.QName"
-
--- | The XSD short datatype: a 16-bit signed integer
-newtype Short =
-  Short {
-    unShort :: I.Int16}
-  deriving (Eq, Ord, Read, Show)
-
-_Short = Core.Name "hydra.xml.schema.Short"
-
--- | The XSD string datatype: a character string
-newtype String_ =
-  String_ {
-    unString :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_String = Core.Name "hydra.xml.schema.String"
-
--- | The XSD time datatype: a time of day, optionally with a timezone
-newtype Time =
-  Time {
-    unTime :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_Time = Core.Name "hydra.xml.schema.Time"
-
--- | The XSD token datatype: a normalized string with no leading, trailing, or consecutive internal whitespace
-newtype Token =
-  Token {
-    unToken :: String}
-  deriving (Eq, Ord, Read, Show)
-
-_Token = Core.Name "hydra.xml.schema.Token"
-
--- | The XSD unsignedByte datatype: an 8-bit unsigned integer
-newtype UnsignedByte =
-  UnsignedByte {
-    unUnsignedByte :: I.Int16}
-  deriving (Eq, Ord, Read, Show)
-
-_UnsignedByte = Core.Name "hydra.xml.schema.UnsignedByte"
-
--- | The XSD unsignedInt datatype: a 32-bit unsigned integer
-newtype UnsignedInt =
-  UnsignedInt {
-    unUnsignedInt :: I.Int64}
-  deriving (Eq, Ord, Read, Show)
-
-_UnsignedInt = Core.Name "hydra.xml.schema.UnsignedInt"
-
--- | The XSD unsignedLong datatype: a 64-bit unsigned integer
-newtype UnsignedLong =
-  UnsignedLong {
-    unUnsignedLong :: Integer}
-  deriving (Eq, Ord, Read, Show)
-
-_UnsignedLong = Core.Name "hydra.xml.schema.UnsignedLong"
-
--- | The XSD unsignedShort datatype: a 16-bit unsigned integer
-newtype UnsignedShort =
-  UnsignedShort {
-    unUnsignedShort :: Int}
-  deriving (Eq, Ord, Read, Show)
-
-_UnsignedShort = Core.Name "hydra.xml.schema.UnsignedShort"
