Sign.hs revision f3a94a197960e548ecd6520bb768cb0d547457bb
4176N/A{- |
0N/AModule : $Header$
0N/ACopyright : (c) Klaus L�ttich, Uni Bremen 2004
0N/ALicense : similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt
0N/A
0N/AMaintainer : luettich@tzi.de
0N/AStability : provisional
0N/APortability : portable
0N/A
0N/ASignatures for modal logic, as extension of CASL signatures.
0N/A-}
0N/A
0N/Amodule CASL_DL.Sign where
0N/A
0N/Aimport qualified Common.Lib.Map as Map
0N/Aimport Common.Id
0N/Aimport Common.Utils
2362N/A
2362N/Aimport CASL.AS_Basic_CASL
2362N/Aimport CASL_DL.AS_CASL_DL
1178N/A
4176N/Aimport Data.List
0N/Aimport Text.XML.HXT.DOM.XmlTreeTypes (QName)
0N/A
1178N/Adata CASL_DLSign =
0N/A CASL_DLSign { annoProperties :: Map.Map SIMPLE_ID PropertyType
0N/A , annoPopertySens :: [AnnoAppl]
4176N/A } deriving (Show, Eq)
0N/A
0N/Adata PropertyType = AnnoProperty
0N/A | OntoProperty deriving (Show,Eq)
0N/A
0N/Adata AnnoAppl = AnnoAppl SIMPLE_ID Id AnnoLiteral
0N/A deriving (Show,Eq)
0N/A
0N/Adata AnnoLiteral = AL_Term (TERM DL_FORMULA)
0N/A | AL_URI QName
0N/A | AL_Id Id
0N/A deriving (Show,Eq)
0N/A
0N/AemptyCASL_DLSign :: CASL_DLSign
0N/AemptyCASL_DLSign = CASL_DLSign Map.empty []
0N/A
0N/AaddCASL_DLSign :: CASL_DLSign -> CASL_DLSign -> CASL_DLSign
0N/AaddCASL_DLSign a b = a
0N/A { annoProperties =
0N/A Map.unionWithKey (throwAnnoError "CASL_DL.Sign.addCASL_DLSign:")
0N/A (annoProperties a) (annoProperties b)
0N/A , annoPopertySens = union (annoPopertySens a) (annoPopertySens b)
0N/A }
0N/A
0N/AthrowAnnoError :: String -> SIMPLE_ID
0N/A -> PropertyType -> PropertyType -> PropertyType
0N/AthrowAnnoError s k e1 e2 =
0N/A if e1 == e2
1178N/A then e1
0N/A else error (s++" Annotation Properties and Ontology Properties \
0N/A \must have distinct names! ("++show k++")")
0N/A
0N/AdiffCASL_DLSign :: CASL_DLSign -> CASL_DLSign -> CASL_DLSign
0N/AdiffCASL_DLSign a b = a
1178N/A { annoProperties = Map.difference (annoProperties a) (annoProperties b)
1178N/A , annoPopertySens = (annoPopertySens a) \\ (annoPopertySens b)
1178N/A }
0N/A
0N/AisSubCASL_DLSign :: CASL_DLSign -> CASL_DLSign -> Bool
0N/AisSubCASL_DLSign a b =
1178N/A Map.subset (annoProperties a) (annoProperties b) &&
0N/A (annoPopertySens a `isSublistOf` annoPopertySens b)
1178N/A