project-m36-0.9.0: src/lib/ProjectM36/InclusionDependency.hs
module ProjectM36.InclusionDependency where
import ProjectM36.Base
import ProjectM36.Attribute
import ProjectM36.Error
import ProjectM36.Relation
import qualified Data.Map as M
inclusionDependenciesAsRelation :: InclusionDependencies -> Either RelationalError Relation
inclusionDependenciesAsRelation incDeps =
mkRelationFromList attrs (map incDepAsAtoms (M.toList incDeps))
where
attrs = attributesFromList [Attribute "name" TextAtomType,
Attribute "sub" RelationalExprAtomType,
Attribute "super" RelationalExprAtomType
]
incDepAsAtoms (name, InclusionDependency exprA exprB) = [TextAtom name,
RelationalExprAtom exprA,
RelationalExprAtom exprB]