OWL2CASL.hs revision d29201dd5328b88140ce050100693c501852657d
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder{-# LANGUAGE MultiParamTypeClasses, TypeSynonymInstances #-}
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian MaederModule : $Header$
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian MaederDescription : Comorphism from OWL 1.1 to CASL_Dl
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian MaederCopyright : (c) Uni Bremen 2007
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian MaederLicense : similar to LGPL, see HetCATS/LICENSE.txt
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian MaederMaintainer : luecke@informatik.uni-bremen.de
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian MaederStability : provisional
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian MaederPortability : non-portable (via Logic.Logic)
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maedera not yet implemented comorphism
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maedermodule Comorphisms.OWL2CASL (OWL2CASL(..)) where
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maederimport qualified Data.Set as Set
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maederimport qualified Data.Map as Map
ae59cddaa1f9e2dd031cae95a3ba867b9e8e095dPaolo Torrini-- OWL = domain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maederimport qualified OWL.Sign as OS
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder-- CASL_DL = codomain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maederdata OWL2CASL = OWL2CASL deriving Show
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maederinstance Language OWL2CASL
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maederinstance Comorphism
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder OWL2CASL -- comorphism
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder OWL -- lid domain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder OWLSub -- sublogics domain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder OntologyFile -- Basic spec domain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder Axiom -- sentence domain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder SymbItems -- symbol items domain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder SymbMapItems -- symbol map items domain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder OS.Sign -- signature domain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder OWLMorphism -- morphism domain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder Entity -- symbol domain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder RawSymb -- rawsymbol domain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder ProofTree -- proof tree codomain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder CASL -- lid codomain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder CASL_Sublogics -- sublogics codomain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder CASLBasicSpec -- Basic spec codomain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder CASLFORMULA -- sentence codomain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder SYMB_ITEMS -- symbol items codomain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder SYMB_MAP_ITEMS -- symbol map items codomain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder CASLSign -- signature codomain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder CASLMor -- morphism codomain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder Symbol -- symbol codomain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder RawSymbol -- rawsymbol codomain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder ProofTree -- proof tree domain
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder sourceLogic OWL2CASL = OWL
eaa2614d79ad5ef6a6b9b08c7e6dde46c5ad1fb3Till Mossakowski sourceSublogic OWL2CASL = sl_top
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder targetLogic OWL2CASL = CASL
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder mapSublogic OWL2CASL _ = Just $ cFol
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder { cons_features = emptyMapConsFeature }
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder map_theory OWL2CASL = mapTheory
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder map_morphism OWL2CASL = mapMorphism
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder isInclusionComorphism OWL2CASL = True
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder has_model_expansion OWL2CASL = True
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder-- | Mapping of OWL morphisms to CASL morphisms
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian MaedermapMorphism :: OWLMorphism -> Result CASLMor
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian MaedermapMorphism oMor =
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder cdm <- mapSign $ osource oMor
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder ccd <- mapSign $ otarget oMor
ae59cddaa1f9e2dd031cae95a3ba867b9e8e095dPaolo Torrini let emap = mmaps oMor
ae59cddaa1f9e2dd031cae95a3ba867b9e8e095dPaolo Torrini preds = Map.foldWithKey (\ (Entity ty u1) u2 -> let
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder i1 = uriToId u1
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder i2 = uriToId u2
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder in case ty of
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder OWLClass -> Map.insert (i1, conceptPred) i2
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder ObjectProperty -> Map.insert (i1, objectPropPred) i2
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder DataProperty -> Map.insert (i1, dataPropPred) i2
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder ops = Map.foldWithKey (\ (Entity ty u1) u2 -> case ty of
d5ef5a29a89fa5548f81fcd49fcf0ffda69d45b0Christian Maeder Individual ->
Map.insert (uriToId u1, indiConst) (uriToId u2, Total)
_ -> id) Map.empty emap
predefSorts :: Set.Set SORT
predefSorts = Set.singleton thing
mapSign :: OS.Sign -- ^ OWL signature
cvrt = map uriToId . Set.toList
oPreds = cvrt $ OS.indValuedRoles sig
dPreds = cvrt $ OS.dataValuedRoles sig
aPreds = Map.unions
, opMap = tMp indiConst . cvrt $ OS.individuals sig
dts = Set.map (stringToId . printXSDName) $ datatype sl
mapTheory :: (OS.Sign, [Named Axiom])