Morphism.hs revision 2a5b885d9350ec6dd8bc4992ee91d2f68aa592f4
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiuModule : $Header$
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiuDescription : OWL Morphisms
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiuCopyright : (c) Dominik Luecke, 2008
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiuLicense : GPLv2 or higher, see LICENSE.txt
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiuMaintainer : luecke@informatik.uni-bremen.de
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiuStability : provisional
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiuPortability : portable
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiuMorphisms for OWL
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu ( OWLMorphism (..)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , isOWLInclusion
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , inclOWLMorphism
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , cogeneratedSign
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , generatedSign
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , statSymbItems
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , statSymbMapItems
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , inducedFromMor
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiuimport qualified Data.Map as Map
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiuimport qualified Data.Set as Set
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiudata OWLMorphism = OWLMorphism
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu { osource :: Sign
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , otarget :: Sign
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , mmaps :: Map.Map Entity IRI
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu } deriving (Show, Eq, Ord)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiuinclOWLMorphism :: Sign -> Sign -> OWLMorphism
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiuinclOWLMorphism s t = OWLMorphism
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiuisOWLInclusion :: OWLMorphism -> Bool
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiuisOWLInclusion m = Map.null (mmaps m) && isSubSign (osource m) (otarget m)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiusymMap :: Map.Map Entity IRI -> Map.Map Entity Entity
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiusymMap = Map.mapWithKey (\ (Entity ty _) -> Entity ty)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiuinducedElems :: Map.Map Entity IRI -> [Entity]
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiuinducedElems = Map.elems . symMap
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiuinducedSign :: Map.Map Entity IRI -> Sign -> Sign
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiuinducedSign m = execState $ do
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu mapM_ (modEntity Set.delete) $ Map.keys m
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu mapM_ (modEntity Set.insert) $ inducedElems m
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiuinducedFromMor :: Map.Map RawSymb RawSymb -> Sign -> Result OWLMorphism
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiuinducedFromMor rm sig = do
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu let syms = symOf sig
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu mm <- foldM (\ m p -> case p of
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu (ASymbol s@(Entity _ v), ASymbol (Entity _ u)) ->
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu then return $ if u == v then m else Map.insert s u m
9475501a6acf48434052d9e6f4a05ed6681eaaabFrancisc Nicolae Bungiu else fail $ "unknown symbol: " ++ showDoc s "\n" ++ shows sig ""
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu (AnUri v, AnUri u) -> case filter (`Set.member` syms)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu $ map (`Entity` v) entityTypes of
9475501a6acf48434052d9e6f4a05ed6681eaaabFrancisc Nicolae Bungiu [] -> fail $ "unknown symbol: " ++ showDoc v "\n" ++ shows sig ""
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu l -> return $ if u == v then m else foldr (`Map.insert` u) m l
9475501a6acf48434052d9e6f4a05ed6681eaaabFrancisc Nicolae Bungiu _ -> error "OWL2.Morphism.inducedFromMor") Map.empty $ Map.toList rm
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu return OWLMorphism
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu { osource = sig
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , otarget = inducedSign mm sig
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiusymMapOf :: OWLMorphism -> Map.Map Entity Entity
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiusymMapOf mor = Map.union (symMap $ mmaps mor) $ setToMap $ symOf $ osource mor
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiuinstance Pretty OWLMorphism where
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu srcD = specBraces $ space <> pretty s
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu in if isOWLInclusion m then
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu if isSubSign t s then
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu fsep [text "identity morphism over", srcD]
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu [ text "inclusion morphism of"
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , text "extended with"
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , pretty $ Set.difference (symOf t) $ symOf s ]
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu [ pretty $ mmaps m
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu , colon <+> srcD, mapsto <+> specBraces (space <> pretty t) ]
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiulegalMor :: OWLMorphism -> Bool
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiulegalMor m = let mm = mmaps m in
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu Set.isSubsetOf (Map.keysSet mm) (symOf $ osource m)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu && Set.isSubsetOf (Set.fromList $ inducedElems mm) (symOf $ otarget m)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiugetIri :: EntityType -> IRI -> Map.Map Entity IRI -> IRI
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiugetIri ty u = fromMaybe u . Map.lookup (Entity ty u)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiucomposeMor :: OWLMorphism -> OWLMorphism -> Result OWLMorphism
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiucomposeMor m1 m2 =
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu let nm = Set.fold (\ s@(Entity ty u) -> let
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu t = getIri ty u $ mmaps m1
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu r = getIri ty t $ mmaps m2
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu in if r == u then id else Map.insert s r) Map.empty
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu . symOf $ osource m1
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu { otarget = otarget m2
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiucogeneratedSign :: Set.Set Entity -> Sign -> Result OWLMorphism
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiucogeneratedSign s sign =
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu let sig2 = execState (mapM_ (modEntity Set.delete) $ Set.toList s) sign
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu in if isSubSign sig2 sign then return $ inclOWLMorphism sig2 sign else
06acd8a23b2f06e7b2373d53f738cf56c7f03223Francisc Nicolae Bungiu fail "non OWL2 subsignatures for (co)generatedSign"
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiugeneratedSign :: Set.Set Entity -> Sign -> Result OWLMorphism
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiugeneratedSign s sign = cogeneratedSign (Set.difference (symOf sign) s) sign
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiumatchesSym :: Entity -> RawSymb -> Bool
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiumatchesSym e@(Entity _ u) r = case r of
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu ASymbol s -> s == e
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu AnUri s -> s == u
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiustatSymbItems :: [SymbItems] -> [RawSymb]
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiustatSymbItems = concatMap
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu $ \ (SymbItems m us) -> case m of
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu Nothing -> map AnUri us
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu Just ty -> map (ASymbol . Entity ty) us
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiustatSymbMapItems :: [SymbMapItems] -> Result (Map.Map RawSymb RawSymb)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiustatSymbMapItems =
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu foldM (\ m (s, t) -> case Map.lookup s m of
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu Nothing -> return $ Map.insert s t m
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu Just u -> case (u, t) of
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu (AnUri su, ASymbol (Entity _ tu)) | su == tu ->
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu (ASymbol (Entity _ su), AnUri tu) | su == tu ->
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu _ -> if u == t then return m else
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu fail $ "differently mapped symbol: " ++ showDoc s "\nmapped to "
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu ++ showDoc u " and " ++ showDoc t "")
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu . concatMap (\ (SymbMapItems m us) ->
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu let ps = map (\ (u, v) -> (u, fromMaybe u v)) us in
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu Nothing -> map (\ (s, t) -> (AnUri s, AnUri t)) ps
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu Just ty -> let mS = ASymbol . Entity ty in
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu map (\ (s, t) -> (mS s, mS t)) ps)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiumapAnno :: Map.Map Entity IRI -> Annotation -> Annotation
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel MancemapAnno m annt = case annt of
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu Annotation l a e -> Annotation l (getIri AnnotationProperty a m) e
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel MancemapAnnoList :: Map.Map Entity IRI -> Annotations -> Annotations
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel MancemapAnnoList m ans = map (mapAnno m) ans
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiumapSen :: OWLMorphism -> Axiom -> Result Axiom
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel MancemapSen m = return . mapAxiom (mmaps m)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiumapObjExpr :: Map.Map Entity IRI -> ObjectPropertyExpression
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu -> ObjectPropertyExpression
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiumapObjExpr m ope = case ope of
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu ObjectProp u -> ObjectProp $ getIri ObjectProperty u m
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu ObjectInverseOf o -> ObjectInverseOf $ mapObjExpr m o
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiumapDRange :: Map.Map Entity IRI -> DataRange -> DataRange
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiumapDRange m dr = case dr of
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu DataType u l -> DataType (getIri Datatype u m) l
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu DataJunction j l -> DataJunction j (map (mapDRange m) l)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu DataComplementOf d -> DataComplementOf $ mapDRange m d
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu DataOneOf _ -> dr
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiumapDataExpr :: Map.Map Entity IRI -> DataPropertyExpression
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu -> DataPropertyExpression
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiumapDataExpr m dpe = getIri DataProperty dpe m
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiugetClassIri :: IRI -> Map.Map Entity IRI -> IRI
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiugetClassIri = getIri Class
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiugetIndIri :: IRI -> Map.Map Entity IRI -> IRI
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiugetIndIri = getIri NamedIndividual
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiumapCard :: (a -> b) -> (c -> d) -> Cardinality a c -> Cardinality b d
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiumapCard f g (Cardinality ty i a mb) =
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu Cardinality ty i (f a) $ fmap g mb
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiumapDescr :: Map.Map Entity IRI -> ClassExpression -> ClassExpression
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiumapDescr m desc = case desc of
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu Expression u -> Expression $ getClassIri u m
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu ObjectJunction ty ds -> ObjectJunction ty $ map (mapDescr m) ds
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu ObjectComplementOf d -> ObjectComplementOf $ mapDescr m d
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu ObjectOneOf is -> ObjectOneOf $ map (`getIndIri` m) is
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu ObjectValuesFrom ty o d -> ObjectValuesFrom ty (mapObjExpr m o)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu ObjectHasSelf o -> ObjectHasSelf $ mapObjExpr m o
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu ObjectHasValue o i -> ObjectHasValue (mapObjExpr m o) $ getIndIri i m
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu ObjectCardinality c -> ObjectCardinality
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu $ mapCard (mapObjExpr m) (mapDescr m) c
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu DataValuesFrom ty d ds dr -> DataValuesFrom ty (mapDataExpr m d)
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu (map (mapDataExpr m) ds) $ mapDRange m dr
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu DataHasValue d c -> DataHasValue (mapDataExpr m d) c
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu DataCardinality c -> DataCardinality
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu $ mapCard (mapDataExpr m) (mapDRange m) c
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel MancemapFact :: Map.Map Entity IRI -> Fact -> Fact
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel MancemapFact m f = case f of
2713ec15465bd1e643f6310d7048b5a30ad55c83Christian Maeder ObjectPropertyFact pn op i -> ObjectPropertyFact
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel Mance pn (mapObjExpr m op) (i `getIndIri` m)
2713ec15465bd1e643f6310d7048b5a30ad55c83Christian Maeder DataPropertyFact pn dp l -> DataPropertyFact
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel Mance pn (mapDataExpr m dp) l
2713ec15465bd1e643f6310d7048b5a30ad55c83Christian MaedermapAnnList :: Map.Map Entity IRI -> (a -> a) ->
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel Mance AnnotatedList a -> AnnotatedList a
2713ec15465bd1e643f6310d7048b5a30ad55c83Christian MaedermapAnnList m f (AnnotatedList anl) =
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel Mance let ans = map fst anl
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel Mance l = map snd anl
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel Mance in AnnotatedList $ zip (map (mapAnnoList m) ans) (map f l)
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel MancemapLFB :: Map.Map Entity IRI -> ListFrameBit -> ListFrameBit
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel MancemapLFB m lfb = case lfb of
2713ec15465bd1e643f6310d7048b5a30ad55c83Christian Maeder AnnotationBit a -> AnnotationBit
2713ec15465bd1e643f6310d7048b5a30ad55c83Christian Maeder $ mapAnnList m (flip (getIri AnnotationProperty) m) a
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel Mance ObjectBit a -> ObjectBit $ mapAnnList m (mapObjExpr m) a
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel Mance DataBit a -> DataBit $ mapAnnList m (mapDataExpr m) a
2713ec15465bd1e643f6310d7048b5a30ad55c83Christian Maeder IndividualSameOrDifferent a ->
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel Mance IndividualSameOrDifferent $ mapAnnList m (`getIndIri` m) a
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel Mance DataPropRange a -> DataPropRange $ mapAnnList m (mapDRange m) a
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel Mance IndividualFacts a -> IndividualFacts $ mapAnnList m (mapFact m) a
2713ec15465bd1e643f6310d7048b5a30ad55c83Christian Maeder ExpressionBit a -> ExpressionBit $ mapAnnList m (mapDescr m) a
2713ec15465bd1e643f6310d7048b5a30ad55c83Christian Maeder ObjectCharacteristics _ -> lfb
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel MancemapAFB :: Map.Map Entity IRI -> AnnFrameBit -> AnnFrameBit
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel MancemapAFB m afb = case afb of
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel Mance DatatypeBit dr -> DatatypeBit $ mapDRange m dr
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel Mance ClassDisjointUnion ce -> ClassDisjointUnion $ map (mapDescr m) ce
2713ec15465bd1e643f6310d7048b5a30ad55c83Christian Maeder ClassHasKey op dp -> ClassHasKey (map (mapObjExpr m) op)
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel Mance (map (mapDataExpr m) dp)
2713ec15465bd1e643f6310d7048b5a30ad55c83Christian Maeder ObjectSubPropertyChain op -> ObjectSubPropertyChain
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel Mance (map (mapObjExpr m) op)
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel MancemapFB :: Map.Map Entity IRI -> FrameBit -> FrameBit
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel MancemapFB m fb = case fb of
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel Mance ListFrameBit mr lfb -> ListFrameBit mr $ mapLFB m lfb
2713ec15465bd1e643f6310d7048b5a30ad55c83Christian Maeder AnnFrameBit ans afb -> AnnFrameBit (mapAnnoList m ans)
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel Mance $ mapAFB m afb
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel MancemapAxiom :: Map.Map Entity IRI -> Axiom -> Axiom
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel MancemapAxiom m (PlainAxiom eith fb) = case eith of
2713ec15465bd1e643f6310d7048b5a30ad55c83Christian Maeder Right (Entity ty ent) -> PlainAxiom
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel Mance (Right $ Entity ty $ getIri ty ent m) $ mapFB m fb
86f318f607745d1f40cbf87048a13ac1c65100e6Felix Gabriel Mance Left ans -> PlainAxiom (Left $ mapAnnoList m ans) $ mapFB m fb