Taxonomy.hs revision b4fbc96e05117839ca409f5f20f97b3ac872d1ed
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk{- |
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkModule : $Header$
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkCopyright : (c) Klaus L�ttich, Uni Bremen 2002-2004
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkLicence : similar to LGPL, see HetCATS/LICENCE.txt or LIZENZ.txt
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkMaintainer : luettich@tzi.de
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkStability : provisional
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkPortability : portable
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkThis module provides converters for theories ((Sign f e) and [Named (FORMULA f)]) to MMiSSOntology
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk-}
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkmodule CASL.Taxonomy (convTaxo) where
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport qualified Common.Lib.Map as Map
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport qualified Common.Lib.Rel as Rel
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport qualified Common.Lib.Set as Set
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport CASL.AS_Basic_CASL
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport CASL.Sign
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport Taxonomy.MMiSSOntology
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenk
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport Common.Taxonomy
c1350cf5bc50458ba79cc93ff9e0e5fe3f1aeeb0jeff.schenkimport Common.Result
import Common.PrettyPrint
import Common.AS_Annotation
convTaxo :: TaxoGraphKind -> MMiSSOntology
-> Sign f e
-> [Named (FORMULA f)] -> Result MMiSSOntology
convTaxo kind onto sign sens =
fromWithError $
case kind of
KSubsort -> convSign KSubsort onto sign
KConcept -> foldl convSen (convSign KConcept onto sign) sens
convSign :: TaxoGraphKind ->
MMiSSOntology -> Sign f e -> WithError MMiSSOntology
convSign KConcept o s = convSign KSubsort o s
convSign KSubsort onto sign =
Set.fold addSor (hasValue onto) $ sortSet sign
-- Ausgehend von den Top-Sorten -- Rel.mostRight
--Map.foldWithKey addSort (hasValue onto) $ toMap $ sortRel sign
where str x = showPretty x ""
relMap = Rel.toMap $ Rel.intransKernel $ sortRel sign
addSor sort weOnto =
let sortStr = str sort
in weither (const weOnto)
(\ on -> insClass on sortStr
(maybe [] toStrL $
Map.lookup sort relMap))
weOnto
insClass o nm supL =
insertClass o nm nm supL (Just SubSort)
toStrL = Set.fold (\ s rs -> str s : rs) []
convSen :: WithError MMiSSOntology
-> Named (FORMULA f) -> WithError MMiSSOntology
convSen weOnto _nSen = weither (const weOnto) hasValue weOnto
-- insertClass (cSen nSen) o