e9458b1a7a19a63aa4c179f9ab20f4d50681c168Jens ElknerDescription : Convert OWL2 ontology to Medusa data structure
de6a40dbdd4712e5a9398b8519a59b1eaeab2f5aChristian MaederCopyright : (c) Till Mossakowski, Uni Magdeburg 2016
6d9f68d2b5fafea0b5e0fc59a1d557174e032c02Christian MaederLicense : GPLv2 or higher, see LICENSE.txt
6d9f68d2b5fafea0b5e0fc59a1d557174e032c02Christian MaederMaintainer : till@iws.cs.ovgu.de
3f69b6948966979163bdfe8331c38833d5d90ecdChristian MaederStability : provisional
6d9f68d2b5fafea0b5e0fc59a1d557174e032c02Christian MaederPortability : portable
6d9f68d2b5fafea0b5e0fc59a1d557174e032c02Christian MaederConvert an OWL2 ontology to Medusa data structure,
f3a94a197960e548ecd6520bb768cb0d547457bbChristian Maedersee https://github.com/ConceptualBlending/monster_render_system
6d9f68d2b5fafea0b5e0fc59a1d557174e032c02Christian Maederimport Common.Id (stringToId)
6d9f68d2b5fafea0b5e0fc59a1d557174e032c02Christian Maederimport qualified Data.Set as Set
6d9f68d2b5fafea0b5e0fc59a1d557174e032c02Christian Maederdata Medusa = Medusa {
6d9f68d2b5fafea0b5e0fc59a1d557174e032c02Christian Maeder indivs :: Set.Set (IRI, IRI),
6d9f68d2b5fafea0b5e0fc59a1d557174e032c02Christian Maeder relations :: Set.Set (IRI, IRI, IRI, IRI)}
616b72452ce5a75ade1a11ccc2c9671b3444558eChristian Maeder-- | given an OWL ontology (iri and theory), compute the medusa data
6d9f68d2b5fafea0b5e0fc59a1d557174e032c02Christian Maedermedusa :: IRI.IRI -> (Sign, [Named Axiom])
6d9f68d2b5fafea0b5e0fc59a1d557174e032c02Christian Maeder -> Result Medusa
7c2d602a73afe304ac0ca225ecff42b2ae8bdab3Christian Maedermedusa _ (sig, nsens) = do
6d9f68d2b5fafea0b5e0fc59a1d557174e032c02Christian Maeder let inds = individuals sig
6d9f68d2b5fafea0b5e0fc59a1d557174e032c02Christian Maeder getC = getClass (map sentence nsens)
7c2d602a73afe304ac0ca225ecff42b2ae8bdab3Christian Maeder getR tInds = getMeetsFacts (map sentence nsens) tInds
6d9f68d2b5fafea0b5e0fc59a1d557174e032c02Christian Maeder allInds = Set.map (\ i -> (i,getC i)) inds
6d9f68d2b5fafea0b5e0fc59a1d557174e032c02Christian Maeder map (getR allInds) $ Set.toList inds
6d9f68d2b5fafea0b5e0fc59a1d557174e032c02Christian Maeder Set.map (\(i1, _, i2, _) -> Set.fromList [i1, i2]) relTuples
bba825b39570777866d560bfde3807731131097eKlaus Luettich return $ Medusa {
578b677874296e4ba48e57b5e4b4b0270d995603Christian Maeder indivs = Set.filter (\(i,_) -> Set.member i images) allInds ,
578b677874296e4ba48e57b5e4b4b0270d995603Christian Maeder relations = relTuples
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von SchroedercheckMapMaybe :: (a -> Maybe b) -> [a] -> Maybe b
getMeetsFacts :: [Axiom] -> Set.Set (IRI, IRI) -> IRI ->
Set.Set (IRI, IRI, IRI, IRI)
Set.fromList $ mapMaybe (getMeetsFactsAux axs tInds n) axs
getMeetsFactsAux :: [Axiom] -> Set.Set (IRI, IRI) -> IRI -> Axiom ->
getFiatBoundaryFacts :: [Axiom] -> Set.Set (IRI, IRI) -> IRI -> IRI ->