XMLConversion.hs revision 4c684d7a2343be7350eba088f8be42888f86a495
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian MaederModule : $Header$
e6d40133bc9f858308654afb1262b8b483ec5922Till MossakowskiCopyright : (c) Felix Gabriel Mance
1549f3abf73c1122acff724f718b615c82fa3648Till MossakowskiLicense : GPLv2 or higher, see LICENSE.txt
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian MaederMaintainer : f.mance@jacobs-university.de
3f69b6948966979163bdfe8331c38833d5d90ecdChristian MaederStability : provisional
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian MaederPortability : portable
f3a94a197960e548ecd6520bb768cb0d547457bbChristian MaederConversion from Manchester syntax to XML Syntax
23a00c966f2aa8da525d7a7c51933c99964426c0Christian Maederimport Common.AS_Annotation (Named, sentence)
575a55eadc8dcab8ee350324b417cbd9e52e69c0Christian Maederimport qualified Data.Set as Set
db453fe9625a9dab5d108f7a5e464598814144b8Jian Chun Wangimport qualified Data.Map as Map
8c63cd89ef840cd7a3d3b75f0207dc800388c800Christian MaedershowIRI :: OWL2.AS.QName -> String
575a55eadc8dcab8ee350324b417cbd9e52e69c0Christian MaedershowIRI (QN pre local ty _ _) = case ty of
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder NodeID -> local
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder _ -> pre ++ ":" ++ local
0e2ae85e2453466d03c1fc5884a3d693235bb9d9Christian MaedernullQN = QName "" Nothing Nothing
90c174bac60a72ffd81bc3bf5ae2dd9a61943b8bChristian MaedermakeQN :: String -> Text.XML.Light.QName
2561b4bfc45d280ee2be8a7870314670e4e682e4Christian MaedermakeQN s = nullQN {qName = s}
aea143fff7a50aceb809845fbc42698b0b3f545aChristian MaedersetQNPrefix :: String -> Text.XML.Light.QName -> Text.XML.Light.QName
ca020e82eb3567e7bdbb1cf70729efbd07e9caa4Klaus LuettichsetQNPrefix s qn = qn {qPrefix = Just s}
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian MaedernullElem :: Element
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill MossakowskinullElem = Element nullQN [] [] Nothing
c7e03d0708369f944b6f235057b39142a21599f2Mihai CodescusetIRI :: IRI -> Element -> Element
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian MaedersetIRI iri e =
986d3f255182539098a97ac86da9eeee5b7a72e3Christian Maeder let fan = iriType iri
8e80792f474d154ff11762fac081a422e34f1accChristian Maeder | fan == NodeID = "nodeID"
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder | fan == Full = "IRI"
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder | otherwise = "abbreviatedIRI"
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder in e {elAttribs = [Attr {attrKey = makeQN ty, attrVal = showIRI iri}]}
03136b84a0c70d877e227444f0875e209506b9e4Christian MaedersetName :: String -> Element -> Element
03136b84a0c70d877e227444f0875e209506b9e4Christian MaedersetName s e = e {elName = nullQN {qName = s,
d0c66a832d7b556e20ea4af4852cdc27a5463d51Christian Maeder qURI = Just "http://www.w3.org/2002/07/owl#"} }
9eb39c7a0e7a1ddad1eec1d23c6d4e3a99c54023Christian MaedersetContent :: [Element] -> Element -> Element
9eb39c7a0e7a1ddad1eec1d23c6d4e3a99c54023Christian MaedersetContent cl e = e {elContent = map Elem cl}
9eb39c7a0e7a1ddad1eec1d23c6d4e3a99c54023Christian MaedersetText :: String -> Element -> Element
9eb39c7a0e7a1ddad1eec1d23c6d4e3a99c54023Christian MaedersetText s e = e {elContent = [Text CData {cdVerbatim = CDataText,
9eb39c7a0e7a1ddad1eec1d23c6d4e3a99c54023Christian Maeder cdData = s, cdLine = Nothing}]}
9eb39c7a0e7a1ddad1eec1d23c6d4e3a99c54023Christian MaedersetInt :: Int -> Element -> Element
351145cfe8c03b4d47133c96b209f2bd6cfbf504Christian MaedersetInt i e = e {elAttribs = [Attr {attrKey = makeQN "cardinality",
351145cfe8c03b4d47133c96b209f2bd6cfbf504Christian Maeder attrVal = show i}]}
81101b83a042f5a1bdeeef93b1b49aff05817e44Christian MaedersetDt :: Bool -> IRI -> Element -> Element
81101b83a042f5a1bdeeef93b1b49aff05817e44Christian MaedersetDt b dt e = e {elAttribs = elAttribs e ++ [Attr {attrKey
81101b83a042f5a1bdeeef93b1b49aff05817e44Christian Maeder = makeQN (if b then "datatypeIRI" else "facet"), attrVal = showQU dt}]}
351145cfe8c03b4d47133c96b209f2bd6cfbf504Christian MaedersetLangTag :: Maybe LanguageTag -> Element -> Element
81101b83a042f5a1bdeeef93b1b49aff05817e44Christian MaedersetLangTag ml e = case ml of
81101b83a042f5a1bdeeef93b1b49aff05817e44Christian Maeder Just lt -> e {elAttribs = elAttribs e ++ [Attr {attrKey
81101b83a042f5a1bdeeef93b1b49aff05817e44Christian Maeder = setQNPrefix "xml" (makeQN "lang"), attrVal = lt}]}
351145cfe8c03b4d47133c96b209f2bd6cfbf504Christian MaedermwString :: String -> Element
81101b83a042f5a1bdeeef93b1b49aff05817e44Christian MaedermwString s = setName s nullElem
81101b83a042f5a1bdeeef93b1b49aff05817e44Christian MaedermwIRI :: IRI -> Element
81101b83a042f5a1bdeeef93b1b49aff05817e44Christian MaedermwIRI iri = setIRI iri nullElem
9eb39c7a0e7a1ddad1eec1d23c6d4e3a99c54023Christian MaedermwNameIRI :: String -> IRI -> Element
d0c66a832d7b556e20ea4af4852cdc27a5463d51Christian MaedermwNameIRI s iri = setName s $ mwIRI iri
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian MaedermwText :: String -> Element
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian MaedermwText s = setText s nullElem
4b6aa93c12e4db86ccc7694a48a73e9cf7262d06Christian MaedermwSimpleIRI :: IRI -> Element
4b6aa93c12e4db86ccc7694a48a73e9cf7262d06Christian MaedermwSimpleIRI s = setName (if iriType s /= Abbreviated then iriK
4b6aa93c12e4db86ccc7694a48a73e9cf7262d06Christian Maeder else "AbbreviatedIRI")
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder $ mwText $ showIRI s
03136b84a0c70d877e227444f0875e209506b9e4Christian MaedermakeElement :: String -> [Element] -> Element
4b6aa93c12e4db86ccc7694a48a73e9cf7262d06Christian MaedermakeElement s el = setContent el $ mwString s
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian MaedermakeElementWith1 :: String -> Element -> Element
5e46b572ed576c0494768998b043d9d340594122Till MossakowskimakeElementWith1 s e = setContent [e] $ mwString s
03136b84a0c70d877e227444f0875e209506b9e4Christian Maedermake1 :: Bool -> String -> String -> (String -> IRI -> Element) -> IRI ->
fa167e362877db231378e17ba49c66fbb84862fcChristian Maeder [([Element], Element)] -> [Element]
03136b84a0c70d877e227444f0875e209506b9e4Christian Maedermake1 rl hdr shdr f iri = map (\ (a, b) -> makeElement hdr
4b6aa93c12e4db86ccc7694a48a73e9cf7262d06Christian Maeder $ a ++ (if rl then [f shdr iri, b] else [b, f shdr iri]))
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maedermake2 :: Bool -> String -> (a -> Element) -> a ->
6a22b2854c3bc9cb4877cb7d29049d6559238639Christian Maeder [([Element], Element)] -> [Element]
e01299e9b22b96b31b720ca1e9f9f5f25af9b024Christian Maedermake2 rl hdr f expr = map (\ (x, y) -> makeElement hdr
7a47fbe6b987bd69a5056ce5d00fc8710f6c5e8aChristian Maeder $ x ++ (if rl then [f expr, y] else [y, f expr]))
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian MaederxmlEntity :: Entity -> Element
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill MossakowskixmlEntity (Entity ty ent) = mwNameIRI (case ty of
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski Class -> classK
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski Datatype -> datatypeK
4b6aa93c12e4db86ccc7694a48a73e9cf7262d06Christian Maeder ObjectProperty -> objectPropertyK
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder DataProperty -> dataPropertyK
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder AnnotationProperty -> annotationPropertyK
4b6aa93c12e4db86ccc7694a48a73e9cf7262d06Christian Maeder NamedIndividual -> namedIndividualK) ent
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian MaederxmlLiteral :: Literal -> Element
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian MaederxmlLiteral (Literal lf tu) =
4601edb679f0ba530bbb085b25d82a411cd070aaChristian Maeder let part = setName literalK $ mwText lf
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder in case tu of
26d11a256b1433604a3dbc69913b520fff7586acChristian Maeder Typed dt -> setDt True dt part
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder Untyped lang -> setLangTag lang $ setDt True (mkQName
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder "http://www.w3.org/1999/02/22-rdf-syntax-ns#PlainLiteral")
03136b84a0c70d877e227444f0875e209506b9e4Christian MaederxmlIndividual :: IRI -> Element
03136b84a0c70d877e227444f0875e209506b9e4Christian MaederxmlIndividual iri =
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder mwNameIRI (if isAnonymous iri then anonymousIndividualK
aea143fff7a50aceb809845fbc42698b0b3f545aChristian Maeder else namedIndividualK) iri
aea143fff7a50aceb809845fbc42698b0b3f545aChristian MaederxmlFVPair :: (ConstrainingFacet, RestrictionValue) -> Element
aea143fff7a50aceb809845fbc42698b0b3f545aChristian MaederxmlFVPair (cf, rv) = setDt False cf $ makeElement facetRestrictionK
aea143fff7a50aceb809845fbc42698b0b3f545aChristian Maeder [xmlLiteral rv]
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian MaederxmlObjProp :: ObjectPropertyExpression -> Element
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian MaederxmlObjProp ope = case ope of
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder ObjectProp op -> mwNameIRI objectPropertyK op
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder ObjectInverseOf i -> makeElement objectInverseOfK [xmlObjProp i]
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian MaederxmlDataRange :: DataRange -> Element
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian MaederxmlDataRange dr = case dr of
7a47fbe6b987bd69a5056ce5d00fc8710f6c5e8aChristian Maeder DataType dt cfl ->
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder let dtelem = mwNameIRI datatypeK dt
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder in if null cfl then dtelem
aea143fff7a50aceb809845fbc42698b0b3f545aChristian Maeder else makeElement datatypeRestrictionK
5e46b572ed576c0494768998b043d9d340594122Till Mossakowski $ dtelem : map xmlFVPair cfl
74d9a385499bf903b24848dff450a153f525bda7Christian Maeder DataJunction jt drl -> makeElement (
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder IntersectionOf -> dataIntersectionOfK
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder UnionOf -> dataUnionOfK)
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder $ map xmlDataRange drl
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder DataComplementOf drn -> makeElement dataComplementOfK
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder [xmlDataRange drn]
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder DataOneOf ll -> makeElement dataOneOfK
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder $ map xmlLiteral ll
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian MaederxmlClassExpression :: ClassExpression -> Element
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian MaederxmlClassExpression ce = case ce of
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder Expression c -> mwNameIRI classK c
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder ObjectJunction jt cel -> makeElement (
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder IntersectionOf -> objectIntersectionOfK
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder UnionOf -> objectUnionOfK)
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder $ map xmlClassExpression cel
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder ObjectComplementOf cex -> makeElement objectComplementOfK
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski [xmlClassExpression cex]
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski ObjectOneOf il -> makeElement objectOneOfK
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder $ map xmlIndividual il
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder ObjectValuesFrom qt ope cex -> makeElement (
ee152ae82dc19d6415119c0019ae1bfa991b1f02Christian Maeder AllValuesFrom -> objectAllValuesFromK
ee152ae82dc19d6415119c0019ae1bfa991b1f02Christian Maeder SomeValuesFrom -> objectSomeValuesFromK)
ee152ae82dc19d6415119c0019ae1bfa991b1f02Christian Maeder [xmlObjProp ope, xmlClassExpression cex]
ee152ae82dc19d6415119c0019ae1bfa991b1f02Christian Maeder ObjectHasValue ope i -> makeElement objectHasValueK
ee152ae82dc19d6415119c0019ae1bfa991b1f02Christian Maeder [xmlObjProp ope, xmlIndividual i]
ee152ae82dc19d6415119c0019ae1bfa991b1f02Christian Maeder ObjectHasSelf ope -> makeElement objectHasSelfK [xmlObjProp ope]
ee152ae82dc19d6415119c0019ae1bfa991b1f02Christian Maeder ObjectCardinality (Cardinality ct i op mce) -> setInt i $ makeElement (
ee152ae82dc19d6415119c0019ae1bfa991b1f02Christian Maeder MinCardinality -> objectMinCardinalityK
ee152ae82dc19d6415119c0019ae1bfa991b1f02Christian Maeder MaxCardinality -> objectMaxCardinalityK
ee152ae82dc19d6415119c0019ae1bfa991b1f02Christian Maeder ExactCardinality -> objectExactCardinalityK)
ee152ae82dc19d6415119c0019ae1bfa991b1f02Christian Maeder $ xmlObjProp op :
ee152ae82dc19d6415119c0019ae1bfa991b1f02Christian Maeder Nothing -> []
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder Just cexp -> [xmlClassExpression cexp]
8c63cd89ef840cd7a3d3b75f0207dc800388c800Christian Maeder DataValuesFrom qt dp dr -> makeElement (
8c63cd89ef840cd7a3d3b75f0207dc800388c800Christian Maeder AllValuesFrom -> dataAllValuesFromK
8c63cd89ef840cd7a3d3b75f0207dc800388c800Christian Maeder SomeValuesFrom -> dataSomeValuesFromK)
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski [mwNameIRI dataPropertyK dp, xmlDataRange dr]
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder DataHasValue dp l -> makeElement dataHasValueK
ab642ff136ce716af9e609b667e3f06d766c4ad7Christian Maeder [mwNameIRI dataPropertyK dp, xmlLiteral l]
99476ac2689c74251219db4782e57fe713a24a52Christian Maeder DataCardinality (Cardinality ct i dp mdr) -> setInt i $ makeElement (
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder MinCardinality -> dataMinCardinalityK
99476ac2689c74251219db4782e57fe713a24a52Christian Maeder MaxCardinality -> dataMaxCardinalityK
99476ac2689c74251219db4782e57fe713a24a52Christian Maeder ExactCardinality -> dataExactCardinalityK)
99476ac2689c74251219db4782e57fe713a24a52Christian Maeder $ mwNameIRI dataPropertyK dp :
99476ac2689c74251219db4782e57fe713a24a52Christian Maeder Nothing -> []
99476ac2689c74251219db4782e57fe713a24a52Christian Maeder Just dr -> [xmlDataRange dr]
ee152ae82dc19d6415119c0019ae1bfa991b1f02Christian MaederxmlAnnotation :: Annotation -> Element
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian MaederxmlAnnotation (Annotation al ap av) = makeElement annotationK
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder $ map xmlAnnotation al ++ [mwNameIRI annotationPropertyK ap,
88124ca824f94153b0a2a24ea1e4b089fff7011fChristian Maeder AnnValue iri -> xmlSubject iri
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder AnnValLit l -> xmlLiteral l]
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian MaederxmlSubject :: IRI -> Element
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian MaederxmlSubject iri = if isAnonymous iri then xmlIndividual iri
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder else mwSimpleIRI iri
88124ca824f94153b0a2a24ea1e4b089fff7011fChristian MaederxmlAnnotations :: Annotations -> [Element]
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian MaederxmlAnnotations = map xmlAnnotation
88124ca824f94153b0a2a24ea1e4b089fff7011fChristian MaederxmlAL :: (a -> Element) -> AnnotatedList a -> [([Element], Element)]
88124ca824f94153b0a2a24ea1e4b089fff7011fChristian MaederxmlAL f al = let annos = map (xmlAnnotations . fst) al
88124ca824f94153b0a2a24ea1e4b089fff7011fChristian Maeder other = map (\ (_, b) -> f b) al
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder in zip annos other
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian MaederxmlLFB :: Extended -> Maybe Relation -> ListFrameBit -> [Element]
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian MaederxmlLFB ext mr lfb = case lfb of
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder AnnotationBit al ->
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder let list = xmlAL mwSimpleIRI al
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder SimpleEntity (Entity _ ap) = ext
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder in case fromMaybe (error "expected domain, range, subproperty") mr of
8c63cd89ef840cd7a3d3b75f0207dc800388c800Christian Maeder SubPropertyOf ->
8c63cd89ef840cd7a3d3b75f0207dc800388c800Christian Maeder let list2 = xmlAL (mwNameIRI annotationPropertyK) al
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder in make1 True subAnnotationPropertyOfK annotationPropertyK
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski mwNameIRI ap list2
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder DRRelation ADomain -> make1 True annotationPropertyDomainK
ee152ae82dc19d6415119c0019ae1bfa991b1f02Christian Maeder annotationPropertyK mwNameIRI ap list
ee152ae82dc19d6415119c0019ae1bfa991b1f02Christian Maeder DRRelation ARange -> make1 True annotationPropertyRangeK
ee152ae82dc19d6415119c0019ae1bfa991b1f02Christian Maeder annotationPropertyK mwNameIRI ap list
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder _ -> error "bad annotation bit"
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski ExpressionBit al ->
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski let list = xmlAL xmlClassExpression al in case ext of
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder Misc anno -> [makeElement (case fromMaybe
aea143fff7a50aceb809845fbc42698b0b3f545aChristian Maeder (error "expected equiv--, disjoint--, class") mr of
575a55eadc8dcab8ee350324b417cbd9e52e69c0Christian Maeder EDRelation Equivalent -> equivalentClassesK
575a55eadc8dcab8ee350324b417cbd9e52e69c0Christian Maeder EDRelation Disjoint -> disjointClassesK
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder _ -> error "bad equiv or disjoint classes bit"
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder ) $ xmlAnnotations anno ++ map snd list]
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder ClassEntity c -> make2 True (case fromMaybe
e01299e9b22b96b31b720ca1e9f9f5f25af9b024Christian Maeder (error "expected equiv--, disjoint--, sub-- class") mr of
e01299e9b22b96b31b720ca1e9f9f5f25af9b024Christian Maeder SubClass -> subClassOfK
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder EDRelation Equivalent -> equivalentClassesK
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder EDRelation Disjoint -> disjointClassesK
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder _ -> error "bad equiv, disjoint, subClass bit")
e01299e9b22b96b31b720ca1e9f9f5f25af9b024Christian Maeder xmlClassExpression c list
99476ac2689c74251219db4782e57fe713a24a52Christian Maeder ObjectEntity op -> make2 True (case fromMaybe
99476ac2689c74251219db4782e57fe713a24a52Christian Maeder (error "expected domain, range") mr of
99476ac2689c74251219db4782e57fe713a24a52Christian Maeder DRRelation ADomain -> objectPropertyDomainK
99476ac2689c74251219db4782e57fe713a24a52Christian Maeder DRRelation ARange -> objectPropertyRangeK
99476ac2689c74251219db4782e57fe713a24a52Christian Maeder _ -> "bad object domain or range bit") xmlObjProp op list
e01299e9b22b96b31b720ca1e9f9f5f25af9b024Christian Maeder SimpleEntity (Entity ty ent) -> case ty of
e01299e9b22b96b31b720ca1e9f9f5f25af9b024Christian Maeder DataProperty -> make1 True dataPropertyDomainK dataPropertyK
99476ac2689c74251219db4782e57fe713a24a52Christian Maeder mwNameIRI ent list
e01299e9b22b96b31b720ca1e9f9f5f25af9b024Christian Maeder NamedIndividual -> make2 False classAssertionK
e01299e9b22b96b31b720ca1e9f9f5f25af9b024Christian Maeder xmlIndividual ent list
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder _ -> error "bad expression bit"
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder ObjectBit al ->
e01299e9b22b96b31b720ca1e9f9f5f25af9b024Christian Maeder let list = xmlAL xmlObjProp al in case ext of
e01299e9b22b96b31b720ca1e9f9f5f25af9b024Christian Maeder Misc anno -> [makeElement (case fromMaybe
6a22b2854c3bc9cb4877cb7d29049d6559238639Christian Maeder (error "expected equiv--, disjoint-- obj prop") mr of
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill Mossakowski EDRelation Equivalent -> equivalentObjectPropertiesK
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder EDRelation Disjoint -> disjointObjectPropertiesK
0e2ae85e2453466d03c1fc5884a3d693235bb9d9Christian Maeder _ -> error "bad object bit (equiv, disjoint)"
200849122a9c65773e5b2ba8084ac3490d0490b5Christian Maeder ) $ xmlAnnotations anno ++ map snd list]
200849122a9c65773e5b2ba8084ac3490d0490b5Christian Maeder ObjectEntity o -> make2 True (case fromMaybe
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder (error "expected sub, Inverse, equiv, disjoint op") mr of
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder SubPropertyOf -> subObjectPropertyOfK
200849122a9c65773e5b2ba8084ac3490d0490b5Christian Maeder InverseOf -> inverseObjectPropertiesK
200849122a9c65773e5b2ba8084ac3490d0490b5Christian Maeder EDRelation Equivalent -> equivalentObjectPropertiesK
200849122a9c65773e5b2ba8084ac3490d0490b5Christian Maeder EDRelation Disjoint -> disjointObjectPropertiesK
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder _ -> error "bad object bit (subpropertyof, inverseof)"
200849122a9c65773e5b2ba8084ac3490d0490b5Christian Maeder ) xmlObjProp o list
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder _ -> error "bad object bit"
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder DataBit al ->
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder let list = xmlAL (mwNameIRI dataPropertyK) al in case ext of
200849122a9c65773e5b2ba8084ac3490d0490b5Christian Maeder Misc anno -> [makeElement (case fromMaybe
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder (error "expected equiv--, disjoint-- data prop") mr of
200849122a9c65773e5b2ba8084ac3490d0490b5Christian Maeder EDRelation Equivalent -> equivalentDataPropertiesK
6a22b2854c3bc9cb4877cb7d29049d6559238639Christian Maeder EDRelation Disjoint -> disjointDataPropertiesK
200849122a9c65773e5b2ba8084ac3490d0490b5Christian Maeder _ -> error "bad data bit"
200849122a9c65773e5b2ba8084ac3490d0490b5Christian Maeder ) $ xmlAnnotations anno ++ map snd list]
200849122a9c65773e5b2ba8084ac3490d0490b5Christian Maeder SimpleEntity (Entity _ ent) -> make1 True (case fromMaybe
200849122a9c65773e5b2ba8084ac3490d0490b5Christian Maeder (error "expected sub, equiv or disjoint data") mr of
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder SubPropertyOf -> subDataPropertyOfK
200849122a9c65773e5b2ba8084ac3490d0490b5Christian Maeder EDRelation Equivalent -> equivalentDataPropertiesK
0b6f6d3eeb7b3b36292e60f1b3da5a5ce42eef1aChristian Maeder EDRelation Disjoint -> disjointDataPropertiesK
200849122a9c65773e5b2ba8084ac3490d0490b5Christian Maeder _ -> error "bad data bit"
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder ) dataPropertyK mwNameIRI ent list
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder _ -> error "bad data bit"
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder IndividualSameOrDifferent al ->
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder let list = xmlAL xmlIndividual al in case ext of
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder Misc anno -> [makeElement (case fromMaybe
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder (error "expected same--, different-- individuals") mr of
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder SDRelation Same -> sameIndividualK
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder SDRelation Different -> differentIndividualsK
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder _ -> error "bad individual bit (s or d)"
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder ) $ xmlAnnotations anno ++ map snd list]
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder SimpleEntity (Entity _ i) -> make2 True (case fromMaybe
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder (error "expected same--, different-- individuals") mr of
7a47fbe6b987bd69a5056ce5d00fc8710f6c5e8aChristian Maeder SDRelation Same -> sameIndividualK
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder SDRelation Different -> differentIndividualsK
7a47fbe6b987bd69a5056ce5d00fc8710f6c5e8aChristian Maeder _ -> error "bad individual bit (s or d)"
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder ) xmlIndividual i list
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder _ -> error "bad individual same or different"
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder ObjectCharacteristics al ->
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder let ObjectEntity op = ext
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder annos = map (xmlAnnotations . fst) al
7a47fbe6b987bd69a5056ce5d00fc8710f6c5e8aChristian Maeder list = zip annos (map snd al)
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder in map (\ (x, y) -> makeElement (case y of
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder Functional -> functionalObjectPropertyK
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder InverseFunctional -> inverseFunctionalObjectPropertyK
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder Reflexive -> reflexiveObjectPropertyK
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder Irreflexive -> irreflexiveObjectPropertyK
7a47fbe6b987bd69a5056ce5d00fc8710f6c5e8aChristian Maeder Symmetric -> symmetricObjectPropertyK
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder Asymmetric -> asymmetricObjectPropertyK
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder Transitive -> transitiveObjectPropertyK
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder Antisymmetric -> antisymmetricObjectPropertyK
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder ) $ x ++ [xmlObjProp op]) list
e82587ca2892d246aa4405c2f5b9f30f287f9ebfChristian Maeder DataPropRange al ->
2561b4bfc45d280ee2be8a7870314670e4e682e4Christian Maeder let SimpleEntity (Entity DataProperty dp) = ext
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder list = xmlAL xmlDataRange al
01aafb6a9520f05df5ff467b591ecb5474dcfc86Christian Maeder in make1 True dataPropertyRangeK dataPropertyK mwNameIRI dp list
fa167e362877db231378e17ba49c66fbb84862fcChristian Maeder IndividualFacts al ->
fa167e362877db231378e17ba49c66fbb84862fcChristian Maeder let SimpleEntity (Entity NamedIndividual i) = ext
fa167e362877db231378e17ba49c66fbb84862fcChristian Maeder annos = map (xmlAnnotations . fst) al
fa167e362877db231378e17ba49c66fbb84862fcChristian Maeder list = zip annos (map snd al)
aea143fff7a50aceb809845fbc42698b0b3f545aChristian Maeder in map (\ (x, f) -> case f of
aea143fff7a50aceb809845fbc42698b0b3f545aChristian Maeder ObjectPropertyFact pn op ind ->
aea143fff7a50aceb809845fbc42698b0b3f545aChristian Maeder makeElement (case pn of
aea143fff7a50aceb809845fbc42698b0b3f545aChristian Maeder Positive -> objectPropertyAssertionK
aea143fff7a50aceb809845fbc42698b0b3f545aChristian Maeder Negative -> negativeObjectPropertyAssertionK
caf021dd48c90ff6b26117f13e1d8c0ef1ca618aChristian Maeder ) $ x ++ [xmlObjProp op]
e01299e9b22b96b31b720ca1e9f9f5f25af9b024Christian Maeder ++ map xmlIndividual [i, ind]
b10d6cef708b7a659f2d3b367e8e0db0d03ae3f5Till Mossakowski DataPropertyFact pn dp lit ->
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder makeElement (case pn of
d0c66a832d7b556e20ea4af4852cdc27a5463d51Christian Maeder Positive -> dataPropertyAssertionK
86b1d0c80abdd4ca36491cf7025b718a5fea5080Christian Maeder Negative -> negativeDataPropertyAssertionK
d0c66a832d7b556e20ea4af4852cdc27a5463d51Christian Maeder ) $ x ++ [mwNameIRI dataPropertyK dp] ++
86b1d0c80abdd4ca36491cf7025b718a5fea5080Christian Maeder [xmlIndividual i] ++ [xmlLiteral lit]
68138d26bcddf5e89c30206aa83ab5ec006d170dChristian MaederxmlAFB :: Extended -> Annotations -> AnnFrameBit -> [Element]
d79a4d0d842c212f82f9507fff178ffe4ba2e214Christian MaederxmlAFB ext anno afb = case afb of
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder AnnotationFrameBit -> case ext of
68138d26bcddf5e89c30206aa83ab5ec006d170dChristian Maeder SimpleEntity ent ->
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder let Entity ty iri = ent in case ty of
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder AnnotationProperty -> map (\ (Annotation as s v) ->
e01299e9b22b96b31b720ca1e9f9f5f25af9b024Christian Maeder makeElement annotationAssertionK $
d0c66a832d7b556e20ea4af4852cdc27a5463d51Christian Maeder xmlAnnotations as
44d2a211a352759ee988ed8353026f5fa9511209Christian Maeder ++ [mwNameIRI annotationPropertyK iri]
44d2a211a352759ee988ed8353026f5fa9511209Christian Maeder ++ [xmlSubject s, case v of
d0c66a832d7b556e20ea4af4852cdc27a5463d51Christian Maeder AnnValue avalue -> xmlSubject avalue
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder AnnValLit l -> xmlLiteral l]) anno
4fc727afa544a757d1959ce77c02208f8bf330dcChristian Maeder _ -> [makeElement declarationK
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder $ xmlAnnotations anno ++ [xmlEntity ent]]
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder let [Annotation _ ap _] = anno
68138d26bcddf5e89c30206aa83ab5ec006d170dChristian Maeder in [makeElement declarationK
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder $ xmlAnnotations as ++ [mwNameIRI annotationPropertyK ap]]
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder ClassEntity ent -> case ent of
6a22b2854c3bc9cb4877cb7d29049d6559238639Christian Maeder Expression c -> [makeElement declarationK
03136b84a0c70d877e227444f0875e209506b9e4Christian Maeder $ xmlAnnotations anno ++ [xmlEntity $ Entity Class c]]
86b1d0c80abdd4ca36491cf7025b718a5fea5080Christian Maeder _ -> error "XML conversion: incompatible manchester and XML syntax"
4fc727afa544a757d1959ce77c02208f8bf330dcChristian Maeder ObjectEntity ent -> case ent of
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder ObjectProp o -> [makeElement declarationK
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder $ xmlAnnotations anno ++
68138d26bcddf5e89c30206aa83ab5ec006d170dChristian Maeder [xmlEntity $ Entity ObjectProperty o]]
68138d26bcddf5e89c30206aa83ab5ec006d170dChristian Maeder _ -> error "XML conversion: incompatible manchester and XML syntax"
68138d26bcddf5e89c30206aa83ab5ec006d170dChristian Maeder DataFunctional ->
86b1d0c80abdd4ca36491cf7025b718a5fea5080Christian Maeder let SimpleEntity (Entity _ dp) = ext
86b1d0c80abdd4ca36491cf7025b718a5fea5080Christian Maeder in [makeElement functionalDataPropertyK
d0c66a832d7b556e20ea4af4852cdc27a5463d51Christian Maeder $ xmlAnnotations anno ++ [mwNameIRI dataPropertyK dp]]
86b1d0c80abdd4ca36491cf7025b718a5fea5080Christian Maeder DatatypeBit dr ->
86b1d0c80abdd4ca36491cf7025b718a5fea5080Christian Maeder let SimpleEntity (Entity _ dt) = ext
22eea35d0effc6582b2951a28b5240fa7a82f3dfChristian Maeder in [makeElement datatypeDefinitionK
86b1d0c80abdd4ca36491cf7025b718a5fea5080Christian Maeder $ xmlAnnotations anno ++ [mwNameIRI datatypeK dt,
86b1d0c80abdd4ca36491cf7025b718a5fea5080Christian Maeder xmlDataRange dr]]
5e46b572ed576c0494768998b043d9d340594122Till Mossakowski ClassDisjointUnion cel ->
74d9a385499bf903b24848dff450a153f525bda7Christian Maeder let ClassEntity c = ext
5e46b572ed576c0494768998b043d9d340594122Till Mossakowski in [makeElement disjointUnionK
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder $ xmlAnnotations anno ++ map xmlClassExpression (c : cel)]
88ece6e49930670e8fd3ee79c89a2e918d2fbd0cChristian Maeder ClassHasKey op dp ->
5e46b572ed576c0494768998b043d9d340594122Till Mossakowski let ClassEntity c = ext
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder in [makeElement hasKeyK
5e46b572ed576c0494768998b043d9d340594122Till Mossakowski $ xmlAnnotations anno ++ [xmlClassExpression c]
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder ++ map xmlObjProp op ++ map (mwNameIRI dataPropertyK) dp]
5e46b572ed576c0494768998b043d9d340594122Till Mossakowski ObjectSubPropertyChain opl ->
5e46b572ed576c0494768998b043d9d340594122Till Mossakowski let ObjectEntity op = ext
5e46b572ed576c0494768998b043d9d340594122Till Mossakowski xmlop = map xmlObjProp opl
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder in [makeElement subObjectPropertyOfK
a001917177db7ae636853b37c0d0f9f4e90a83ffChristian Maeder $ xmlAnnotations anno ++
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian Maeder [makeElement objectPropertyChainK xmlop, xmlObjProp op]]
22eea35d0effc6582b2951a28b5240fa7a82f3dfChristian MaederxmlFrameBit :: Extended -> FrameBit -> [Element]
22eea35d0effc6582b2951a28b5240fa7a82f3dfChristian MaederxmlFrameBit ext fb = case fb of
22eea35d0effc6582b2951a28b5240fa7a82f3dfChristian Maeder ListFrameBit mr lfb -> xmlLFB ext mr lfb
22eea35d0effc6582b2951a28b5240fa7a82f3dfChristian Maeder AnnFrameBit anno afb -> xmlAFB ext anno afb
22eea35d0effc6582b2951a28b5240fa7a82f3dfChristian MaederxmlAxioms :: Axiom -> [Element]
22eea35d0effc6582b2951a28b5240fa7a82f3dfChristian MaederxmlAxioms (PlainAxiom ext fb) = xmlFrameBit ext fb
22eea35d0effc6582b2951a28b5240fa7a82f3dfChristian MaederxmlFrames :: Frame -> [Element]
22eea35d0effc6582b2951a28b5240fa7a82f3dfChristian MaederxmlFrames (Frame ext fbl) = concatMap (xmlFrameBit ext) fbl
22eea35d0effc6582b2951a28b5240fa7a82f3dfChristian MaederxmlImport :: ImportIRI -> Element
22eea35d0effc6582b2951a28b5240fa7a82f3dfChristian MaederxmlImport i = setName importK $ mwText $ showIRI i
22eea35d0effc6582b2951a28b5240fa7a82f3dfChristian MaedersetPref :: String -> Element -> Element
22eea35d0effc6582b2951a28b5240fa7a82f3dfChristian MaedersetPref s e = e {elAttribs = Attr {attrKey = makeQN "name"
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder , attrVal = s} : elAttribs e}
d058429727dd696a0327cdc28cadd268c34c36baChristian Maederset1Map :: (String, String) -> Element
d058429727dd696a0327cdc28cadd268c34c36baChristian Maederset1Map (s, iri) = setPref s $ mwIRI $ setFull $ appendBase "" $ mkQName iri
d058429727dd696a0327cdc28cadd268c34c36baChristian MaederxmlPrefixes :: PrefixMap -> [Element]
d058429727dd696a0327cdc28cadd268c34c36baChristian MaederxmlPrefixes pm = map (setName prefixK . set1Map) $ Map.toList pm
ebc51e8081f6f1fe2f3d39ceff81d8dd0169c0b0Christian MaedersetXMLNS :: Element -> Element
d058429727dd696a0327cdc28cadd268c34c36baChristian MaedersetXMLNS e = e {elAttribs = Attr {attrKey = makeQN "xmlns", attrVal =
d058429727dd696a0327cdc28cadd268c34c36baChristian Maeder "http://www.w3.org/2002/07/owl#"} : elAttribs e}
d058429727dd696a0327cdc28cadd268c34c36baChristian MaedersetOntIRI :: OntologyIRI -> Element -> Element
329d1810c6d5a5a0827e1d07503d94431578d176Christian MaedersetOntIRI iri e =
5e46b572ed576c0494768998b043d9d340594122Till Mossakowski if elem iri [nullQName, dummyQName] then e
329d1810c6d5a5a0827e1d07503d94431578d176Christian Maeder else e {elAttribs = Attr {attrKey = makeQN "ontologyIRI",
329d1810c6d5a5a0827e1d07503d94431578d176Christian Maeder attrVal = showQU iri} : elAttribs e}
d058429727dd696a0327cdc28cadd268c34c36baChristian MaedersetBase :: String -> Element -> Element
03136b84a0c70d877e227444f0875e209506b9e4Christian MaedersetBase s e = e {elAttribs = Attr {attrKey = nullQN {qName = "base",
5a9a06d23910b9521e1d1cd39865ac7912ccee4bChristian Maeder qPrefix = Just "xml"}, attrVal = s} : elAttribs e}
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian MaederxmlOntologyDoc :: Sign -> OntologyDocument -> Element
d058429727dd696a0327cdc28cadd268c34c36baChristian MaederxmlOntologyDoc s od =
329d1810c6d5a5a0827e1d07503d94431578d176Christian Maeder let ont = ontology od
5e46b572ed576c0494768998b043d9d340594122Till Mossakowski pd = prefixDeclaration od
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder emptyPref = fromMaybe (showIRI dummyQName) $ Map.lookup "" pd
9ecf13b5fd914bc7272f1fc17348d7f4a8c77061Christian Maeder in setBase emptyPref $ setXMLNS $ setOntIRI (name ont)
86b1d0c80abdd4ca36491cf7025b718a5fea5080Christian Maeder $ makeElement "Ontology" $ xmlPrefixes pd
40d15f6c5f4d15866e085c588f8b5130dfd6cf63Christian Maeder ++ map xmlImport (imports ont)
40d15f6c5f4d15866e085c588f8b5130dfd6cf63Christian Maeder ++ concatMap xmlFrames (ontFrames ont)
40d15f6c5f4d15866e085c588f8b5130dfd6cf63Christian Maeder ++ concatMap xmlAnnotations (ann ont)
40d15f6c5f4d15866e085c588f8b5130dfd6cf63Christian Maeder ++ signToDec s
40d15f6c5f4d15866e085c588f8b5130dfd6cf63Christian MaedersignToDec :: Sign -> [Element]
40d15f6c5f4d15866e085c588f8b5130dfd6cf63Christian Maeder let c = Set.toList $ concepts s
40d15f6c5f4d15866e085c588f8b5130dfd6cf63Christian Maeder op = Set.toList $ objectProperties s
40d15f6c5f4d15866e085c588f8b5130dfd6cf63Christian Maeder dp = Set.toList $ dataProperties s
27b37f8e6b165f7abb653a54b45ffcdb81cec561Christian Maeder ap = Set.toList $ annotationRoles s
86b1d0c80abdd4ca36491cf7025b718a5fea5080Christian Maeder dt = Set.toList $ datatypes s
0e2ae85e2453466d03c1fc5884a3d693235bb9d9Christian Maeder i = Set.toList $ individuals s
27b37f8e6b165f7abb653a54b45ffcdb81cec561Christian Maeder in map (makeElementWith1 declarationK . mwNameIRI classK) c
0e2ae85e2453466d03c1fc5884a3d693235bb9d9Christian Maeder ++ map (makeElementWith1 declarationK . mwNameIRI objectPropertyK) op
27b37f8e6b165f7abb653a54b45ffcdb81cec561Christian Maeder ++ map (makeElementWith1 declarationK . mwNameIRI dataPropertyK) dp
27b37f8e6b165f7abb653a54b45ffcdb81cec561Christian Maeder ++ map (makeElementWith1 declarationK . mwNameIRI annotationPropertyK) ap
40d15f6c5f4d15866e085c588f8b5130dfd6cf63Christian Maeder ++ map (makeElementWith1 declarationK . mwNameIRI datatypeK) dt
27b37f8e6b165f7abb653a54b45ffcdb81cec561Christian Maeder ++ map (makeElementWith1 declarationK . mwNameIRI namedIndividualK) i
27b37f8e6b165f7abb653a54b45ffcdb81cec561Christian MaedermkODoc :: Sign -> [Named Axiom] -> String
58b671de3fe578346fef9642ffa3c5a0a0edb3cbTill MossakowskimkODoc s na = ppTopElement $ xmlOntologyDoc s $ emptyOntologyDoc
32562a567baac248a00782d2727716c13117dc4aChristian Maeder ontology = emptyOntologyD
32562a567baac248a00782d2727716c13117dc4aChristian Maeder ontFrames = map (axToFrame . sentence) na
32562a567baac248a00782d2727716c13117dc4aChristian Maeder prefixDeclaration = prefixMap s