XML.hs revision f20c085644aa49702488405bc2d4245cf0e5a713
4b0a4c7dea0f67a233dcc42ce9bb18d36de109aeChristian MaedergetName :: Element -> String
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian MaedergetName (Element {elName = QName {qName = n}}) = n
f3a94a197960e548ecd6520bb768cb0d547457bbChristian MaedergetIRI :: Element -> OWL2.AS.QName
ea03c5d09694b4a966fbd19d46cfa5772648d95fChristian MaedergetIRI (Element {elAttribs = a}) =
ea03c5d09694b4a966fbd19d46cfa5772648d95fChristian Maeder let Attr {attrVal = iri} = head a
e8ffec0fa3d3061061bdc16e44247b9cf96b050fChristian Maeder in mkQName iri
e8ffec0fa3d3061061bdc16e44247b9cf96b050fChristian MaedergetInt :: Element -> Int
950e053ba55ac9c7d9c26a1ab48bd00202b29511Christian MaedergetInt (Element {elAttribs = a}) =
81946e2b3f6dde6167f48769bd02c7a634736856Christian Maeder let Attr {attrVal = int} = head a
964d1dce6aa88a14e240a4f2fb81c539d2f834fcChristian Maeder in value 10 int
afa6848d579d235c9677e1ab477916df8e5ae11aChristian MaederisSmth :: String -> Text.XML.Light.QName -> Bool
dc6b48bb46df8e56da3491c98476e6da0d1d5d1dChristian MaederisSmth s (QName {qName = qn}) = qn == s
b603f34b79bc0992e5d74f484e5bdc9f9c2346c6Christian MaederisSmthList :: [String] -> Text.XML.Light.QName -> Bool
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian MaederisSmthList l (QName {qName = qn}) = qn `elem` l
1a38107941725211e7c3f051f7a8f5e12199f03acmaederfilterCh :: String -> Element -> [Element]
964d1dce6aa88a14e240a4f2fb81c539d2f834fcChristian MaederfilterCh s = filterChildrenName (isSmth s)
964d1dce6aa88a14e240a4f2fb81c539d2f834fcChristian MaederfilterChL :: [String] -> Element -> [Element]
964d1dce6aa88a14e240a4f2fb81c539d2f834fcChristian MaederfilterChL l = filterChildrenName (isSmthList l)
fd5d3885a092ac0727fa2436cdfc3b248318ebd8Christian MaederentityList :: [String]
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian MaederentityList = ["Class", "Datatype", "NamedIndividual",
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder "ObjectProperty", "DataProperty", "AnnotationProperty"]
f26a1fc3851297e6483cf3fb56e9c0967b8f8b13Christian MaederobjectPropList :: [String]
1a38107941725211e7c3f051f7a8f5e12199f03acmaederobjectPropList = ["ObjectProperty", "ObjectInverseOf"]
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian MaederdataPropList :: [String]
7de39d39bc1700cc8a9bb9df90b920aad9e18d4aChristian MaederdataPropList = ["DataProperty"]
9348e8460498ddfcd9da11cd8b5794c06023e004Christian MaederdataRangeList :: [String]
502ed7ed7fecd10b6d0c83cdd48a244ec45e840aChristian MaederdataRangeList = ["Datatype", "DatatypeRestriction", "DataComplementOf",
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian Maeder "DataOneOf", "DataIntersectionOf", "DataUnionOf"]
fd5d3885a092ac0727fa2436cdfc3b248318ebd8Christian MaederclassExpressionList :: [String]
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian MaederclassExpressionList = ["Class", "ObjectIntersectionOf", "ObjectUnionOf",
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder "ObjectComplementOf", "ObjectOneOf", "ObjectSomeValuesFrom",
7de39d39bc1700cc8a9bb9df90b920aad9e18d4aChristian Maeder "ObjectAllValuesFrom", "ObjectHasValue", "ObjectHasSelf",
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder "ObjectMinCardinality", "ObjectMaxCardinality", "ObjectExactCardinality",
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder "DataSomeValuesFrom", "DataAllValuesFrom", "DataHasValue",
23f8d286586ff38a9e73052b2c7c04c62c5c638fChristian Maeder "DataMinCardinality", "DataMaxCardinality", "DataExactCardinality"]
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian MaedergetEntityType :: String -> EntityType
1a38107941725211e7c3f051f7a8f5e12199f03acmaedergetEntityType ty = case ty of
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder "Class" -> Class
23f8d286586ff38a9e73052b2c7c04c62c5c638fChristian Maeder "Datatype" -> Datatype
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian Maeder "NamedIndividual" -> NamedIndividual
7de39d39bc1700cc8a9bb9df90b920aad9e18d4aChristian Maeder "ObjectProperty" -> ObjectProperty
aff01ee50b66032469c232e00c945d1fd4f57d1bChristian Maeder "DataProperty" -> DataProperty
54ff63bb3b23ef18efbdc51b053a2ca6f348329aChristian Maeder "AnnotationProperty" -> AnnotationProperty
54ff63bb3b23ef18efbdc51b053a2ca6f348329aChristian Maeder _ -> error "not entity type"
54ff63bb3b23ef18efbdc51b053a2ca6f348329aChristian MaedertoEntity :: Element -> Entity
54ff63bb3b23ef18efbdc51b053a2ca6f348329aChristian MaedertoEntity e = Entity (getEntityType $ getName e) (getIRI e)
f454c20b6c126bea7d31d400cc8824b9ee8cc6eaChristian MaedergetEntity :: Element -> Entity
1a38107941725211e7c3f051f7a8f5e12199f03acmaedergetEntity e = toEntity $ fromJust $ filterElementName (isSmthList entityList) e
9348e8460498ddfcd9da11cd8b5794c06023e004Christian MaedergetDeclaration :: Element -> Frame
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian MaedergetDeclaration e =
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder let ent = fromJust $ filterChildName (isSmthList entityList) e
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder ans = getAllAnnos e
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder in Frame (SimpleEntity $ toEntity ent) [AnnFrameBit ans AnnotationFrameBit]
1a38107941725211e7c3f051f7a8f5e12199f03acmaedergetDeclarations :: Element -> [Frame]
cf3232cec840a6945667bdb06f5b47b22243bc8fChristian MaedergetDeclarations e =
9348e8460498ddfcd9da11cd8b5794c06023e004Christian Maeder let dcl = filterElementsName (isSmth "Declaration") e
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder in map getDeclaration dcl
f26a1fc3851297e6483cf3fb56e9c0967b8f8b13Christian MaederisPlainLiteral :: String -> Bool
ad187062b0009820118c1b773a232e29b879a2faChristian MaederisPlainLiteral s = "PlainLiteral" == drop (length s - 12) s
1a38107941725211e7c3f051f7a8f5e12199f03acmaedergetLiteral :: Element -> Literal
5ba323da9f037264b4a356085e844889aedeac23Christian MaedergetLiteral e = let lit = fromJust $ filterElementName (isSmth "Literal") e
5ba323da9f037264b4a356085e844889aedeac23Christian Maeder lf = strContent e
16e124196c6b204769042028c74f533509c9b5d3Christian Maeder dt = fromJust $ findAttrBy (isSmth "datatypeIRI") lit
16e124196c6b204769042028c74f533509c9b5d3Christian Maeder case findAttrBy (isSmth "lang") lit of
16e124196c6b204769042028c74f533509c9b5d3Christian Maeder Just lang -> Literal lf (Untyped $ Just lang)
16e124196c6b204769042028c74f533509c9b5d3Christian Maeder Nothing -> if isPlainLiteral dt then
16e124196c6b204769042028c74f533509c9b5d3Christian Maeder Literal lf (Untyped Nothing)
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder else Literal lf (Typed $ mkQName dt)
7de39d39bc1700cc8a9bb9df90b920aad9e18d4aChristian MaedergetValue :: Element -> AnnotationValue
9348e8460498ddfcd9da11cd8b5794c06023e004Christian MaedergetValue e = let lit = filterElementName (isSmth "Literal") e
9348e8460498ddfcd9da11cd8b5794c06023e004Christian Maeder val = strContent e
1d589334ba6b4a4cbfb35307a7a732261e77b0cdChristian Maeder in case lit of
f26a1fc3851297e6483cf3fb56e9c0967b8f8b13Christian Maeder Nothing -> AnnValue $ mkQName val
1d589334ba6b4a4cbfb35307a7a732261e77b0cdChristian Maeder Just _ -> AnnValLit $ getLiteral e
9348e8460498ddfcd9da11cd8b5794c06023e004Christian MaedergetAnnotation :: Element -> Annotation
230aa1e8c53fcaffd75814c7d86bd37c8012596aChristian MaedergetAnnotation e =
230aa1e8c53fcaffd75814c7d86bd37c8012596aChristian Maeder let hd = filterCh "Annotation" e
230aa1e8c53fcaffd75814c7d86bd37c8012596aChristian Maeder ap = filterCh "AnnotationProperty" e
230aa1e8c53fcaffd75814c7d86bd37c8012596aChristian Maeder av = filterCh "Literal" e ++ filterCh "IRI" e
230aa1e8c53fcaffd75814c7d86bd37c8012596aChristian Maeder Annotation (getAnnotations hd)
9348e8460498ddfcd9da11cd8b5794c06023e004Christian Maeder (getIRI $ head ap) (getValue $ head av)
9348e8460498ddfcd9da11cd8b5794c06023e004Christian MaedergetAnnotations :: [Element] -> [Annotation]
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian MaedergetAnnotations e = map getAnnotation $ concatMap
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder (filterElementsName (isSmth "Annotation")) e
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian MaedergetAllAnnos :: Element -> [Annotation]
7de39d39bc1700cc8a9bb9df90b920aad9e18d4aChristian MaedergetAllAnnos e = map getAnnotation
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder $ filterElementsName (isSmth "Annotation") e
d3c9318c22fcf44d9135a3b2c64f880b9a785babChristian Maeder -- still need to cancel double inverses
d3c9318c22fcf44d9135a3b2c64f880b9a785babChristian MaedergetObjProp :: Element -> ObjectPropertyExpression
d3c9318c22fcf44d9135a3b2c64f880b9a785babChristian MaedergetObjProp e = case filterElementName (isSmth "ObjectInverseOf") e of
d3c9318c22fcf44d9135a3b2c64f880b9a785babChristian Maeder Nothing -> ObjectProp $ getIRI e
d3c9318c22fcf44d9135a3b2c64f880b9a785babChristian Maeder Just _ -> ObjectInverseOf $ getObjProp $ head $ elChildren e
502ed7ed7fecd10b6d0c83cdd48a244ec45e840aChristian MaedergetFacetValuePair :: Element -> (ConstrainingFacet, RestrictionValue)
9348e8460498ddfcd9da11cd8b5794c06023e004Christian MaedergetFacetValuePair e = (getIRI e, getLiteral $ head $ elChildren e)
1a38107941725211e7c3f051f7a8f5e12199f03acmaedergetDataRange :: Element -> DataRange
7c57322afb6342e5cc8b1fdc96050b707407fc61Christian MaedergetDataRange e = case getName e of
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder "Datatype" -> DataType (getIRI e) []
7de39d39bc1700cc8a9bb9df90b920aad9e18d4aChristian Maeder "DatatypeRestriction" ->
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder let dt = getIRI $ fromJust $ filterChildName (isSmth "Datatype") e
9348e8460498ddfcd9da11cd8b5794c06023e004Christian Maeder fvp = map getFacetValuePair
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder $ filterCh "FacetRestriction" e
fd5d3885a092ac0727fa2436cdfc3b248318ebd8Christian Maeder in DataType dt fvp
9348e8460498ddfcd9da11cd8b5794c06023e004Christian Maeder "DataComplementOf" -> DataComplementOf
628310b42327ad76ce471caf0dde6563d6fa6307Christian Maeder $ getDataRange $ head $ elChildren e
9348e8460498ddfcd9da11cd8b5794c06023e004Christian Maeder "DataOneOf" -> DataOneOf
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder $ map getLiteral $ filterCh "Literal" e
7de39d39bc1700cc8a9bb9df90b920aad9e18d4aChristian Maeder "DataIntersectionOf" -> DataJunction IntersectionOf
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder $ map getDataRange $ elChildren e
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder "DataUnionOf" -> DataJunction UnionOf
31242f7541fd6ef179e4eb5be7522ddf54ae397bChristian Maeder $ map getDataRange $ elChildren e
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian Maeder _ -> error "XML parser: not data range"
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian MaedergetClassExpression :: Element -> ClassExpression
7de39d39bc1700cc8a9bb9df90b920aad9e18d4aChristian MaedergetClassExpression e =
f454c20b6c126bea7d31d400cc8824b9ee8cc6eaChristian Maeder let ch = elChildren e
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder in case getName e of
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder "Class" -> Expression $ getIRI e
628310b42327ad76ce471caf0dde6563d6fa6307Christian Maeder "ObjectIntersectionOf" -> ObjectJunction IntersectionOf
9348e8460498ddfcd9da11cd8b5794c06023e004Christian Maeder $ map getClassExpression ch
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder "ObjectUnionOf" -> ObjectJunction UnionOf
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder $ map getClassExpression ch
f454c20b6c126bea7d31d400cc8824b9ee8cc6eaChristian Maeder "ObjectComplementOf" -> ObjectComplementOf
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder $ getClassExpression $ head ch
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder "ObjectOneOf" -> ObjectOneOf
628310b42327ad76ce471caf0dde6563d6fa6307Christian Maeder $ map getIRI ch
ad187062b0009820118c1b773a232e29b879a2faChristian Maeder "ObjectSomeValuesFrom" -> ObjectValuesFrom SomeValuesFrom
ad187062b0009820118c1b773a232e29b879a2faChristian Maeder (getObjProp $ head ch) (getClassExpression $ last ch)
ad187062b0009820118c1b773a232e29b879a2faChristian Maeder "ObjectAllValuesFrom" -> ObjectValuesFrom AllValuesFrom
ad187062b0009820118c1b773a232e29b879a2faChristian Maeder (getObjProp $ head ch) (getClassExpression $ last ch)
964d1dce6aa88a14e240a4f2fb81c539d2f834fcChristian Maeder "ObjectHasValue" -> ObjectHasValue (getObjProp $ head ch) (getIRI $ last ch)
ad187062b0009820118c1b773a232e29b879a2faChristian Maeder "ObjectHasSelf" -> ObjectHasSelf $ getObjProp $ head ch
9348e8460498ddfcd9da11cd8b5794c06023e004Christian Maeder "ObjectMinCardinality" -> if length ch == 2 then
aff01ee50b66032469c232e00c945d1fd4f57d1bChristian Maeder ObjectCardinality $ Cardinality
aff01ee50b66032469c232e00c945d1fd4f57d1bChristian Maeder MinCardinality (getInt e) (getObjProp $ head ch)
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder $ Just $ getClassExpression $ last ch
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder else ObjectCardinality $ Cardinality
aff01ee50b66032469c232e00c945d1fd4f57d1bChristian Maeder MinCardinality (getInt e) (getObjProp $ head ch) Nothing
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder "ObjectMaxCardinality" -> if length ch == 2 then
ad187062b0009820118c1b773a232e29b879a2faChristian Maeder ObjectCardinality $ Cardinality
fd5d3885a092ac0727fa2436cdfc3b248318ebd8Christian Maeder MaxCardinality (getInt e) (getObjProp $ head ch)
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian Maeder $ Just $ getClassExpression $ last ch
c9892acbf03a509d874ac6d79b9a2cb09042e0dcChristian Maeder else ObjectCardinality $ Cardinality
9348e8460498ddfcd9da11cd8b5794c06023e004Christian Maeder MaxCardinality (getInt e) (getObjProp $ head ch) Nothing
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder "ObjectExactCardinality" -> if length ch == 2 then
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder ObjectCardinality $ Cardinality
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder ExactCardinality (getInt e) (getObjProp $ head ch)
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder $ Just $ getClassExpression $ last ch
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder else ObjectCardinality $ Cardinality
31a189d4cff554f78407cdc422480e84e99a6ec6Christian Maeder ExactCardinality (getInt e) (getObjProp $ head ch) Nothing
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder "DataSomeValuesFrom" ->
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder let dp = map getIRI $ init ch
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder in DataValuesFrom SomeValuesFrom (head dp) (tail dp) (getDataRange dr)
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder "DataAllValuesFrom" ->
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder let dp = map getIRI $ init ch
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder in DataValuesFrom AllValuesFrom (head dp) (tail dp) (getDataRange dr)
b49276c9f50038e0bd499ad49f7bd6444566a834Christian Maeder "DataHasValue" -> DataHasValue (getIRI $ head ch) (getLiteral $ last ch)
ad187062b0009820118c1b773a232e29b879a2faChristian Maeder "DataMinCardinality" -> if length ch == 2 then
16e124196c6b204769042028c74f533509c9b5d3Christian Maeder DataCardinality $ Cardinality
16e124196c6b204769042028c74f533509c9b5d3Christian Maeder MinCardinality (getInt e) (getIRI $ head ch)
16e124196c6b204769042028c74f533509c9b5d3Christian Maeder $ Just $ getDataRange $ last ch
16e124196c6b204769042028c74f533509c9b5d3Christian Maeder else DataCardinality $ Cardinality
16e124196c6b204769042028c74f533509c9b5d3Christian Maeder MinCardinality (getInt e) (getIRI $ head ch) Nothing
16e124196c6b204769042028c74f533509c9b5d3Christian Maeder "DataMaxCardinality" -> if length ch == 2 then
ad187062b0009820118c1b773a232e29b879a2faChristian Maeder DataCardinality $ Cardinality
9348e8460498ddfcd9da11cd8b5794c06023e004Christian Maeder MaxCardinality (getInt e) (getIRI $ head ch)
c00adad2e9459b422dee09e3a2bddba66b433bb7Christian Maeder $ Just $ getDataRange $ last ch
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder else DataCardinality $ Cardinality
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder MaxCardinality (getInt e) (getIRI $ head ch) Nothing
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder "DataExactCardinality" -> if length ch == 2 then
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder DataCardinality $ Cardinality
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder ExactCardinality (getInt e) (getIRI $ head ch)
31a189d4cff554f78407cdc422480e84e99a6ec6Christian Maeder $ Just $ getDataRange $ last ch
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder else DataCardinality $ Cardinality
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder ExactCardinality (getInt e) (getIRI $ head ch) Nothing
d976ba42e9d48c289f9c73147669c7e57b7aa98eChristian Maeder _ -> error "XML parser: not ClassExpression"
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian MaedergetClassAxiom :: Element -> Axiom
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian MaedergetClassAxiom e =
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder let ch = elChildren e
c00adad2e9459b422dee09e3a2bddba66b433bb7Christian Maeder as = concatMap getAllAnnos ch
facf15c975d25ca5d31d8f84bf48f09d1d951ad6Christian Maeder l = filterChL classExpressionList e
facf15c975d25ca5d31d8f84bf48f09d1d951ad6Christian Maeder drl = filterChL dataRangeList e
facf15c975d25ca5d31d8f84bf48f09d1d951ad6Christian Maeder cel = map getClassExpression l
facf15c975d25ca5d31d8f84bf48f09d1d951ad6Christian Maeder in case getName e of
facf15c975d25ca5d31d8f84bf48f09d1d951ad6Christian Maeder "SubClassOf" ->
ad187062b0009820118c1b773a232e29b879a2faChristian Maeder let ces = drop (length ch - 2) ch
ad187062b0009820118c1b773a232e29b879a2faChristian Maeder sub = head ces
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder super = last ces
ad187062b0009820118c1b773a232e29b879a2faChristian Maeder in PlainAxiom (ClassEntity $ getClassExpression sub)
afa6848d579d235c9677e1ab477916df8e5ae11aChristian Maeder $ ListFrameBit (Just SubClass) $ ExpressionBit [(as, (getClassExpression super))]
afa6848d579d235c9677e1ab477916df8e5ae11aChristian Maeder "EquivalentClasses" -> PlainAxiom (Misc as) $ ListFrameBit
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian Maeder (Just (EDRelation Equivalent)) $ ExpressionBit
f8c07dc6526e0134d66885d461a30abadc2c6038Christian Maeder $ map (\ x -> ([], x)) cel
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder "DisjointClasses" -> PlainAxiom (Misc as) $ ListFrameBit
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder (Just (EDRelation Disjoint)) $ ExpressionBit
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder $ map (\ x -> ([], x)) cel
afa6848d579d235c9677e1ab477916df8e5ae11aChristian Maeder "DisjointUnion" -> PlainAxiom (SimpleEntity $ getEntity $ head l)
afa6848d579d235c9677e1ab477916df8e5ae11aChristian Maeder $ AnnFrameBit as $ ClassDisjointUnion $ map getClassExpression $ tail l
f8c07dc6526e0134d66885d461a30abadc2c6038Christian Maeder "DatatypeDefinition" -> PlainAxiom (SimpleEntity $ getEntity $ head drl)
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder $ AnnFrameBit as $ DatatypeBit $ getDataRange $ last drl
0be2d0cfd911d313e7e941edbc77f95052c8c19bChristian Maeder _ -> error "XML parser: not class axiom"
afa6848d579d235c9677e1ab477916df8e5ae11aChristian MaederhasKey :: Element -> Axiom
f8c07dc6526e0134d66885d461a30abadc2c6038Christian Maeder let as = concatMap getAllAnnos $ elChildren e
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian Maeder ce = getClassExpression $ head $ filterChL classExpressionList e
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian Maeder op = map getObjProp $ filterChL objectPropList e
f8c07dc6526e0134d66885d461a30abadc2c6038Christian Maeder dp = map getIRI $ filterChL dataPropList e
afa6848d579d235c9677e1ab477916df8e5ae11aChristian Maeder in PlainAxiom (ClassEntity ce) $ AnnFrameBit as $ ClassHasKey op dp
f8c07dc6526e0134d66885d461a30abadc2c6038Christian MaedergetOPAxiom :: Element -> Axiom
de2f13b8310de00ca228385b1530660e036054c2Christian MaedergetOPAxiom e =
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian Maeder let as = concatMap getAllAnnos $ elChildren e
f8c07dc6526e0134d66885d461a30abadc2c6038Christian Maeder op = getObjProp $ fromJust
afa6848d579d235c9677e1ab477916df8e5ae11aChristian Maeder $ filterChildName (isSmthList objectPropList) e
afa6848d579d235c9677e1ab477916df8e5ae11aChristian Maeder in case getName e of
f8c07dc6526e0134d66885d461a30abadc2c6038Christian Maeder "SubObjectPropertyOf" ->
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian Maeder let opchain = concatMap (map getObjProp) $ map elChildren
f8c07dc6526e0134d66885d461a30abadc2c6038Christian Maeder $ filterCh "ObjectPropertyChain" e
afa6848d579d235c9677e1ab477916df8e5ae11aChristian Maeder in if null opchain
afa6848d579d235c9677e1ab477916df8e5ae11aChristian Maeder then let opl = map getObjProp $ filterChL objectPropList e
afa6848d579d235c9677e1ab477916df8e5ae11aChristian Maeder in PlainAxiom (ObjectEntity $ head opl)
afa6848d579d235c9677e1ab477916df8e5ae11aChristian Maeder $ ListFrameBit (Just SubPropertyOf) $ ObjectBit
d976ba42e9d48c289f9c73147669c7e57b7aa98eChristian Maeder [(as, last opl)]
d976ba42e9d48c289f9c73147669c7e57b7aa98eChristian Maeder else PlainAxiom (ObjectEntity op) $ AnnFrameBit as
d976ba42e9d48c289f9c73147669c7e57b7aa98eChristian Maeder $ ObjectSubPropertyChain opchain
d976ba42e9d48c289f9c73147669c7e57b7aa98eChristian Maeder "EquivalentObjectProperties" ->
d976ba42e9d48c289f9c73147669c7e57b7aa98eChristian Maeder let opl = map getObjProp $ filterChL objectPropList e
d976ba42e9d48c289f9c73147669c7e57b7aa98eChristian Maeder in PlainAxiom (Misc as) $ ListFrameBit (Just (EDRelation Equivalent))
afa6848d579d235c9677e1ab477916df8e5ae11aChristian Maeder $ ObjectBit $ map (\ x -> ([], x)) opl
f8c07dc6526e0134d66885d461a30abadc2c6038Christian Maeder "DisjointObjectProperties" ->
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian Maeder let opl = map getObjProp $ filterChL objectPropList e
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian Maeder in PlainAxiom (Misc as) $ ListFrameBit (Just (EDRelation Disjoint))
f8c07dc6526e0134d66885d461a30abadc2c6038Christian Maeder $ ObjectBit $ map (\ x -> ([], x)) opl
afa6848d579d235c9677e1ab477916df8e5ae11aChristian MaedergetDPAxiom :: Element -> Axiom
f8c07dc6526e0134d66885d461a30abadc2c6038Christian MaedergetDPAxiom e =
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian Maeder let as = concatMap getAllAnnos $ elChildren e
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian Maeder in case getName e of
f8c07dc6526e0134d66885d461a30abadc2c6038Christian Maeder "SubDataPropertyOf" ->
afa6848d579d235c9677e1ab477916df8e5ae11aChristian Maeder let dpl = map getIRI $ filterChL dataPropList e
afa6848d579d235c9677e1ab477916df8e5ae11aChristian Maeder in PlainAxiom (SimpleEntity $ Entity DataProperty $ head dpl)
f8c07dc6526e0134d66885d461a30abadc2c6038Christian Maeder $ ListFrameBit (Just SubPropertyOf) $ DataBit [(as, last dpl)]
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian Maeder "EquivalentDataProperties" ->
f8c07dc6526e0134d66885d461a30abadc2c6038Christian Maeder let dpl = map getIRI $ filterChL dataPropList e
f8c07dc6526e0134d66885d461a30abadc2c6038Christian Maeder in PlainAxiom (Misc as) $ ListFrameBit (Just (EDRelation Equivalent))
afa6848d579d235c9677e1ab477916df8e5ae11aChristian Maeder $ DataBit $ map (\ x -> ([], x)) dpl
31a189d4cff554f78407cdc422480e84e99a6ec6Christian Maeder "DisjointDataProperties" ->
31a189d4cff554f78407cdc422480e84e99a6ec6Christian Maeder let dpl = map getIRI $ filterChL dataPropList e
31a189d4cff554f78407cdc422480e84e99a6ec6Christian Maeder in PlainAxiom (Misc as) $ ListFrameBit (Just (EDRelation Disjoint))
31a189d4cff554f78407cdc422480e84e99a6ec6Christian Maeder $ DataBit $ map (\ x -> ([], x)) dpl