Morphism.hs revision 50c62c8c45643f09bcb2f4a99b07bf1d072ecf40
cbff3fcdce5b0377a62fbe74f32e476efbf7ca9cNikolai KondrashovModule : $Header$
cbff3fcdce5b0377a62fbe74f32e476efbf7ca9cNikolai KondrashovDescription : OWL Morphisms
cbff3fcdce5b0377a62fbe74f32e476efbf7ca9cNikolai KondrashovCopyright : (c) Dominik Luecke, 2008, Felix Gabriel Mance, 2011
cbff3fcdce5b0377a62fbe74f32e476efbf7ca9cNikolai KondrashovLicense : GPLv2 or higher, see LICENSE.txt
cbff3fcdce5b0377a62fbe74f32e476efbf7ca9cNikolai KondrashovMaintainer : f.mance@jacobs-university.de
cbff3fcdce5b0377a62fbe74f32e476efbf7ca9cNikolai KondrashovStability : provisional
cbff3fcdce5b0377a62fbe74f32e476efbf7ca9cNikolai KondrashovPortability : portable
cbff3fcdce5b0377a62fbe74f32e476efbf7ca9cNikolai KondrashovMorphisms for OWL
cbff3fcdce5b0377a62fbe74f32e476efbf7ca9cNikolai Kondrashov ( OWLMorphism (..)
cbff3fcdce5b0377a62fbe74f32e476efbf7ca9cNikolai Kondrashov , isOWLInclusion
d8899526551cbfe112e0ecc8280003a8349fc531Nikolai Kondrashov , inclOWLMorphism
d8899526551cbfe112e0ecc8280003a8349fc531Nikolai Kondrashov , cogeneratedSign
d8899526551cbfe112e0ecc8280003a8349fc531Nikolai Kondrashov , generatedSign
cbff3fcdce5b0377a62fbe74f32e476efbf7ca9cNikolai Kondrashov , statSymbItems
cbff3fcdce5b0377a62fbe74f32e476efbf7ca9cNikolai Kondrashov , statSymbMapItems
cbff3fcdce5b0377a62fbe74f32e476efbf7ca9cNikolai Kondrashov , inducedFromMor
900778b5afd0143005cfd40cc67ad5086481f7eeLukas Slebodnikimport Common.Utils (composeMap)
900778b5afd0143005cfd40cc67ad5086481f7eeLukas Slebodnikimport Common.Lib.State (execState)
900778b5afd0143005cfd40cc67ad5086481f7eeLukas Slebodnikimport Common.Lib.MapSet (setToMap)
900778b5afd0143005cfd40cc67ad5086481f7eeLukas Slebodnikimport qualified Data.Map as Map
900778b5afd0143005cfd40cc67ad5086481f7eeLukas Slebodnikimport qualified Data.Set as Set
900778b5afd0143005cfd40cc67ad5086481f7eeLukas Slebodnikdata OWLMorphism = OWLMorphism
, pmap = Map.empty
, mmaps = Map.empty }
isOWLInclusion m = Map.null (pmap m)
&& Map.null (mmaps m) && isSubSign (osource m) (otarget m)
symMap :: MorphMap -> Map.Map Entity Entity
symMap = Map.mapWithKey (\ (Entity ty _) -> Entity ty)
inducedElems = Map.elems . symMap
mapM_ (modEntity Set.insert) $ inducedElems m) s
then if u == v then (m, t) else (m, Map.insert v u t)
inducedFromMor :: Map.Map RawSymb RawSymb -> Sign -> Result OWLMorphism
if Set.member s syms
then return $ if u == v then (m, t) else (Map.insert s u m, t)
(AnUri v, AnUri u) -> case filter (`Set.member` syms)
(foldr (`Map.insert` u) m l, t)
$ Map.toList rm
symMapOf :: OWLMorphism -> Map.Map Entity Entity
symMapOf mor = Map.union (symMap $ mmaps mor) $ setToMap $ symOf $ osource mor
, pretty $ Set.difference (symOf t) $ symOf s ]
let nm = Set.fold (\ s@(Entity ty u) -> let
cogeneratedSign :: Set.Set Entity -> Sign -> Result OWLMorphism
generatedSign :: Set.Set Entity -> Sign -> Result OWLMorphism
generatedSign s sign = cogeneratedSign (Set.difference (symOf sign) s) sign
statSymbMapItems :: [SymbMapItems] -> Result (Map.Map RawSymb RawSymb)
foldM (\ m (s, t) -> case Map.lookup s m of
Nothing -> return $ Map.insert s t m
return $ Map.insert s t m
return $ Map.insert s t m