packages feed

hydra-0.15.0: src/main/haskell/Hydra/Pg/Mapping.hs

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

-- | A model for property graph mapping specifications. See https://github.com/CategoricalData/hydra/wiki/Property-graphs

module Hydra.Pg.Mapping where

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

-- | Configurable annotation keys for property graph mapping specifications
data AnnotationSchema =
  AnnotationSchema {
    annotationSchemaVertexLabel :: String,
    annotationSchemaEdgeLabel :: String,
    annotationSchemaVertexId :: String,
    annotationSchemaEdgeId :: String,
    annotationSchemaPropertyKey :: String,
    annotationSchemaPropertyValue :: String,
    annotationSchemaOutVertex :: String,
    annotationSchemaOutVertexLabel :: String,
    annotationSchemaInVertex :: String,
    annotationSchemaInVertexLabel :: String,
    annotationSchemaOutEdge :: String,
    annotationSchemaOutEdgeLabel :: String,
    annotationSchemaInEdge :: String,
    annotationSchemaInEdgeLabel :: String,
    annotationSchemaIgnore :: String}
  deriving (Eq, Ord, Read, Show)

_AnnotationSchema = Core.Name "hydra.pg.mapping.AnnotationSchema"

_AnnotationSchema_vertexLabel = Core.Name "vertexLabel"

_AnnotationSchema_edgeLabel = Core.Name "edgeLabel"

_AnnotationSchema_vertexId = Core.Name "vertexId"

_AnnotationSchema_edgeId = Core.Name "edgeId"

_AnnotationSchema_propertyKey = Core.Name "propertyKey"

_AnnotationSchema_propertyValue = Core.Name "propertyValue"

_AnnotationSchema_outVertex = Core.Name "outVertex"

_AnnotationSchema_outVertexLabel = Core.Name "outVertexLabel"

_AnnotationSchema_inVertex = Core.Name "inVertex"

_AnnotationSchema_inVertexLabel = Core.Name "inVertexLabel"

_AnnotationSchema_outEdge = Core.Name "outEdge"

_AnnotationSchema_outEdgeLabel = Core.Name "outEdgeLabel"

_AnnotationSchema_inEdge = Core.Name "inEdge"

_AnnotationSchema_inEdgeLabel = Core.Name "inEdgeLabel"

_AnnotationSchema_ignore = Core.Name "ignore"

-- | A mapping specification producing edges of a specified label.
data EdgeSpec =
  EdgeSpec {
    -- | The label of the target edges, which must conform to the edge type associated with that label.
    edgeSpecLabel :: Model.EdgeLabel,
    -- | A specification of the id of each target edge
    edgeSpecId :: ValueSpec,
    -- | A specification of the out-vertex reference of each target edge
    edgeSpecOut :: ValueSpec,
    -- | A specification of the in-vertex reference of each target edge
    edgeSpecIn :: ValueSpec,
    -- | Zero or more property specifications for each target edge
    edgeSpecProperties :: [PropertySpec]}
  deriving (Eq, Ord, Read, Show)

_EdgeSpec = Core.Name "hydra.pg.mapping.EdgeSpec"

_EdgeSpec_label = Core.Name "label"

_EdgeSpec_id = Core.Name "id"

_EdgeSpec_out = Core.Name "out"

_EdgeSpec_in = Core.Name "in"

_EdgeSpec_properties = Core.Name "properties"

-- | Either a vertex specification or an edge specification
data ElementSpec =
  ElementSpecVertex VertexSpec |
  ElementSpecEdge EdgeSpec
  deriving (Eq, Ord, Read, Show)

_ElementSpec = Core.Name "hydra.pg.mapping.ElementSpec"

_ElementSpec_vertex = Core.Name "vertex"

_ElementSpec_edge = Core.Name "edge"

-- | A mapping specification producing properties of a specified key, and values of the appropriate type.
data PropertySpec =
  PropertySpec {
    -- | The key of the target properties
    propertySpecKey :: Model.PropertyKey,
    -- | A specification of the value of each target property, which must conform to the type associated with the property key
    propertySpecValue :: ValueSpec}
  deriving (Eq, Ord, Read, Show)

_PropertySpec = Core.Name "hydra.pg.mapping.PropertySpec"

_PropertySpec_key = Core.Name "key"

_PropertySpec_value = Core.Name "value"

-- | A set of mappings which translates between Hydra terms and annotations, and application-specific property graph types
data Schema s t v =
  Schema {
    schemaVertexIdTypes :: (Coders.Coder Core.Type t),
    schemaVertexIds :: (Coders.Coder Core.Term v),
    schemaEdgeIdTypes :: (Coders.Coder Core.Type t),
    schemaEdgeIds :: (Coders.Coder Core.Term v),
    schemaPropertyTypes :: (Coders.Coder Core.Type t),
    schemaPropertyValues :: (Coders.Coder Core.Term v),
    schemaAnnotations :: AnnotationSchema,
    schemaDefaultVertexId :: v,
    schemaDefaultEdgeId :: v}

_Schema = Core.Name "hydra.pg.mapping.Schema"

_Schema_vertexIdTypes = Core.Name "vertexIdTypes"

_Schema_vertexIds = Core.Name "vertexIds"

_Schema_edgeIdTypes = Core.Name "edgeIdTypes"

_Schema_edgeIds = Core.Name "edgeIds"

_Schema_propertyTypes = Core.Name "propertyTypes"

_Schema_propertyValues = Core.Name "propertyValues"

_Schema_annotations = Core.Name "annotations"

_Schema_defaultVertexId = Core.Name "defaultVertexId"

_Schema_defaultEdgeId = Core.Name "defaultEdgeId"

-- | A mapping specification producing values (usually literal values) whose type is understood in context
data ValueSpec =
  -- | A trivial no-op specification which passes the entire value
  ValueSpecValue  |
  -- | A compact path representing the function, e.g. engine-${engineInfo/model/name}
  ValueSpecPattern String
  deriving (Eq, Ord, Read, Show)

_ValueSpec = Core.Name "hydra.pg.mapping.ValueSpec"

_ValueSpec_value = Core.Name "value"

_ValueSpec_pattern = Core.Name "pattern"

-- | A mapping specification producing vertices of a specified label
data VertexSpec =
  VertexSpec {
    -- | The label of the target vertices, which must conform to the vertex type associated with that label.
    vertexSpecLabel :: Model.VertexLabel,
    -- | A specification of the id of each target vertex
    vertexSpecId :: ValueSpec,
    -- | Zero or more property specifications for each target vertex
    vertexSpecProperties :: [PropertySpec]}
  deriving (Eq, Ord, Read, Show)

_VertexSpec = Core.Name "hydra.pg.mapping.VertexSpec"

_VertexSpec_label = Core.Name "label"

_VertexSpec_id = Core.Name "id"

_VertexSpec_properties = Core.Name "properties"