ManchesterParser.hs revision 80875f917d741946a39d0ec0b5721e46ba609823
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder{- |
25cc5fbba63f84b47e389af749f55abbbde71c8cChristian MaederModule : ./OWL2/ManchesterParser.hs
25cc5fbba63f84b47e389af749f55abbbde71c8cChristian MaederCopyright : (c) Felix Gabriel Mance
25cc5fbba63f84b47e389af749f55abbbde71c8cChristian MaederLicense : GPLv2 or higher, see LICENSE.txt
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederMaintainer : f.mance@jacobs-university.de
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederStability : provisional
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederPortability : portable
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederManchester Syntax parser
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederReferences : <http://www.w3.org/TR/2009/NOTE-owl2-manchester-syntax-20091027/>
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder-}
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
b9625461755578f3eed04676d42a63fd2caebd0cChristian Maedermodule OWL2.ManchesterParser where
b9625461755578f3eed04676d42a63fd2caebd0cChristian Maeder
88c66e48620750c42b94db9feb01b42ae23dba97Till Mossakowskiimport OWL2.AS
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maederimport OWL2.MS
760ae19a92dde8249679a674f93f58d26a7c5f6bChristian Maederimport OWL2.Parse
760ae19a92dde8249679a674f93f58d26a7c5f6bChristian Maederimport OWL2.Keywords
88c800932dd7053322501ea2039d9f234be6866cKlaus Luettichimport OWL2.ColonKeywords
8410667510a76409aca9bb24ff0eda0420088274Christian Maeder
8410667510a76409aca9bb24ff0eda0420088274Christian Maederimport Common.IRI
8410667510a76409aca9bb24ff0eda0420088274Christian Maederimport Common.Keywords
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettichimport Common.Parsec
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettichimport qualified Common.GlobalAnnotations as GA (PrefixMap)
fdb2d618144159395f7bf8ce3327b3c112a17dd3Till Mossakowski
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettichimport Text.ParserCombinators.Parsec
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederimport qualified Data.Map as Map
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
d67a33b40578beef2e255a274f89bb9c34aaf056Christian MaederoptAnnos :: CharParser st a -> CharParser st (Annotations, a)
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian MaederoptAnnos p = do
e593b89bfd4952698dc37feced21cefe869d87a2Christian Maeder as <- optionalAnnos
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder a <- p
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder return (as, a)
760ae19a92dde8249679a674f93f58d26a7c5f6bChristian Maeder
760ae19a92dde8249679a674f93f58d26a7c5f6bChristian MaederoptionalAnnos :: CharParser st Annotations
c55a0f77be7e88d3620b419ec8961f4379a586e3Klaus LuettichoptionalAnnos = option [] annotations
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maederannotations :: CharParser st Annotations
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maederannotations = do
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder pkeyword annotationsC
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder fmap (map $ \ (as, (i, v)) -> Annotation as i v)
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder . sepByComma . optAnnos $ pair uriP annotationValue
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederdescriptionAnnotatedList :: CharParser st [(Annotations, ClassExpression)]
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederdescriptionAnnotatedList = sepByComma $ optAnnos description
5d4038657f6a63e131f5804af2f7957b69e15a43Klaus Luettich
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaedermakeFrame :: Extended -> [FrameBit] -> Frame
b0294d73dcefc502ddaa13e18b46103a5916971fTill MossakowskimakeFrame ext fbl = Frame ext
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder $ if null fbl then
77a65251ee036c6aaf09c2775315a4ee24259fbdJorina Freya Gerken [AnnFrameBit [] $ AnnotationFrameBit Declaration]
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder else fbl
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
4d7d7f9a423490731c73403c7806bd66967da946Christian MaederannotationPropertyFrame :: CharParser st Frame
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederannotationPropertyFrame = do
97812b7ce9860bf514a8822a63503451795dbc65Klaus Luettich pkeyword annotationPropertyC
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder ap <- uriP
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder x <- many apBit
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder return $ makeFrame (SimpleEntity $ mkEntity AnnotationProperty ap) x
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederapBit :: CharParser st FrameBit
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederapBit = do
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder pkeyword subPropertyOfC
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder x <- sepByComma $ optAnnos uriP
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers return $ ListFrameBit (Just SubPropertyOf) $ AnnotationBit x
4e7050bcbcf0f372a5bad32ecd0282bccabf0983Klaus Luettich <|> do
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder dr <- domainOrRange
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder x <- sepByComma $ optAnnos uriP
33d042fe6a9eb27a4c48f840b80838f3e7d98e34Christian Maeder return $ ListFrameBit (Just $ DRRelation dr) $ AnnotationBit x
e593b89bfd4952698dc37feced21cefe869d87a2Christian Maeder <|> do
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder x <- annotations
ce50fe187cdae64e75e510daafb78156280bdb91Christian Maeder return $ AnnFrameBit x $ AnnotationFrameBit Assertion
ebe517300051f765f2ed856a789dd5613d681ab0Klaus Luettich
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix ReckersdatatypeBit :: CharParser st Frame
c55a0f77be7e88d3620b419ec8961f4379a586e3Klaus LuettichdatatypeBit = do
6ae5607d2def114f998fd49bac4eef12a2620fafChristian Maeder pkeyword datatypeC
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder duri <- datatypeUri
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder as1 <- many annotations
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder mp <- optionMaybe $ pkeyword equivalentToC >> pair optionalAnnos dataRange
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder as2 <- many annotations
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder return $ Frame (SimpleEntity $ mkEntity Datatype duri)
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder $ map (`AnnFrameBit` AnnotationFrameBit Assertion) as1 ++ case mp of
ebe517300051f765f2ed856a789dd5613d681ab0Klaus Luettich Nothing -> [AnnFrameBit [] $ AnnotationFrameBit Declaration]
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers Just (ans, dr) -> [AnnFrameBit ans $ DatatypeBit dr]
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers ++ map (`AnnFrameBit` AnnotationFrameBit Assertion) as2
c55a0f77be7e88d3620b419ec8961f4379a586e3Klaus Luettich
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian MaederclassFrame :: CharParser st Frame
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian MaederclassFrame = do
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder pkeyword classC
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder i <- description
ce50fe187cdae64e75e510daafb78156280bdb91Christian Maeder plain <- many classFrameBit
4e7050bcbcf0f372a5bad32ecd0282bccabf0983Klaus Luettich -- ignore Individuals: ... !
6ae5607d2def114f998fd49bac4eef12a2620fafChristian Maeder optional $ pkeyword individualsC >> sepByComma individual
e593b89bfd4952698dc37feced21cefe869d87a2Christian Maeder return $ makeFrame (ClassEntity i) plain
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederclassFrameBit :: CharParser st FrameBit
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederclassFrameBit = do
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder pkeyword subClassOfC
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers ds <- descriptionAnnotatedList
5b818f10e11fc79def1fdd5c8a080d64a6438d87Christian Maeder return $ ListFrameBit (Just SubClass) $ ExpressionBit ds
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers <|> do
5d4038657f6a63e131f5804af2f7957b69e15a43Klaus Luettich e <- equivOrDisjoint
5d4038657f6a63e131f5804af2f7957b69e15a43Klaus Luettich ds <- descriptionAnnotatedList
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder return $ ListFrameBit (Just $ EDRelation e) $ ExpressionBit ds
c432483b64662e8db604a58758cd18ea7fa65659Christian Maeder <|> do
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder pkeyword disjointUnionOfC
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder as <- optionalAnnos
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder ds <- sepByComma description
e8d782e6e650b71a2b0ee8461fd8d9fa31525591Christian Maeder return $ AnnFrameBit as $ ClassDisjointUnion ds
0310dabcd02da51f78f84e7a73d4c7b2dd3e8507Christian Maeder <|> do
c5e10ba19c9854112e5d29f491759e8e89f83652Christian Maeder pkeyword hasKeyC
5b818f10e11fc79def1fdd5c8a080d64a6438d87Christian Maeder as <- optionalAnnos
88c66e48620750c42b94db9feb01b42ae23dba97Till Mossakowski o <- sepByComma objectPropertyExpr
96ef2e46d048c357927f2795a40e9e66f21b85fbSonja Gröning return $ AnnFrameBit as $ ClassHasKey o []
8659594bb40eb5f3da5439692f0908300947191eSonja Gröning <|> do
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder as <- annotations
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder return $ AnnFrameBit as $ AnnotationFrameBit Assertion
96ef2e46d048c357927f2795a40e9e66f21b85fbSonja Gröning
96ef2e46d048c357927f2795a40e9e66f21b85fbSonja GröningobjPropExprAList :: CharParser st [(Annotations, ObjectPropertyExpression)]
96ef2e46d048c357927f2795a40e9e66f21b85fbSonja GröningobjPropExprAList = sepByComma $ optAnnos objectPropertyExpr
7d09621f989f5e6dfbf603b36b2fccbacf639a3cTill Mossakowski
eeb419aa20c97b4af973e97ee6ae77a8eed29e15Till MossakowskiobjectFrameBit :: CharParser st FrameBit
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix ReckersobjectFrameBit = do
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder r <- domainOrRange
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers ds <- descriptionAnnotatedList
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder return $ ListFrameBit (Just $ DRRelation r) $ ExpressionBit ds
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder <|> do
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder characterKey
7d09621f989f5e6dfbf603b36b2fccbacf639a3cTill Mossakowski ds <- sepByComma $ optAnnos objectPropertyCharacter
88c66e48620750c42b94db9feb01b42ae23dba97Till Mossakowski return $ ListFrameBit Nothing $ ObjectCharacteristics ds
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers <|> do
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers subPropertyKey
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder ds <- objPropExprAList
fdb2d618144159395f7bf8ce3327b3c112a17dd3Till Mossakowski return $ ListFrameBit (Just SubPropertyOf) $ ObjectBit ds
fdb2d618144159395f7bf8ce3327b3c112a17dd3Till Mossakowski <|> do
fdb2d618144159395f7bf8ce3327b3c112a17dd3Till Mossakowski e <- equivOrDisjoint
327a9b9bf44b6e33f71fee7526dc1c0035251591Christian Maeder ds <- objPropExprAList
b49276c9f50038e0bd499ad49f7bd6444566a834Christian Maeder return $ ListFrameBit (Just $ EDRelation e) $ ObjectBit ds
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder <|> do
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder pkeyword inverseOfC
5958fabb264ec3f5b2125ac5602121bd34814a79Klaus Luettich ds <- objPropExprAList
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder return $ ListFrameBit (Just InverseOf) $ ObjectBit ds
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder <|> do
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder pkeyword subPropertyChainC
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder as <- optionalAnnos
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder os <- sepBy1 objectPropertyExpr (keyword oS)
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder return $ AnnFrameBit as $ ObjectSubPropertyChain os
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder <|> do
fdb2d618144159395f7bf8ce3327b3c112a17dd3Till Mossakowski as <- annotations
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder return $ AnnFrameBit as $ AnnotationFrameBit Assertion
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix ReckersobjectPropertyFrame :: CharParser st Frame
b49276c9f50038e0bd499ad49f7bd6444566a834Christian MaederobjectPropertyFrame = do
88c800932dd7053322501ea2039d9f234be6866cKlaus Luettich pkeyword objectPropertyC
ed9207cf24e96b0d6f59985822054ae28cb69b2eChristian Maeder ouri <- objectPropertyExpr
b49276c9f50038e0bd499ad49f7bd6444566a834Christian Maeder as <- many objectFrameBit
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder return $ makeFrame (ObjectEntity ouri) as
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder
33d042fe6a9eb27a4c48f840b80838f3e7d98e34Christian MaederdataPropExprAList :: CharParser st [(Annotations, DataPropertyExpression)]
b10267ae0a6523b73113fc2dee9ea628266fce60Christian MaederdataPropExprAList = sepByComma $ optAnnos uriP
fa21fba9ceb1ddf7b3efd54731a12ed8750191d8Christian Maeder
fa21fba9ceb1ddf7b3efd54731a12ed8750191d8Christian MaederdataFrameBit :: CharParser st FrameBit
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian MaederdataFrameBit = do
05a8b581f98b928baca6dab60cd20277659ac760Christian Maeder pkeyword domainC
ed9207cf24e96b0d6f59985822054ae28cb69b2eChristian Maeder ds <- descriptionAnnotatedList
fa21fba9ceb1ddf7b3efd54731a12ed8750191d8Christian Maeder return $ ListFrameBit (Just (DRRelation ADomain)) $ ExpressionBit ds
b49276c9f50038e0bd499ad49f7bd6444566a834Christian Maeder <|> do
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder pkeyword rangeC
b49276c9f50038e0bd499ad49f7bd6444566a834Christian Maeder ds <- sepByComma $ optAnnos dataRange
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder return $ ListFrameBit Nothing $ DataPropRange ds
b905126bab9454b89041f92b3c50bb9efc85e427Klaus Luettich <|> do
b905126bab9454b89041f92b3c50bb9efc85e427Klaus Luettich characterKey
b905126bab9454b89041f92b3c50bb9efc85e427Klaus Luettich as <- optionalAnnos
05c19431fd580d3426f990cc1d8d54c630e0525aTill Mossakowski keyword functionalS
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder return $ AnnFrameBit as DataFunctional
f29371d8bd5a232c974e736b06d0d8a655d320fbKlaus Luettich <|> do
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder subPropertyKey
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder ds <- dataPropExprAList
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder return $ ListFrameBit (Just SubPropertyOf) $ DataBit ds
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder <|> do
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder e <- equivOrDisjoint
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder ds <- dataPropExprAList
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder return $ ListFrameBit (Just (EDRelation e)) $ DataBit ds
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder <|> do
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder as <- annotations
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder return $ AnnFrameBit as $ AnnotationFrameBit Assertion
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederdataPropertyFrame :: CharParser st Frame
b905126bab9454b89041f92b3c50bb9efc85e427Klaus LuettichdataPropertyFrame = do
b905126bab9454b89041f92b3c50bb9efc85e427Klaus Luettich pkeyword dataPropertyC
b905126bab9454b89041f92b3c50bb9efc85e427Klaus Luettich duri <- uriP
b905126bab9454b89041f92b3c50bb9efc85e427Klaus Luettich as <- many dataFrameBit
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder return $ makeFrame (SimpleEntity $ mkEntity DataProperty duri) as
33d042fe6a9eb27a4c48f840b80838f3e7d98e34Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maederfact :: CharParser st Fact
33d042fe6a9eb27a4c48f840b80838f3e7d98e34Christian Maederfact = do
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder pn <- option Positive $ keyword notS >> return Negative
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder u <- uriP
33d042fe6a9eb27a4c48f840b80838f3e7d98e34Christian Maeder do
ef67402074be14deb95e4ff564737d5593144130Klaus Luettich c <- literal
ef67402074be14deb95e4ff564737d5593144130Klaus Luettich return $ DataPropertyFact pn u c
ef67402074be14deb95e4ff564737d5593144130Klaus Luettich <|> do
5958fabb264ec3f5b2125ac5602121bd34814a79Klaus Luettich t <- individual
5958fabb264ec3f5b2125ac5602121bd34814a79Klaus Luettich return $ ObjectPropertyFact pn (ObjectProp u) t
e7e1ab2ac3f1fded8611bb92ae00e8f3b8c693fbKlaus Luettich
ef67402074be14deb95e4ff564737d5593144130Klaus LuettichiFrameBit :: CharParser st FrameBit
1323eba62fc519b068f5aaec4f9d2be05ffabea9Klaus LuettichiFrameBit = do
1323eba62fc519b068f5aaec4f9d2be05ffabea9Klaus Luettich pkeyword typesC
1323eba62fc519b068f5aaec4f9d2be05ffabea9Klaus Luettich ds <- descriptionAnnotatedList
725a68ec81cba9b8aa8647bebfb5baa449803e7eKlaus Luettich return $ ListFrameBit (Just Types) $ ExpressionBit ds
d579f5b263e6c73d466c265f2fbfd45b0e69ca64Klaus Luettich <|> do
33d042fe6a9eb27a4c48f840b80838f3e7d98e34Christian Maeder s <- sameOrDifferent
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder is <- sepByComma $ optAnnos individual
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder return $ ListFrameBit (Just $ SDRelation s) $ IndividualSameOrDifferent is
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder <|> do
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder pkeyword factsC
2b770da5668af0faade8133dc6377a0fcaf44134Christian Maeder fs <- sepByComma $ optAnnos fact
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder return $ ListFrameBit Nothing $ IndividualFacts fs
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettich <|> do
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettich a <- annotations
4e7050bcbcf0f372a5bad32ecd0282bccabf0983Klaus Luettich return $ AnnFrameBit a $ AnnotationFrameBit Assertion
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus LuettichindividualFrame :: CharParser st Frame
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian MaederindividualFrame = do
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettich pkeyword individualC
4e7050bcbcf0f372a5bad32ecd0282bccabf0983Klaus Luettich iuri <- individual
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder as <- many iFrameBit
e593b89bfd4952698dc37feced21cefe869d87a2Christian Maeder return $ makeFrame (SimpleEntity $ mkEntity NamedIndividual iuri) as
e593b89bfd4952698dc37feced21cefe869d87a2Christian Maeder
e593b89bfd4952698dc37feced21cefe869d87a2Christian Maedermisc :: CharParser st Frame
e593b89bfd4952698dc37feced21cefe869d87a2Christian Maedermisc = do
fdb2d618144159395f7bf8ce3327b3c112a17dd3Till Mossakowski e <- equivOrDisjointKeyword classesC
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder as <- optionalAnnos
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder ds <- sepByComma description
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder return $ Frame (Misc as) [ListFrameBit (Just $ EDRelation e)
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder $ ExpressionBit $ emptyAnnoList ds]
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder <|> do
33d042fe6a9eb27a4c48f840b80838f3e7d98e34Christian Maeder e <- equivOrDisjointKeyword propertiesC
94d3aa05411444596b44ede4531f05dd7ac20fdfChristian Maeder as <- optionalAnnos
dc929508a3bd3c666e9b0182d56898fcafb5d66fChristian Maeder es <- sepByComma objectPropertyExpr
dc929508a3bd3c666e9b0182d56898fcafb5d66fChristian Maeder -- indistinguishable from dataProperties
94d3aa05411444596b44ede4531f05dd7ac20fdfChristian Maeder return $ Frame (Misc as) [ListFrameBit (Just $ EDRelation e)
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder $ ObjectBit $ emptyAnnoList es]
8410667510a76409aca9bb24ff0eda0420088274Christian Maeder <|> do
ddc9315cc0b1f5dd3d8f99a77f1c75064db33b48Christian Maeder s <- sameOrDifferentIndu
ddc9315cc0b1f5dd3d8f99a77f1c75064db33b48Christian Maeder as <- optionalAnnos
5d522dff4d0fabf57dd476d4c3de15d354a89f62Christian Maeder is <- sepByComma individualUri
5d522dff4d0fabf57dd476d4c3de15d354a89f62Christian Maeder return $ Frame (Misc as) [ListFrameBit (Just $ SDRelation s)
5d522dff4d0fabf57dd476d4c3de15d354a89f62Christian Maeder $ IndividualSameOrDifferent $ emptyAnnoList is]
8410667510a76409aca9bb24ff0eda0420088274Christian Maeder
8410667510a76409aca9bb24ff0eda0420088274Christian Maederframes :: CharParser st [Frame]
8410667510a76409aca9bb24ff0eda0420088274Christian Maederframes = many $ datatypeBit <|> classFrame
ac43fa22d2d3f91a17674ac164cba3cf39a17795Klaus Luettich <|> objectPropertyFrame <|> dataPropertyFrame <|> individualFrame
ac43fa22d2d3f91a17674ac164cba3cf39a17795Klaus Luettich <|> annotationPropertyFrame <|> misc
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian MaederbasicSpec :: GA.PrefixMap -> CharParser st OntologyDocument
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix ReckersbasicSpec pm = do
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder nss <- many nsEntry
ba0ec5e897ef99d420c8c14c2374e0f32b7043dbKlaus Luettich ou <- option nullIRI $ pkeyword ontologyC >> option nullIRI uriP
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers ie <- many importEntry
5b818f10e11fc79def1fdd5c8a080d64a6438d87Christian Maeder ans <- many annotations
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder as <- frames
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder if null nss && null ie && null ans && null as && ou == nullIRI
5b818f10e11fc79def1fdd5c8a080d64a6438d87Christian Maeder then fail "empty ontology"
88c66e48620750c42b94db9feb01b42ae23dba97Till Mossakowski else return $ OntologyDocument
5b818f10e11fc79def1fdd5c8a080d64a6438d87Christian Maeder (Map.union (Map.fromList $ map (\ (p, q) -> (p, showIRICompact q)) nss)
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder (convertPrefixMap pm))
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder (emptyOntology as)
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers { imports = ie
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers , ann = ans
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers , name = ou }
ac43fa22d2d3f91a17674ac164cba3cf39a17795Klaus Luettich