{- | Module : ./OWL2/ColimSign.hs Description : OWL signatures colimits Copyright : (c) Mihai Codescu, and Uni Bremen 2009 License : GPLv2 or higher, see LICENSE.txt Maintainer : mcodescu@informatik.uni-bremen.de Stability : provisional Portability : non-portable OWL2 signature colimits, computed component-wise. -} module OWL2.ColimSign where import OWL2.Sign import OWL2.Morphism import OWL2.AS import Common.IRI import Common.SetColimit import Common.Lib.Graph import Data.Graph.Inductive.Graph as Graph import qualified Data.Map as Map signColimit :: Gr Sign (Int, OWLMorphism) -> (Sign, Map.Map Int OWLMorphism) signColimit :: Gr Sign (Int, OWLMorphism) -> (Sign, Map Int OWLMorphism) signColimit graph :: Gr Sign (Int, OWLMorphism) graph = let conGraph :: Gr (Set Class) (Int, Map Class Class) conGraph = ((Int, OWLMorphism) -> (Int, Map Class Class)) -> Gr (Set Class) (Int, OWLMorphism) -> Gr (Set Class) (Int, Map Class Class) forall (gr :: * -> * -> *) b c a. DynGraph gr => (b -> c) -> gr a b -> gr a c emap (EntityType -> (Int, OWLMorphism) -> (Int, Map Class Class) getEntityTypeMap EntityType Class) (Gr (Set Class) (Int, OWLMorphism) -> Gr (Set Class) (Int, Map Class Class)) -> Gr (Set Class) (Int, OWLMorphism) -> Gr (Set Class) (Int, Map Class Class) forall a b. (a -> b) -> a -> b $ (Sign -> Set Class) -> Gr Sign (Int, OWLMorphism) -> Gr (Set Class) (Int, OWLMorphism) forall (gr :: * -> * -> *) a c b. DynGraph gr => (a -> c) -> gr a b -> gr c b nmap Sign -> Set Class concepts Gr Sign (Int, OWLMorphism) graph dataGraph :: Gr (Set Class) (Int, Map Class Class) dataGraph = ((Int, OWLMorphism) -> (Int, Map Class Class)) -> Gr (Set Class) (Int, OWLMorphism) -> Gr (Set Class) (Int, Map Class Class) forall (gr :: * -> * -> *) b c a. DynGraph gr => (b -> c) -> gr a b -> gr a c emap (EntityType -> (Int, OWLMorphism) -> (Int, Map Class Class) getEntityTypeMap EntityType Datatype) (Gr (Set Class) (Int, OWLMorphism) -> Gr (Set Class) (Int, Map Class Class)) -> Gr (Set Class) (Int, OWLMorphism) -> Gr (Set Class) (Int, Map Class Class) forall a b. (a -> b) -> a -> b $ (Sign -> Set Class) -> Gr Sign (Int, OWLMorphism) -> Gr (Set Class) (Int, OWLMorphism) forall (gr :: * -> * -> *) a c b. DynGraph gr => (a -> c) -> gr a b -> gr c b nmap Sign -> Set Class datatypes Gr Sign (Int, OWLMorphism) graph indGraph :: Gr (Set Class) (Int, Map Class Class) indGraph = ((Int, OWLMorphism) -> (Int, Map Class Class)) -> Gr (Set Class) (Int, OWLMorphism) -> Gr (Set Class) (Int, Map Class Class) forall (gr :: * -> * -> *) b c a. DynGraph gr => (b -> c) -> gr a b -> gr a c emap (EntityType -> (Int, OWLMorphism) -> (Int, Map Class Class) getEntityTypeMap EntityType NamedIndividual) (Gr (Set Class) (Int, OWLMorphism) -> Gr (Set Class) (Int, Map Class Class)) -> Gr (Set Class) (Int, OWLMorphism) -> Gr (Set Class) (Int, Map Class Class) forall a b. (a -> b) -> a -> b $ (Sign -> Set Class) -> Gr Sign (Int, OWLMorphism) -> Gr (Set Class) (Int, OWLMorphism) forall (gr :: * -> * -> *) a c b. DynGraph gr => (a -> c) -> gr a b -> gr c b nmap Sign -> Set Class individuals Gr Sign (Int, OWLMorphism) graph objGraph :: Gr (Set Class) (Int, Map Class Class) objGraph = ((Int, OWLMorphism) -> (Int, Map Class Class)) -> Gr (Set Class) (Int, OWLMorphism) -> Gr (Set Class) (Int, Map Class Class) forall (gr :: * -> * -> *) b c a. DynGraph gr => (b -> c) -> gr a b -> gr a c emap (EntityType -> (Int, OWLMorphism) -> (Int, Map Class Class) getEntityTypeMap EntityType ObjectProperty) (Gr (Set Class) (Int, OWLMorphism) -> Gr (Set Class) (Int, Map Class Class)) -> Gr (Set Class) (Int, OWLMorphism) -> Gr (Set Class) (Int, Map Class Class) forall a b. (a -> b) -> a -> b $ (Sign -> Set Class) -> Gr Sign (Int, OWLMorphism) -> Gr (Set Class) (Int, OWLMorphism) forall (gr :: * -> * -> *) a c b. DynGraph gr => (a -> c) -> gr a b -> gr c b nmap Sign -> Set Class objectProperties Gr Sign (Int, OWLMorphism) graph dataPropGraph :: Gr (Set Class) (Int, Map Class Class) dataPropGraph = ((Int, OWLMorphism) -> (Int, Map Class Class)) -> Gr (Set Class) (Int, OWLMorphism) -> Gr (Set Class) (Int, Map Class Class) forall (gr :: * -> * -> *) b c a. DynGraph gr => (b -> c) -> gr a b -> gr a c emap (EntityType -> (Int, OWLMorphism) -> (Int, Map Class Class) getEntityTypeMap EntityType DataProperty) (Gr (Set Class) (Int, OWLMorphism) -> Gr (Set Class) (Int, Map Class Class)) -> Gr (Set Class) (Int, OWLMorphism) -> Gr (Set Class) (Int, Map Class Class) forall a b. (a -> b) -> a -> b $ (Sign -> Set Class) -> Gr Sign (Int, OWLMorphism) -> Gr (Set Class) (Int, OWLMorphism) forall (gr :: * -> * -> *) a c b. DynGraph gr => (a -> c) -> gr a b -> gr c b nmap Sign -> Set Class dataProperties Gr Sign (Int, OWLMorphism) graph annPropGraph :: Gr (Set Class) (Int, Map Class Class) annPropGraph = ((Int, OWLMorphism) -> (Int, Map Class Class)) -> Gr (Set Class) (Int, OWLMorphism) -> Gr (Set Class) (Int, Map Class Class) forall (gr :: * -> * -> *) b c a. DynGraph gr => (b -> c) -> gr a b -> gr a c emap (EntityType -> (Int, OWLMorphism) -> (Int, Map Class Class) getEntityTypeMap EntityType AnnotationProperty) (Gr (Set Class) (Int, OWLMorphism) -> Gr (Set Class) (Int, Map Class Class)) -> Gr (Set Class) (Int, OWLMorphism) -> Gr (Set Class) (Int, Map Class Class) forall a b. (a -> b) -> a -> b $ (Sign -> Set Class) -> Gr Sign (Int, OWLMorphism) -> Gr (Set Class) (Int, OWLMorphism) forall (gr :: * -> * -> *) a c b. DynGraph gr => (a -> c) -> gr a b -> gr c b nmap Sign -> Set Class annotationRoles Gr Sign (Int, OWLMorphism) graph _prefixGraph :: Gr (Set Class) (Int, Map Class Class) _prefixGraph = ((Int, OWLMorphism) -> (Int, Map Class Class)) -> Gr (Set Class) (Int, OWLMorphism) -> Gr (Set Class) (Int, Map Class Class) forall (gr :: * -> * -> *) b c a. DynGraph gr => (b -> c) -> gr a b -> gr a c emap (Int, OWLMorphism) -> (Int, Map Class Class) getPrefixMap (Gr (Set Class) (Int, OWLMorphism) -> Gr (Set Class) (Int, Map Class Class)) -> Gr (Set Class) (Int, OWLMorphism) -> Gr (Set Class) (Int, Map Class Class) forall a b. (a -> b) -> a -> b $ (Sign -> Set Class) -> Gr Sign (Int, OWLMorphism) -> Gr (Set Class) (Int, OWLMorphism) forall (gr :: * -> * -> *) a c b. DynGraph gr => (a -> c) -> gr a b -> gr c b nmap (Map Class String -> Set Class forall k a. Map k a -> Set k Map.keysSet (Map Class String -> Set Class) -> (Sign -> Map Class String) -> Sign -> Set Class forall b c a. (b -> c) -> (a -> b) -> a -> c . PrefixMap -> Map Class String toQName (PrefixMap -> Map Class String) -> (Sign -> PrefixMap) -> Sign -> Map Class String forall b c a. (b -> c) -> (a -> b) -> a -> c . Sign -> PrefixMap prefixMap) Gr Sign (Int, OWLMorphism) graph (con :: Set Class con, funC :: Map Int (Map Class Class) funC) = (Set (Class, Int), Map Int (Map Class (Class, Int))) -> (Set Class, Map Int (Map Class Class)) forall a. SymbolName a => (Set (a, Int), Map Int (Map a (a, Int))) -> (Set a, Map Int (Map a a)) addIntToSymbols ((Set (Class, Int), Map Int (Map Class (Class, Int))) -> (Set Class, Map Int (Map Class Class))) -> (Set (Class, Int), Map Int (Map Class (Class, Int))) -> (Set Class, Map Int (Map Class Class)) forall a b. (a -> b) -> a -> b $ Gr (Set Class) (Int, Map Class Class) -> (Set (Class, Int), Map Int (Map Class (Class, Int))) forall a. Ord a => Gr (Set a) (Int, Map a a) -> (Set (a, Int), Map Int (Map a (a, Int))) computeColimitSet Gr (Set Class) (Int, Map Class Class) conGraph (dat :: Set Class dat, funD :: Map Int (Map Class Class) funD) = (Set (Class, Int), Map Int (Map Class (Class, Int))) -> (Set Class, Map Int (Map Class Class)) forall a. SymbolName a => (Set (a, Int), Map Int (Map a (a, Int))) -> (Set a, Map Int (Map a a)) addIntToSymbols ((Set (Class, Int), Map Int (Map Class (Class, Int))) -> (Set Class, Map Int (Map Class Class))) -> (Set (Class, Int), Map Int (Map Class (Class, Int))) -> (Set Class, Map Int (Map Class Class)) forall a b. (a -> b) -> a -> b $ Gr (Set Class) (Int, Map Class Class) -> (Set (Class, Int), Map Int (Map Class (Class, Int))) forall a. Ord a => Gr (Set a) (Int, Map a a) -> (Set (a, Int), Map Int (Map a (a, Int))) computeColimitSet Gr (Set Class) (Int, Map Class Class) dataGraph (ind :: Set Class ind, funI :: Map Int (Map Class Class) funI) = (Set (Class, Int), Map Int (Map Class (Class, Int))) -> (Set Class, Map Int (Map Class Class)) forall a. SymbolName a => (Set (a, Int), Map Int (Map a (a, Int))) -> (Set a, Map Int (Map a a)) addIntToSymbols ((Set (Class, Int), Map Int (Map Class (Class, Int))) -> (Set Class, Map Int (Map Class Class))) -> (Set (Class, Int), Map Int (Map Class (Class, Int))) -> (Set Class, Map Int (Map Class Class)) forall a b. (a -> b) -> a -> b $ Gr (Set Class) (Int, Map Class Class) -> (Set (Class, Int), Map Int (Map Class (Class, Int))) forall a. Ord a => Gr (Set a) (Int, Map a a) -> (Set (a, Int), Map Int (Map a (a, Int))) computeColimitSet Gr (Set Class) (Int, Map Class Class) indGraph (obj :: Set Class obj, funO :: Map Int (Map Class Class) funO) = (Set (Class, Int), Map Int (Map Class (Class, Int))) -> (Set Class, Map Int (Map Class Class)) forall a. SymbolName a => (Set (a, Int), Map Int (Map a (a, Int))) -> (Set a, Map Int (Map a a)) addIntToSymbols ((Set (Class, Int), Map Int (Map Class (Class, Int))) -> (Set Class, Map Int (Map Class Class))) -> (Set (Class, Int), Map Int (Map Class (Class, Int))) -> (Set Class, Map Int (Map Class Class)) forall a b. (a -> b) -> a -> b $ Gr (Set Class) (Int, Map Class Class) -> (Set (Class, Int), Map Int (Map Class (Class, Int))) forall a. Ord a => Gr (Set a) (Int, Map a a) -> (Set (a, Int), Map Int (Map a (a, Int))) computeColimitSet Gr (Set Class) (Int, Map Class Class) objGraph (dp :: Set Class dp, funDP :: Map Int (Map Class Class) funDP) = (Set (Class, Int), Map Int (Map Class (Class, Int))) -> (Set Class, Map Int (Map Class Class)) forall a. SymbolName a => (Set (a, Int), Map Int (Map a (a, Int))) -> (Set a, Map Int (Map a a)) addIntToSymbols ((Set (Class, Int), Map Int (Map Class (Class, Int))) -> (Set Class, Map Int (Map Class Class))) -> (Set (Class, Int), Map Int (Map Class (Class, Int))) -> (Set Class, Map Int (Map Class Class)) forall a b. (a -> b) -> a -> b $ Gr (Set Class) (Int, Map Class Class) -> (Set (Class, Int), Map Int (Map Class (Class, Int))) forall a. Ord a => Gr (Set a) (Int, Map a a) -> (Set (a, Int), Map Int (Map a (a, Int))) computeColimitSet Gr (Set Class) (Int, Map Class Class) dataPropGraph (ap :: Set Class ap, funAP :: Map Int (Map Class Class) funAP) = (Set (Class, Int), Map Int (Map Class (Class, Int))) -> (Set Class, Map Int (Map Class Class)) forall a. SymbolName a => (Set (a, Int), Map Int (Map a (a, Int))) -> (Set a, Map Int (Map a a)) addIntToSymbols ((Set (Class, Int), Map Int (Map Class (Class, Int))) -> (Set Class, Map Int (Map Class Class))) -> (Set (Class, Int), Map Int (Map Class (Class, Int))) -> (Set Class, Map Int (Map Class Class)) forall a b. (a -> b) -> a -> b $ Gr (Set Class) (Int, Map Class Class) -> (Set (Class, Int), Map Int (Map Class (Class, Int))) forall a. Ord a => Gr (Set a) (Int, Map a a) -> (Set (a, Int), Map Int (Map a (a, Int))) computeColimitSet Gr (Set Class) (Int, Map Class Class) annPropGraph -- (pf, funP) = addIntToSymbols $ computeColimitSet prefixGraph morFun :: Int -> Map Entity Class morFun i :: Int i = (Map Entity Class -> Map Entity Class -> Map Entity Class) -> Map Entity Class -> [Map Entity Class] -> Map Entity Class forall (t :: * -> *) b a. Foldable t => (b -> a -> b) -> b -> t a -> b foldl Map Entity Class -> Map Entity Class -> Map Entity Class forall k a. Ord k => Map k a -> Map k a -> Map k a Map.union Map Entity Class forall k a. Map k a Map.empty [ EntityType -> Map Class Class -> Map Entity Class setEntityTypeMap EntityType Class (Map Class Class -> Map Entity Class) -> Map Class Class -> Map Entity Class forall a b. (a -> b) -> a -> b $ Map Class Class -> Int -> Map Int (Map Class Class) -> Map Class Class forall k a. Ord k => a -> k -> Map k a -> a Map.findWithDefault (String -> Map Class Class forall a. HasCallStack => String -> a error "maps") Int i Map Int (Map Class Class) funC, EntityType -> Map Class Class -> Map Entity Class setEntityTypeMap EntityType Datatype (Map Class Class -> Map Entity Class) -> Map Class Class -> Map Entity Class forall a b. (a -> b) -> a -> b $ Map Class Class -> Int -> Map Int (Map Class Class) -> Map Class Class forall k a. Ord k => a -> k -> Map k a -> a Map.findWithDefault (String -> Map Class Class forall a. HasCallStack => String -> a error "maps") Int i Map Int (Map Class Class) funD, EntityType -> Map Class Class -> Map Entity Class setEntityTypeMap EntityType NamedIndividual (Map Class Class -> Map Entity Class) -> Map Class Class -> Map Entity Class forall a b. (a -> b) -> a -> b $ Map Class Class -> Int -> Map Int (Map Class Class) -> Map Class Class forall k a. Ord k => a -> k -> Map k a -> a Map.findWithDefault (String -> Map Class Class forall a. HasCallStack => String -> a error "maps") Int i Map Int (Map Class Class) funI, EntityType -> Map Class Class -> Map Entity Class setEntityTypeMap EntityType ObjectProperty (Map Class Class -> Map Entity Class) -> Map Class Class -> Map Entity Class forall a b. (a -> b) -> a -> b $ Map Class Class -> Int -> Map Int (Map Class Class) -> Map Class Class forall k a. Ord k => a -> k -> Map k a -> a Map.findWithDefault (String -> Map Class Class forall a. HasCallStack => String -> a error "maps") Int i Map Int (Map Class Class) funO, EntityType -> Map Class Class -> Map Entity Class setEntityTypeMap EntityType DataProperty (Map Class Class -> Map Entity Class) -> Map Class Class -> Map Entity Class forall a b. (a -> b) -> a -> b $ Map Class Class -> Int -> Map Int (Map Class Class) -> Map Class Class forall k a. Ord k => a -> k -> Map k a -> a Map.findWithDefault (String -> Map Class Class forall a. HasCallStack => String -> a error "maps") Int i Map Int (Map Class Class) funDP, EntityType -> Map Class Class -> Map Entity Class setEntityTypeMap EntityType AnnotationProperty (Map Class Class -> Map Entity Class) -> Map Class Class -> Map Entity Class forall a b. (a -> b) -> a -> b $ Map Class Class -> Int -> Map Int (Map Class Class) -> Map Class Class forall k a. Ord k => a -> k -> Map k a -> a Map.findWithDefault (String -> Map Class Class forall a. HasCallStack => String -> a error "maps") Int i Map Int (Map Class Class) funAP ] morMaps :: Map Int (Map Entity Class) morMaps = [(Int, Map Entity Class)] -> Map Int (Map Entity Class) forall k a. Eq k => [(k, a)] -> Map k a Map.fromAscList ([(Int, Map Entity Class)] -> Map Int (Map Entity Class)) -> [(Int, Map Entity Class)] -> Map Int (Map Entity Class) forall a b. (a -> b) -> a -> b $ (Int -> (Int, Map Entity Class)) -> [Int] -> [(Int, Map Entity Class)] forall a b. (a -> b) -> [a] -> [b] map (\ x :: Int x -> (Int x, Int -> Map Entity Class morFun Int x)) ([Int] -> [(Int, Map Entity Class)]) -> [Int] -> [(Int, Map Entity Class)] forall a b. (a -> b) -> a -> b $ Gr Sign (Int, OWLMorphism) -> [Int] forall (gr :: * -> * -> *) a b. Graph gr => gr a b -> [Int] nodes Gr Sign (Int, OWLMorphism) graph nameMap :: PrefixMap nameMap = (PrefixMap -> PrefixMap -> PrefixMap) -> PrefixMap -> [PrefixMap] -> PrefixMap forall (t :: * -> *) b a. Foldable t => (b -> a -> b) -> b -> t a -> b foldl PrefixMap -> PrefixMap -> PrefixMap forall k a. Ord k => Map k a -> Map k a -> Map k a Map.union PrefixMap forall k a. Map k a Map.empty ([PrefixMap] -> PrefixMap) -> [PrefixMap] -> PrefixMap forall a b. (a -> b) -> a -> b $ ((Int, Sign) -> PrefixMap) -> [(Int, Sign)] -> [PrefixMap] forall a b. (a -> b) -> [a] -> [b] map (\ (_, l :: Sign l) -> Sign -> PrefixMap prefixMap Sign l) ([(Int, Sign)] -> [PrefixMap]) -> [(Int, Sign)] -> [PrefixMap] forall a b. (a -> b) -> a -> b $ Gr Sign (Int, OWLMorphism) -> [(Int, Sign)] forall (gr :: * -> * -> *) a b. Graph gr => gr a b -> [LNode a] labNodes Gr Sign (Int, OWLMorphism) graph colimSign :: Sign colimSign = Sign emptySign { concepts :: Set Class concepts = Set Class con, datatypes :: Set Class datatypes = Set Class dat, objectProperties :: Set Class objectProperties = Set Class obj, dataProperties :: Set Class dataProperties = Set Class dp, individuals :: Set Class individuals = Set Class ind, annotationRoles :: Set Class annotationRoles = Set Class ap, prefixMap :: PrefixMap prefixMap = PrefixMap nameMap } colimMor :: Map Int OWLMorphism colimMor = [(Int, OWLMorphism)] -> Map Int OWLMorphism forall k a. Eq k => [(k, a)] -> Map k a Map.fromAscList ([(Int, OWLMorphism)] -> Map Int OWLMorphism) -> [(Int, OWLMorphism)] -> Map Int OWLMorphism forall a b. (a -> b) -> a -> b $ ((Int, Sign) -> (Int, OWLMorphism)) -> [(Int, Sign)] -> [(Int, OWLMorphism)] forall a b. (a -> b) -> [a] -> [b] map (\ (i :: Int i, ssig :: Sign ssig) -> let mm :: Map Entity Class mm = Map Entity Class -> Int -> Map Int (Map Entity Class) -> Map Entity Class forall k a. Ord k => a -> k -> Map k a -> a Map.findWithDefault (String -> Map Entity Class forall a. HasCallStack => String -> a error "mor") Int i Map Int (Map Entity Class) morMaps om :: OWLMorphism om = OWLMorphism :: Sign -> Sign -> Map Entity Class -> PrefixMap -> OWLMorphism OWLMorphism { osource :: Sign osource = Sign ssig, otarget :: Sign otarget = Sign colimSign, mmaps :: Map Entity Class mmaps = Map Entity Class mm, pmap :: PrefixMap pmap = PrefixMap forall k a. Map k a Map.empty } in (Int i, OWLMorphism om) ) ([(Int, Sign)] -> [(Int, OWLMorphism)]) -> [(Int, Sign)] -> [(Int, OWLMorphism)] forall a b. (a -> b) -> a -> b $ Gr Sign (Int, OWLMorphism) -> [(Int, Sign)] forall (gr :: * -> * -> *) a b. Graph gr => gr a b -> [LNode a] labNodes Gr Sign (Int, OWLMorphism) graph in (Sign colimSign, Map Int OWLMorphism colimMor) getEntityTypeMap :: EntityType -> (Int, OWLMorphism) -> (Int, Map.Map IRI IRI) getEntityTypeMap :: EntityType -> (Int, OWLMorphism) -> (Int, Map Class Class) getEntityTypeMap e :: EntityType e (i :: Int i, phi :: OWLMorphism phi) = let f :: Map Entity Class f = (Entity -> Class -> Bool) -> Map Entity Class -> Map Entity Class forall k a. (k -> a -> Bool) -> Map k a -> Map k a Map.filterWithKey (\ (Entity _ x :: EntityType x _) _ -> EntityType x EntityType -> EntityType -> Bool forall a. Eq a => a -> a -> Bool == EntityType e) (Map Entity Class -> Map Entity Class) -> Map Entity Class -> Map Entity Class forall a b. (a -> b) -> a -> b $ OWLMorphism -> Map Entity Class mmaps OWLMorphism phi in (Int i, [(Class, Class)] -> Map Class Class forall k a. Ord k => [(k, a)] -> Map k a Map.fromList ([(Class, Class)] -> Map Class Class) -> [(Class, Class)] -> Map Class Class forall a b. (a -> b) -> a -> b $ ((Entity, Class) -> (Class, Class)) -> [(Entity, Class)] -> [(Class, Class)] forall a b. (a -> b) -> [a] -> [b] map (\ (Entity _ _ x :: Class x, y :: Class y) -> (Class x, Class y)) ([(Entity, Class)] -> [(Class, Class)]) -> [(Entity, Class)] -> [(Class, Class)] forall a b. (a -> b) -> a -> b $ Map Entity Class -> [(Entity, Class)] forall k a. Map k a -> [(k, a)] Map.toAscList Map Entity Class f) setEntityTypeMap :: EntityType -> Map.Map IRI IRI -> Map.Map Entity IRI setEntityTypeMap :: EntityType -> Map Class Class -> Map Entity Class setEntityTypeMap = (Class -> Entity) -> Map Class Class -> Map Entity Class forall k2 k1 a. Ord k2 => (k1 -> k2) -> Map k1 a -> Map k2 a Map.mapKeys ((Class -> Entity) -> Map Class Class -> Map Entity Class) -> (EntityType -> Class -> Entity) -> EntityType -> Map Class Class -> Map Entity Class forall b c a. (b -> c) -> (a -> b) -> a -> c . EntityType -> Class -> Entity mkEntity getPrefixMap :: (Int, OWLMorphism) -> (Int, Map.Map IRI IRI) getPrefixMap :: (Int, OWLMorphism) -> (Int, Map Class Class) getPrefixMap (i :: Int i, phi :: OWLMorphism phi) = let f :: PrefixMap f = OWLMorphism -> PrefixMap pmap OWLMorphism phi in (Int i, [(Class, Class)] -> Map Class Class forall k a. Ord k => [(k, a)] -> Map k a Map.fromList ([(Class, Class)] -> Map Class Class) -> [(Class, Class)] -> Map Class Class forall a b. (a -> b) -> a -> b $ ((String, String) -> (Class, Class)) -> [(String, String)] -> [(Class, Class)] forall a b. (a -> b) -> [a] -> [b] map (\ (x :: String x, y :: String y) -> (String -> Class mkIRI String x, String -> Class mkIRI String y)) ([(String, String)] -> [(Class, Class)]) -> [(String, String)] -> [(Class, Class)] forall a b. (a -> b) -> a -> b $ PrefixMap -> [(String, String)] forall k a. Map k a -> [(k, a)] Map.toAscList PrefixMap f) toQName :: PrefixMap -> Map.Map IRI String toQName :: PrefixMap -> Map Class String toQName pm :: PrefixMap pm = [(Class, String)] -> Map Class String forall k a. Ord k => [(k, a)] -> Map k a Map.fromList ([(Class, String)] -> Map Class String) -> [(Class, String)] -> Map Class String forall a b. (a -> b) -> a -> b $ ((String, String) -> (Class, String)) -> [(String, String)] -> [(Class, String)] forall a b. (a -> b) -> [a] -> [b] map (\ (p :: String p, s :: String s) -> (String -> Class mkIRI String p, String s)) ([(String, String)] -> [(Class, String)]) -> [(String, String)] -> [(Class, String)] forall a b. (a -> b) -> a -> b $ PrefixMap -> [(String, String)] forall k a. Map k a -> [(k, a)] Map.toList PrefixMap pm