PrintRDF.hs revision d0279930f87bf39843e0bd2992a4789322662144
43b4c41fbb07705c9df321221ab9cb9832460407Christian Maeder{- |
c63ebf815c8a874525cf18670ad74847f7fc7b26Christian MaederModule : $Header$
456238178f89e5a3de2988ee6c8af924297d52d9Christian MaederCopyright : (c) Heng Jiang, Uni Bremen 2004-2008
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederLicense : similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederMaintainer : jiang@informatik.uni-bremen.de
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederStability : provisional
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederPortability : non-portable(instances for URIreference and Namespace)
43b4c41fbb07705c9df321221ab9cb9832460407Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian MaederPretty printing for OWL DL theories from abstract syntax to RDF\/OWL file.
f4a2a20e49f41b2afa657e5e64d9e349c7faa091Christian Maeder-}
f2f9df2e17e70674f0bf426ed1763c973ee4cde0Christian Maeder
c9a7e6af169a2adfb92f42331cd578065ed83a2bChristian Maedermodule OWL.PrintRDF where
c9a7e6af169a2adfb92f42331cd578065ed83a2bChristian Maeder
e7757995211bd395dc79d26fe017d99375f7d2a6Christian Maederimport Common.Doc
e7757995211bd395dc79d26fe017d99375f7d2a6Christian Maederimport Text.XML.HXT.DOM.QualifiedName (QName(..))
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maederimport OWL.Sign
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maederimport OWL.AS
a1ed34933c266ce85066acb0d7b20c90cb8eb213Christian Maeder
c0c2380bced8159ff0297ece14eba948bd236471Christian Maederimport qualified Common.AS_Annotation as AS_Anno
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettichimport qualified Data.Map as Map
b1f59a4ea7c96f4c03a4d7cfcb9c5e66871cfbbbChristian Maeder
ad270004874ce1d0697fb30d7309f180553bb315Christian Maeder-- import Debug.Trace
404166b9366552e9ec5abb87a37c76ec8a815fb7Klaus Luettich
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maedertype AssMap = Map.Map IndividualURI OwlClassURI
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder
1a38107941725211e7c3f051f7a8f5e12199f03acmaederclass PrettyRDF a where
ef9e8535c168d3f774d9e74368a2317a9eda5826Christian Maeder printRDF :: AssMap -> a -> Doc
bab2d88d650448628730ed3b65c9f99c52500e8cChristian Maeder-- printRDFs :: [a] -> AssMap -> Doc
3e8b136f23ed57d40ee617f49bcac37830b58cabChristian Maeder-- printRDFs = brackets . ppWithCommas
ef9e8535c168d3f774d9e74368a2317a9eda5826Christian Maeder
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maederinstance PrettyRDF Sign where
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder printRDF _ = printOntologyHead
3dde4051c307b609159a097f08a05108fdd036efJonathan von Schroeder
3dde4051c307b609159a097f08a05108fdd036efJonathan von SchroederprintOntologyHead :: Sign -> Doc
3dde4051c307b609159a097f08a05108fdd036efJonathan von SchroederprintOntologyHead sig =
3dde4051c307b609159a097f08a05108fdd036efJonathan von Schroeder let ns = namespaceMap sig
3dde4051c307b609159a097f08a05108fdd036efJonathan von Schroeder oID = ontologyID sig
3dde4051c307b609159a097f08a05108fdd036efJonathan von Schroeder in text "<?xml version=\"1.0\"?>" $++$
3dde4051c307b609159a097f08a05108fdd036efJonathan von Schroeder printNamespace oID ns $++$ nest 4 <>
3dde4051c307b609159a097f08a05108fdd036efJonathan von Schroeder text "<owl:Ontology" <+> printURI oID <> text ">" $+$ nest 4 <>
3dde4051c307b609159a097f08a05108fdd036efJonathan von Schroeder text "</owl:Ontology>"
3dde4051c307b609159a097f08a05108fdd036efJonathan von Schroeder
3dde4051c307b609159a097f08a05108fdd036efJonathan von Schroeder{-
825a1e4ca1e768de4b4883c65a6cb1dce6aa0002Christian Maeder<?xml version="1.0"?>
3dde4051c307b609159a097f08a05108fdd036efJonathan von Schroeder
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder<!DOCTYPE rdf:RDF [
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder <!ENTITY family "http://www.example.org/family#" >
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder <!ENTITY owl11 "http://www.w3.org/2006/12/owl11#" >
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder <!ENTITY owl11xml "http://www.w3.org/2006/12/owl11-xml#" >
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
4b4a0b61b72cf8478a5d4d5002bca9f699401363Christian Maeder <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
4b4a0b61b72cf8478a5d4d5002bca9f699401363Christian Maeder]>
308834907a120fd8771e18292ed2ca9cd767c12dChristian Maeder
bab2d88d650448628730ed3b65c9f99c52500e8cChristian Maeder<rdf:RDF xmlns="http://www.example.org/family#"
9f226cec9f978edaba67aee4c4e04e3d3b994b87Daniel Calegari xml:base="http://www.example.org/family"
8cacad2a09782249243b80985f28e9387019fe40Christian Maeder xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
6a2dad705deefd1b7a7e09b84fd2d75f2213be47Christian Maeder xmlns:owl11="http://www.w3.org/2006/12/owl11#"
a7c27282e71cf4505026645f96d4f5cb8a284e32Christian Maeder xmlns:owl11xml="http://www.w3.org/2006/12/owl11-xml#"
363939beade943a02b31004cea09dec34fa8a6d9Christian Maeder xmlns:family="http://www.example.org/family#"
014dc30f64ec25e4790cca987d4d1e6635430510Christian Maeder xmlns:owl="http://www.w3.org/2002/07/owl#"
f04e8f3ff56405901be968fd4c6e9769239f1a9bKlaus Luettich xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
6aea82c63ba1d2efc0329bc784a14e521469ec20Christian Maeder xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
4ba08bfca0cc8d9da65397b8dfd2654fdb4c0e62Christian Maeder <owl:Ontology rdf:about="">
feca1d35123d8c31aee238c9ce79947b0bf65494Christian Maeder <rdfs:comment
431d34c7007a787331c4e5ec997badb0f8190fc7Christian Maeder >An example to test features from OWL 1.1</rdfs:comment>
f1541d4a151dbd08002dbd14e7eb1d5dde253689Christian Maeder </owl:Ontology>
f5c0884429b01e74c6e658ded921fb2e16dfb478Christian Maeder-}
db675e8302ddb0d6528088ce68f5e98a00e890e3Christian Maeder
f1541d4a151dbd08002dbd14e7eb1d5dde253689Christian Maeder
6dc9bc98d0854fe2e3dd3bfc4275096a0c28ee1cChristian Maederinstance PrettyRDF URIreference where
6dc9bc98d0854fe2e3dd3bfc4275096a0c28ee1cChristian Maeder printRDF _ = printURI
6dc9bc98d0854fe2e3dd3bfc4275096a0c28ee1cChristian Maeder
23ffcc44ca8612feccbd8fda63fa5be7ab5f9dc3Christian MaederprintURI :: URIreference -> Doc
61fa0ac06ede811c7aad54ec4c4202346727368eChristian MaederprintURI ur =
c0c2380bced8159ff0297ece14eba948bd236471Christian Maeder printURIWithAttr "rdf:about" ur
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian MaederprintResource :: URIreference -> Doc
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian MaederprintResource ur =
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder printURIWithAttr "rdf:resource" ur
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder
9e748851c150e1022fb952bab3315e869aaf0214Christian MaederprintURIWithAttr :: String -> URIreference -> Doc
6a79849bed67264c396dddb3e9c184bdfc1a1bc9Christian MaederprintURIWithAttr attr (QN prefix localpart u)
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder -- | localpart == "_" = text $ show "_"
a3c6d8e0670bf2aa71bc8e2a3b1f45d56dd65e4cChristian Maeder | null prefix = if null u then
dc679edd4ca027663212afdf00926ae2ce19b555Christian Maeder text (attr ++ "=" ++ show localpart)
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder else if null localpart then
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder text (attr ++ "=" ++ show u)
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder else text (attr ++ "=" ++
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder show (u ++ ";" ++ localpart))
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder | otherwise = text (attr ++ "=" ++
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder show ("&" ++ prefix ++ ";" ++ localpart))
4017ebc0f692820736d796af3110c3b3018c108aChristian Maeder
b568982efd0997d877286faa592d81b03c8c67b8Christian MaederprintNamespace :: OntologyID -> Namespace -> Doc
ca074a78b8dcccbb8c419586787882f98d0c6163Christian MaederprintNamespace oid nsMap =
0be0db405c49906bd7057255069bf6df53395ac9Klaus Luettich printDOCTYPE $++$
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder text "<rdf:RDF" <+>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder text ("xmlns"++"=") <>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder text ("\"" ++ (localPart oid) ++ "#\"") $+$ nest 9 <>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder pp ("base", localPart oid) $+$ nest 9 <>
f2f9df2e17e70674f0bf426ed1763c973ee4cde0Christian Maeder (vcat $ map pp (Map.toList nsMap)) <+>
d946c1bfdd7d58aa7c023efe864d5999eb44a61bChristian Maeder text ">"
d946c1bfdd7d58aa7c023efe864d5999eb44a61bChristian Maeder where pp :: (String, String) -> Doc
d946c1bfdd7d58aa7c023efe864d5999eb44a61bChristian Maeder pp (s1,s2) = text ("xmlns:"++s1++"=") <> text ("\"" ++s2 ++ "\"")
d946c1bfdd7d58aa7c023efe864d5999eb44a61bChristian Maeder
d946c1bfdd7d58aa7c023efe864d5999eb44a61bChristian Maeder printDOCTYPE =
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder text "<!DOCTYPE rdf:RDF [" $+$ nest 4 <>
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder (vcat $ map printDT (Map.toList nsMap)) $+$
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder text "]>"
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder printDT :: (String, String) -> Doc
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder printDT (prefix, u) =
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder text ("<!ENTITY " ++ prefix ++ " \"" ++ u ++ "\">")
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maederinstance PrettyRDF SignAxiom where
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder printRDF _ = text . show -- printSignAxiom ignored
ca074a78b8dcccbb8c419586787882f98d0c6163Christian Maeder
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maederinstance PrettyRDF Description where
3e8b136f23ed57d40ee617f49bcac37830b58cabChristian Maeder printRDF _ = printDescription
f1541d4a151dbd08002dbd14e7eb1d5dde253689Christian Maeder
6dc9bc98d0854fe2e3dd3bfc4275096a0c28ee1cChristian MaederprintDescription :: Description -> Doc
58b96b17bf8e32c0b0d773380a5e62f992eef2bcChristian MaederprintDescription desc =
e6d5dbbc3308f05197868806e0b860f4f53875f1Christian Maeder case desc of
363939beade943a02b31004cea09dec34fa8a6d9Christian Maeder OWLClass ocUri ->
58b96b17bf8e32c0b0d773380a5e62f992eef2bcChristian Maeder oneLineTagToDoc "rdf:Description" (printURI ocUri)
e4f4d096e5e6d60dd91c746d0e833d0ac7a29c50Christian Maeder -- text "<owl:Class" <+> printURI ocUri
eb74267cf39e4e95f9eeb5c765f4c8dac33971b4Christian Maeder -- <+> text "/>"
eb74267cf39e4e95f9eeb5c765f4c8dac33971b4Christian Maeder ObjectUnionOf descList -> -- no example
e4f4d096e5e6d60dd91c746d0e833d0ac7a29c50Christian Maeder tagToDocWithAttr "owl:UnionOf" "rdf:parseType=\"Collection\""
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maeder (listToDoc' (printRDF Map.empty) descList)
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder
f1541d4a151dbd08002dbd14e7eb1d5dde253689Christian Maeder ObjectIntersectionOf descList ->
8d178ae08a52d61379e6b8074f61646499bc88bbChristian Maeder tagToDocWithAttr "owl:intersectionOf" "rdf:parseType=\"Collection\""
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder (listToDoc' (printRDF Map.empty) descList)
6cd33d6101fb1b93baa6d86fac158af18a115108Christian Maeder {-
6cd33d6101fb1b93baa6d86fac158af18a115108Christian Maeder <owl:intersectionOf rdf:parseType="Collection">
6cd33d6101fb1b93baa6d86fac158af18a115108Christian Maeder ...
6cd33d6101fb1b93baa6d86fac158af18a115108Christian Maeder <rdf:Description rdf:about="#Person"/>
6cd33d6101fb1b93baa6d86fac158af18a115108Christian Maeder </owl:intersectionOf>
b2ac5a92cf36382e8deea5661c1964566caf72b3Christian Maeder -}
ea5432ff6f61c64469b11d9352b23fef4ff152e8Christian Maeder ObjectComplementOf d ->
b2ac5a92cf36382e8deea5661c1964566caf72b3Christian Maeder case d of
b2ac5a92cf36382e8deea5661c1964566caf72b3Christian Maeder OWLClass curi ->
7d0ee72ee91ec305408688b969c43f07b9667c80Christian Maeder tagToDoc "owl:Class"
7d0ee72ee91ec305408688b969c43f07b9667c80Christian Maeder (oneLineTagToDoc "owl:complementOf"
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder (printResource curi))
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder _ ->
0e5b095a19790411e5352fa7cf57cb0388e70472Christian Maeder tagToDoc "owl:complementOf" (printRDF Map.empty d)
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder ObjectOneOf indUriList ->
f1a913f880e409e7327b5deae95738b5448379a1Christian Maeder tagToDocWithAttr "owl:oneOf" "rdf:parseType=\"Collection\""
f1a913f880e409e7327b5deae95738b5448379a1Christian Maeder (listToDoc' (\i -> oneLineTagToDoc "rdf:Description" (printURI i))
f1a913f880e409e7327b5deae95738b5448379a1Christian Maeder indUriList)
f1a913f880e409e7327b5deae95738b5448379a1Christian Maeder {-
14c56dc499da4bbeaeebeb558ceb755150ae341cChristian Maeder <owl:oneOf rdf:parseType="Collection">
c9a7e6af169a2adfb92f42331cd578065ed83a2bChristian Maeder <rdf:Description rdf:about="#grandmother"/>
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder <rdf:Description rdf:about="#mother"/>
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder <rdf:Description rdf:about="#father"/>
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder <rdf:Description rdf:about="#uncle"/>
93f5b72fdb9ee734caa750b43dd79bbb590dcd73Christian Maeder <rdf:Description rdf:about="#daughter"/>
81f49ee02aaa3bc870401f8883bf52742eb3ea7aJonathan von Schroeder <rdf:Description rdf:about="#grandfather"/>
93f5b72fdb9ee734caa750b43dd79bbb590dcd73Christian Maeder <rdf:Description rdf:about="#son"/>
93f5b72fdb9ee734caa750b43dd79bbb590dcd73Christian Maeder </owl:oneOf>
328a85c807f2a95c3f147d10b05927eaf862ebebChristian Maeder -}
8fb127028cb7dd361e348a3252e33487f73428bcJonathan von Schroeder ObjectAllValuesFrom opExp d ->
06dd4e7c29f33f6122a910719e3bd9062256e397Andy Gimblett tagToDoc "owl:Restriction"
254df6f22d01eacf7c57b85729e0445747b630d9Christian Maeder (printOPERes opExp $+$
4ba08bfca0cc8d9da65397b8dfd2654fdb4c0e62Christian Maeder tagToDoc "owl:allValuesFrom" (printRDF Map.empty d))
bff4b3f816be4c1e1d8ded76f1d5af786839e1a9Christian Maeder {-
5b818f10e11fc79def1fdd5c8a080d64a6438d87Christian Maeder <owl:Restriction>
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers <owl:onProperty rdf:resource="#isMarriedTo"/>
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder <owl:allValuesFrom rdf:resource="#Male"/>
819e29dba060687cf391e444e0f6ff88c1908cc3Christian Maeder </owl:Restriction>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder -}
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder
140287998aa8592c9c403bd9e308e447ba92ae11Christian Maeder ObjectSomeValuesFrom opExp d ->
c208973c890b8f993297720fd0247bc7481d4304Christian Maeder tagToDoc "owl:Restriction"
0d0278c34a374b29c2d6c58b39b8b56e283d48e8Christian Maeder (printOPERes opExp $+$
aded505f9b42cc38975559c2a5d175ae95de436bChristian Maeder tagToDoc "owl:someValuesFrom" (printRDF Map.empty d))
3554301a34639efb6c9961a8571775d0061284c9Christian Maeder
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers ObjectExistsSelf opExp ->
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder tagToDoc "owl11:SelfRestriction"
9e748851c150e1022fb952bab3315e869aaf0214Christian Maeder (tagToDoc "owl:onProperty" (printRDF Map.empty opExp))
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maeder ObjectHasValue opExp indUri ->
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder tagToDoc "owl:Restriction"
383aa66e5142365fe9b1f88b18c1da5b27cc8c04Christian Maeder (printOPERes opExp $+$
383aa66e5142365fe9b1f88b18c1da5b27cc8c04Christian Maeder oneLineTagToDoc "owl:hasValue" (printResource indUri))
383aa66e5142365fe9b1f88b18c1da5b27cc8c04Christian Maeder
3554301a34639efb6c9961a8571775d0061284c9Christian Maeder ObjectMinCardinality card opExp maybeDesc ->
3554301a34639efb6c9961a8571775d0061284c9Christian Maeder tagToDoc "owl:Restriction"
3554301a34639efb6c9961a8571775d0061284c9Christian Maeder (text "<owl:minCardinality rdf:datatype=\"&xsd;nonNegativeInteger\">" <> text (show card) <> text "</owl:minCardinality>" $+$
383aa66e5142365fe9b1f88b18c1da5b27cc8c04Christian Maeder printOPERes opExp $+$
aded505f9b42cc38975559c2a5d175ae95de436bChristian Maeder maybe empty printOnClass maybeDesc)
aded505f9b42cc38975559c2a5d175ae95de436bChristian Maeder
aded505f9b42cc38975559c2a5d175ae95de436bChristian Maeder {-
aded505f9b42cc38975559c2a5d175ae95de436bChristian Maeder <owl:Restriction>
aded505f9b42cc38975559c2a5d175ae95de436bChristian Maeder <owl:onProperty rdf:resource="#hasChild"/>
aded505f9b42cc38975559c2a5d175ae95de436bChristian Maeder <owl11:onClass rdf:resource="#Female"/>
383aa66e5142365fe9b1f88b18c1da5b27cc8c04Christian Maeder <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">2</owl:minCardinality>
383aa66e5142365fe9b1f88b18c1da5b27cc8c04Christian Maeder </owl:Restriction>
a14767aeac3e78ed100f5b75e210ba563ee10dbaChristian Maeder -}
a14767aeac3e78ed100f5b75e210ba563ee10dbaChristian Maeder
a14767aeac3e78ed100f5b75e210ba563ee10dbaChristian Maeder ObjectMaxCardinality card opExp maybeDesc ->
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder tagToDoc "owl:Restriction"
3554301a34639efb6c9961a8571775d0061284c9Christian Maeder (text "<owl:maxCardinality rdf:datatype=\"&xsd;nonNegativeInteger\">" <> text (show card) <> text "</owl:maxCardinality>" $+$
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder printOPERes opExp $+$
54ea981a0503c396c2923a1c06421c6235baf27fChristian Maeder maybe empty printOnClass maybeDesc
54ea981a0503c396c2923a1c06421c6235baf27fChristian Maeder )
54ea981a0503c396c2923a1c06421c6235baf27fChristian Maeder
697e63e30aa3c309a1ef1f9357745111f8dfc5a9Christian Maeder ObjectExactCardinality card opExp maybeDesc ->
db6729e623b4053149084ccf4b35e5308ac7e359Christian Maeder tagToDoc "owl:Restriction"
697e63e30aa3c309a1ef1f9357745111f8dfc5a9Christian Maeder (text "<owl:cardinality rdf:datatype=\"&xsd;nonNegativeInteger\">" <> text (show card) <> text "</owl:cardinality>" $+$
f9e0b18852b238ddb649d341194e05d7200d1bbeChristian Maeder printOPERes opExp $+$
aded505f9b42cc38975559c2a5d175ae95de436bChristian Maeder maybe empty printOnClass maybeDesc)
f9e0b18852b238ddb649d341194e05d7200d1bbeChristian Maeder
819e29dba060687cf391e444e0f6ff88c1908cc3Christian Maeder
819e29dba060687cf391e444e0f6ff88c1908cc3Christian Maeder DataAllValuesFrom dpExp dpExpList dRange ->
819e29dba060687cf391e444e0f6ff88c1908cc3Christian Maeder tagToDoc "owl:Restriction"
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder (listToDoc' (\d -> oneLineTagToDoc "owl:onProperty"
254df6f22d01eacf7c57b85729e0445747b630d9Christian Maeder (printResource d)) (dpExp:dpExpList) $+$
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder tagToDoc "owl:allValuesFrom" (tagToDoc "rdf:Description"
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder (printRDF Map.empty dRange)))
254df6f22d01eacf7c57b85729e0445747b630d9Christian Maeder {-
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder <owl:Restriction>
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder <owl:onProperty rdf:resource="#hasAge"/>
254df6f22d01eacf7c57b85729e0445747b630d9Christian Maeder <owl:allValuesFrom>
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder .. ..
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder </owl:allValuesFrom>
aded505f9b42cc38975559c2a5d175ae95de436bChristian Maeder </owl:Restriction>
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder -}
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder DataSomeValuesFrom dpExp dpExpList dRange ->
ac34194a668399bb8ef238da77c3a09e93fb253bChristian Maeder tagToDoc "owl:Restriction"
4fc9de0da898448f1d3597ebbd8c04a066464c21Christian Maeder (listToDoc' (\d -> oneLineTagToDoc "owl:onProperty"
aded505f9b42cc38975559c2a5d175ae95de436bChristian Maeder (printResource d)) (dpExp:dpExpList) $+$
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder tagToDoc "owl:someValuesFrom" (printRDF Map.empty dRange))
c208973c890b8f993297720fd0247bc7481d4304Christian Maeder
c208973c890b8f993297720fd0247bc7481d4304Christian Maeder DataHasValue dpExp cons ->
c208973c890b8f993297720fd0247bc7481d4304Christian Maeder tagToDoc "owl:Restriction"
0d0278c34a374b29c2d6c58b39b8b56e283d48e8Christian Maeder (oneLineTagToDoc "owl:onProperty" (printResource dpExp)$+$
0d0278c34a374b29c2d6c58b39b8b56e283d48e8Christian Maeder tagToDoc "owl:hasValue" (printRDF Map.empty cons))
0d0278c34a374b29c2d6c58b39b8b56e283d48e8Christian Maeder
1842453990fed8a1bd7a5ac792d7982c1d2bfcd5Christian Maeder DataMinCardinality card dpExp maybeRange ->
0d0278c34a374b29c2d6c58b39b8b56e283d48e8Christian Maeder tagToDoc "owl:Restriction"
1842453990fed8a1bd7a5ac792d7982c1d2bfcd5Christian Maeder (oneLineTagToDoc "owl:onProperty" (printResource dpExp) $+$
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder text "<owl:minCardinality rdf:datatype=\"&xsd;nonNegativeInteger\">" <> text (show card) <> text "</owl:minCardinality>" $+$
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder maybe empty (printRDF Map.empty) maybeRange)
986d3f255182539098a97ac86da9eeee5b7a72e3Christian Maeder
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maeder DataMaxCardinality card dpExp maybeRange ->
4561227a776bdf0ab679b19fb92f1eaaed8786f7Christian Maeder tagToDoc "owl:Restriction"
01e278bdd7dce13b9303ed3d79683d83c89d09f9Liam O'Reilly (oneLineTagToDoc "owl:onProperty" (printResource dpExp) $+$
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maeder text "<owl:maxCardinality rdf:datatype=\"&xsd;nonNegativeInteger\">" <> text (show card) <> text "</owl:maxCardinality>" $+$
5ad5dffe06818a13e1632b1119fbca7881085fc1Dominik Luecke maybe empty (printRDF Map.empty) maybeRange)
8c812cd83569e973f10cf69a342424ceabc07af9Christian Maeder
8c812cd83569e973f10cf69a342424ceabc07af9Christian Maeder DataExactCardinality card dpExp maybeRange ->
8c812cd83569e973f10cf69a342424ceabc07af9Christian Maeder tagToDoc "owl:Restriction"
1535e1d8c82db5f7e2402261983c4c2ef39f4f39Mihai Codescu (oneLineTagToDoc "owl:onProperty" (printResource dpExp) $+$
31d6d9286988dc31639d105841296759aeb743e0Jonathan von Schroeder text "<owl:cardinality rdf:datatype=\"&xsd;nonNegativeInteger\">" <> text (show card) <> text "</owl:cardinality>" $+$
1535e1d8c82db5f7e2402261983c4c2ef39f4f39Mihai Codescu maybe empty (printRDF Map.empty) maybeRange)
7a3fe82695aa32657693e05712f84d7f81672f2eJonathan von Schroeder
7a3fe82695aa32657693e05712f84d7f81672f2eJonathan von Schroeder
7a3fe82695aa32657693e05712f84d7f81672f2eJonathan von Schroederinstance PrettyRDF ObjectPropertyExpression where
7a3fe82695aa32657693e05712f84d7f81672f2eJonathan von Schroeder printRDF _ = printObjPropExp
05a206508bc898f87fe6ab6e069814df3c29d303Dominik Luecke
05a206508bc898f87fe6ab6e069814df3c29d303Dominik LueckeprintObjPropExp :: ObjectPropertyExpression -> Doc
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian MaederprintObjPropExp opExp =
81f49ee02aaa3bc870401f8883bf52742eb3ea7aJonathan von Schroeder case opExp of
81f49ee02aaa3bc870401f8883bf52742eb3ea7aJonathan von Schroeder OpURI ou -> oneLineTagToDoc "owl:ObjectProperty" (printURI ou)
81f49ee02aaa3bc870401f8883bf52742eb3ea7aJonathan von Schroeder InverseOp iopExp -> tagToDoc "owl:InverseObjectProperties"
d54cd08a4cfa26256c38d8ed12c343adbfe1a0e3Christian Maeder (printRDF Map.empty iopExp)
d54cd08a4cfa26256c38d8ed12c343adbfe1a0e3Christian Maeder {-
d54cd08a4cfa26256c38d8ed12c343adbfe1a0e3Christian Maeder <owl:ObjectProperty rdf:about="#hasChild">
3b06e23643a9f65390cb8c1caabe83fa7e87a708Till Mossakowski <owl:inverseOf rdf:resource="#hasParent"/>
b1f59a4ea7c96f4c03a4d7cfcb9c5e66871cfbbbChristian Maeder </owl:ObjectProperty>
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder -}
8c812cd83569e973f10cf69a342424ceabc07af9Christian Maeder
0b349288edfa50fdf38fda1a14e1562d03f92574Christian MaederprintOPERes :: ObjectPropertyExpression -> Doc
5afff1a0f62394414c33b06141175b3ab0b117a5Christian MaederprintOPERes opExp =
5afff1a0f62394414c33b06141175b3ab0b117a5Christian Maeder case opExp of
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maeder OpURI ou -> oneLineTagToDoc "owl:onProperty" (printResource ou)
1b3a2f98d1cd01fc9e0591f69507e20526727559Dominik Luecke InverseOp iopExp -> tagToDoc "owl:InverseObjectProperties"
f04e8f3ff56405901be968fd4c6e9769239f1a9bKlaus Luettich (printOPERes iopExp)
e39a1626bee36d6ad13a2c0014a80ef179a65bcbChristian Maeder
f8e1a1eca871a26a535a4ee7d51902ba94b1db1eChristian Maeder
ea3bff3e547a1ac714d4db39c5efef95e02b2e7dChristian MaederprintURIFromOPExp :: ObjectPropertyExpression -> Doc
dd6f22b9dcff2695181b86372e4df03d5b96e92dKristina SojakovaprintURIFromOPExp opExp =
005e0f0c6b0cc898003b03801158c208f3071fc5Kristina Sojakova case opExp of
abf2487c3aece95c371ea89ac64319370dcb6483Klaus Luettich OpURI ou -> printURI ou
23b4e542dca35852f58d1fb3f7d9078c1de5ab06Christian Maeder _ -> error ("ObjectPropertyExpression has not only the URI: "
23b4e542dca35852f58d1fb3f7d9078c1de5ab06Christian Maeder ++ show opExp)
23b4e542dca35852f58d1fb3f7d9078c1de5ab06Christian Maeder
76b9b2974795a6fb31f242fd032de3ff66df6204Christian MaederprintURIFromOPExpRes :: ObjectPropertyExpression -> Doc
74a992bd019d3319df2f21f9d358ff06cafb5f7eMihaela TurcuprintURIFromOPExpRes opExp =
8a78868bae2ec6838c87366c35c57e109154c51eChristian Maeder case opExp of
878a5ecd6acf973907e25e5be6e4a792ea19a05eEwaryst Schulz OpURI ou -> printResource ou
878a5ecd6acf973907e25e5be6e4a792ea19a05eEwaryst Schulz _ -> error ("ObjectPropertyExpression has not only the URI: "
c2e192ace9ef7cfb0e59563f1b24477b2b65cff3Dominik Dietrich ++ show opExp)
6b75c206b317eb30a08d88a8f27e0295ffeb1546Christian Maeder
9a4b469ca0a7f44a598e551a973c75195207db58Eugen KuksaprintURIFromDesc :: Description -> Doc
48aa0645e25883048369afc02aac3f49b14a50daChristian MaederprintURIFromDesc desc =
01645eac73dbc789392674930adc5745c935f3a0Christian Maeder case desc of
01645eac73dbc789392674930adc5745c935f3a0Christian Maeder OWLClass curi -> printURI curi
bff4b3f816be4c1e1d8ded76f1d5af786839e1a9Christian Maeder _ -> error ("Description has not only a class URI:" ++ show desc)
bff4b3f816be4c1e1d8ded76f1d5af786839e1a9Christian Maeder
3a9fce5398f4621558ca220c66c87cee59adc258Jonathan von SchroederprintURIFromDescRes :: Description -> Doc
b5da047a9a875dec3f968b6c0df96af326f90fa9Alexis TsogiasprintURIFromDescRes desc =
0a03acf9fa28e6ff00f4d7c9c6acbae64cf09c56Ewaryst Schulz case desc of
0a03acf9fa28e6ff00f4d7c9c6acbae64cf09c56Ewaryst Schulz OWLClass curi -> printResource curi
a604cbad8e2202147b5c6bb9f2e06ae61162d654Felix Gabriel Mance _ -> error ("Description has not only a class: " ++ show desc)
308834907a120fd8771e18292ed2ca9cd767c12dChristian Maeder
308834907a120fd8771e18292ed2ca9cd767c12dChristian Maeder
7834a982096d93301a4626f444dd9ea5f9fe17eaChristian Maederinstance PrettyRDF DataRange where
1f9274bb2aa44ea236327814dce99946be52e348Felix Gabriel Mance printRDF _ = printDataRange
1f9274bb2aa44ea236327814dce99946be52e348Felix Gabriel Mance
bab2d88d650448628730ed3b65c9f99c52500e8cChristian Maeder{-
8fd6a3f938496a502bc62f1923ff7c15f59acf91Christian Maeder <owl:DatatypeProperty rdf:ID="datatypeProperty_1">
4b4a0b61b72cf8478a5d4d5002bca9f699401363Christian Maeder <rdfs:range>
9f226cec9f978edaba67aee4c4e04e3d3b994b87Daniel Calegari <owl:DataRange>
9f226cec9f978edaba67aee4c4e04e3d3b994b87Daniel Calegari <owl:oneOf rdf:parseType="Resource">
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder <rdf:rest
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maederrdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder <rdf:first
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maederrdf:datatype="http://www.w3.org/2001/XMLSchema#string"
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder >78</rdf:first>
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder </owl:oneOf>
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder </owl:DataRange>
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder </rdfs:range>
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder </owl:DatatypeProperty>
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder-}
7a3fe82695aa32657693e05712f84d7f81672f2eJonathan von Schroeder
7a3fe82695aa32657693e05712f84d7f81672f2eJonathan von SchroederprintDataRange :: DataRange -> Doc
7a3fe82695aa32657693e05712f84d7f81672f2eJonathan von SchroederprintDataRange dr =
1535e1d8c82db5f7e2402261983c4c2ef39f4f39Mihai Codescu -- (tagToDoc "owl:DataRange"
1535e1d8c82db5f7e2402261983c4c2ef39f4f39Mihai Codescu case dr of
1535e1d8c82db5f7e2402261983c4c2ef39f4f39Mihai Codescu DRDatatype du ->
1535e1d8c82db5f7e2402261983c4c2ef39f4f39Mihai Codescu oneLineTagToDoc "rdf:datatype"
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder (printResource du)
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder -- <Datatype URI="&rdfs;Literal"/>
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder DataComplementOf drange ->
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder tagToDoc "owl:ComplementOf"
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder (tagToDoc "rdf:Description" $ printRDF Map.empty drange)
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder DataOneOf constList ->
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder text "<owl:oneOf rdf:parseType=\"Resource\">" $+$nest 4 <>
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder listToDoc' (printRDF Map.empty) constList $+$
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder text "</owl:oneOf>"
81f49ee02aaa3bc870401f8883bf52742eb3ea7aJonathan von Schroeder DatatypeRestriction drange l ->
81f49ee02aaa3bc870401f8883bf52742eb3ea7aJonathan von Schroeder -- DatatypeRestriction DataRange [(DatatypeFacet, RestrictionValue)]
81f49ee02aaa3bc870401f8883bf52742eb3ea7aJonathan von Schroeder oneLineTagToDoc "rdf:type" (text "rdf:resource=\"&owl;DataRange\"")
81f49ee02aaa3bc870401f8883bf52742eb3ea7aJonathan von Schroeder $+$ oneLineTagToDoc "owl11:onDataRange"
81f49ee02aaa3bc870401f8883bf52742eb3ea7aJonathan von Schroeder (case drange of
81f49ee02aaa3bc870401f8883bf52742eb3ea7aJonathan von Schroeder DRDatatype u -> printResource u
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder _ -> error "unknown datatype.")
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder $+$ (vcat $ map printFV l)
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder
456238178f89e5a3de2988ee6c8af924297d52d9Christian MaederprintOnClass :: Description -> Doc
456238178f89e5a3de2988ee6c8af924297d52d9Christian MaederprintOnClass desc =
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder case desc of
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder OWLClass c -> oneLineTagToDoc "owl11:onClass" (printResource c)
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder _ -> text $ show desc -- debug
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder -- <owl11:onClass rdf:resource="#Female"/>
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder
456238178f89e5a3de2988ee6c8af924297d52d9Christian MaederprintFV :: (DatatypeFacet, RestrictionValue) -> Doc
456238178f89e5a3de2988ee6c8af924297d52d9Christian MaederprintFV (facet, restValue) = printFacet facet
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder (getValueFromConst restValue)
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder
456238178f89e5a3de2988ee6c8af924297d52d9Christian MaedergetValueFromConst :: Constant -> Doc
456238178f89e5a3de2988ee6c8af924297d52d9Christian MaedergetValueFromConst cons =
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder case cons of
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder TypedConstant (lexi, _) ->
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder text lexi
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder UntypedConstant (lexi, _) ->
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder text lexi
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder
456238178f89e5a3de2988ee6c8af924297d52d9Christian MaederprintFacet :: DatatypeFacet -> Doc -> Doc
456238178f89e5a3de2988ee6c8af924297d52d9Christian MaederprintFacet facet doc =
5199920ca3b698b2149c8cb9d2ce2e98a280ff9dChristian Maeder (text "<" <> printRDF Map.empty facet <+> text "rdf:datatype=\"&xsd;int\">") <>
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder doc <>
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder text "</"<> printRDF Map.empty facet <> text ">"
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maederinstance PrettyRDF DatatypeFacet where
9f85afecbd79b3df5a0bb17bd28cd0b288dc3213Kristina Sojakova printRDF _ df =
48aa0645e25883048369afc02aac3f49b14a50daChristian Maeder case df of
9f85afecbd79b3df5a0bb17bd28cd0b288dc3213Kristina Sojakova LENGTH -> text "owl11:length"
79834070d6d3c63a098e570b12fa3405c607dc70Kristina Sojakova MINLENGTH -> text "owl11:minLength"
79834070d6d3c63a098e570b12fa3405c607dc70Kristina Sojakova MAXLENGTH -> text "owl11:maxLength"
79834070d6d3c63a098e570b12fa3405c607dc70Kristina Sojakova PATTERN -> text "owl11:pattern"
23b4e542dca35852f58d1fb3f7d9078c1de5ab06Christian Maeder MININCLUSIVE -> text "owl11:minInclusive"
23b4e542dca35852f58d1fb3f7d9078c1de5ab06Christian Maeder MINEXCLUSIVE -> text "owl11:minExclusive"
23b4e542dca35852f58d1fb3f7d9078c1de5ab06Christian Maeder MAXINCLUSIVE -> text "owl11:maxInclusive"
8a78868bae2ec6838c87366c35c57e109154c51eChristian Maeder MAXEXCLUSIVE -> text "owl11:maxExclusive"
8a78868bae2ec6838c87366c35c57e109154c51eChristian Maeder TOTALDIGITS -> text "owl11:totalDigits"
8a78868bae2ec6838c87366c35c57e109154c51eChristian Maeder FRACTIONDIGITS -> text "owl11:fractionDigits"
624e6701e0deb7ac6c03c0cba0190fbc5033cf93Ewaryst Schulz
624e6701e0deb7ac6c03c0cba0190fbc5033cf93Ewaryst Schulzinstance PrettyRDF Constant where
c2e192ace9ef7cfb0e59563f1b24477b2b65cff3Dominik Dietrich printRDF _ cons =
7165a916d2fa1bf87c4741ec63b253413eebbf69Karl Luc case cons of
7165a916d2fa1bf87c4741ec63b253413eebbf69Karl Luc TypedConstant (lexi, u) ->
7165a916d2fa1bf87c4741ec63b253413eebbf69Karl Luc text "<owl11:Constant rdfs:Datatype=" <>
01645eac73dbc789392674930adc5745c935f3a0Christian Maeder (text $ show$localPart u) <>
01645eac73dbc789392674930adc5745c935f3a0Christian Maeder text (">" ++ lexi) <> text "</owl11:Constant>"
01645eac73dbc789392674930adc5745c935f3a0Christian Maeder -- <Constant Datatype="&xsd;int">20</Constant>
bff4b3f816be4c1e1d8ded76f1d5af786839e1a9Christian Maeder UntypedConstant (lexi, _) ->
bff4b3f816be4c1e1d8ded76f1d5af786839e1a9Christian Maeder text "<owl11:Constant>" <>
bff4b3f816be4c1e1d8ded76f1d5af786839e1a9Christian Maeder (text $ lexi) <> (text "</owl11:Constant>")
b5da047a9a875dec3f968b6c0df96af326f90fa9Alexis Tsogias
fc09e0a6af734edbd944dd8082bb51985c233b43Alexis Tsogias
b5da047a9a875dec3f968b6c0df96af326f90fa9Alexis Tsogiasinstance PrettyRDF Entity where
0a03acf9fa28e6ff00f4d7c9c6acbae64cf09c56Ewaryst Schulz printRDF _ = printEntity
0a03acf9fa28e6ff00f4d7c9c6acbae64cf09c56Ewaryst Schulz
0a03acf9fa28e6ff00f4d7c9c6acbae64cf09c56Ewaryst SchulzprintEntity :: Entity -> Doc
bab2d88d650448628730ed3b65c9f99c52500e8cChristian MaederprintEntity entity =
18d370f8341357f5d6a4068f4bb6981173ece70fFelix Gabriel Mance case entity of
7834a982096d93301a4626f444dd9ea5f9fe17eaChristian Maeder Datatype dUri ->
ed1b8e97e72b2e3e92edaf2eb22a4b5373d705f1Felix Gabriel Mance oneLineTagToDoc "rdfs:Datatype" (printURI dUri)
ed1b8e97e72b2e3e92edaf2eb22a4b5373d705f1Felix Gabriel Mance OWLClassEntity cUri ->
0a03acf9fa28e6ff00f4d7c9c6acbae64cf09c56Ewaryst Schulz oneLineTagToDoc "owl:OWLClass" (printURI cUri)
4b4a0b61b72cf8478a5d4d5002bca9f699401363Christian Maeder ObjectProperty opUri ->
fc1bf40b1196cf62c6ce5c971633b5ebfc5936efChristian Maeder oneLineTagToDoc "owl:ObjectProperty" (printURI opUri)
4b4a0b61b72cf8478a5d4d5002bca9f699401363Christian Maeder DataProperty dpUri ->
9f226cec9f978edaba67aee4c4e04e3d3b994b87Daniel Calegari oneLineTagToDoc "owl:DatatypeProperty" (printURI dpUri)
9f226cec9f978edaba67aee4c4e04e3d3b994b87Daniel Calegari Individual iUri ->
9f226cec9f978edaba67aee4c4e04e3d3b994b87Daniel Calegari oneLineTagToDoc "owl11:Individual" (printURI iUri)
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder
c70ef4c3b3a62764f715510c9fd67dde3acfe454Christian Maederinstance PrettyRDF Sentence where
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maeder printRDF = printSentence
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maeder
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix ReckersprintSentence :: AssMap -> Sentence -> Doc
456238178f89e5a3de2988ee6c8af924297d52d9Christian MaederprintSentence m sent = case sent of
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder OWLAxiom axiom -> nest 4 <> printRDF m axiom
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder OWLFact fact -> nest 4 <> printRDF m fact
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maederinstance PrettyRDF Axiom where
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder printRDF = printAxiom
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder
67d711ed8d639b1c6e123896e7133d03911c1128Christian MaederprintAxiom :: AssMap -> Axiom -> Doc
61fa0ac06ede811c7aad54ec4c4202346727368eChristian MaederprintAxiom indClsMap axiom = case axiom of
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder SubClassOf _ sub super ->
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder tagToDocWithAttr' "owl:Class" (printURIFromDesc sub)
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder (tagToDoc "rdfs:subClassOf" (printRDF Map.empty super))
360ce9b5c746ac021944db12eb26e3df2697b8c7Christian Maeder {-
360ce9b5c746ac021944db12eb26e3df2697b8c7Christian Maeder <owl:Class rdf:about="#Male">
3e61f574717499939bd8e0ff538ea9e7b72d4e2dKlaus Luettich <rdfs:subClassOf>
50c3cc2b79207355522c5b096172b3c6b7bec300Christian Maeder <owl:Restriction>
f443a57f2a8e0ca3daa7431b0c89a18ba52c337aChristian Maeder <owl:onProperty rdf:resource="#isMarriedTo"/>
f5c9b1e739228c2a2edf055ac419583412569683Christian Maeder <owl:allValuesFrom rdf:resource="#Female"/>
857992065be4ed40a72c6296b6c0aec62ab4c5b9Christian Maeder </owl:Restriction>
ddbf07996361d7e88cf23858a8f85595fa493514Jonathan von Schroeder </rdfs:subClassOf>
ddbf07996361d7e88cf23858a8f85595fa493514Jonathan von Schroeder </owl:Class>
37a9d042e9f85a1d6e229eb80b48f93df810f155Christian Maeder -}
7c99e334446bb97120e30e967baeeddfdd1278deKlaus Luettich
f5c9b1e739228c2a2edf055ac419583412569683Christian Maeder EquivalentClasses _ (clazz:equiList) ->
f5c9b1e739228c2a2edf055ac419583412569683Christian Maeder printClass clazz
f5c9b1e739228c2a2edf055ac419583412569683Christian Maeder (equivalentClassTag
e7757995211bd395dc79d26fe017d99375f7d2a6Christian Maeder $ listToDoc' (\d -> case d of
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder ObjectIntersectionOf _ -> tagToDoc "owl:Class" (printRDF Map.empty d)
33d042fe6a9eb27a4c48f840b80838f3e7d98e34Christian Maeder ObjectOneOf _ -> tagToDoc "owl:Class" (printRDF Map.empty d)
83394c6b6e6de128e71b67c9251ed7a84485d082Christian Maeder _ -> printRDF Map.empty d) equiList)
fa21fba9ceb1ddf7b3efd54731a12ed8750191d8Christian Maeder {-
fa21fba9ceb1ddf7b3efd54731a12ed8750191d8Christian Maeder <owl:Class rdf:about="#Adult">
e7757995211bd395dc79d26fe017d99375f7d2a6Christian Maeder <owl:equivalentClass>
0c355dd0b739631ee472f9a656e266be27fa4e64Christian Maeder <owl:Class>
fa21fba9ceb1ddf7b3efd54731a12ed8750191d8Christian Maeder <owl:intersectionOf rdf:parseType="Collection">
e7757995211bd395dc79d26fe017d99375f7d2a6Christian Maeder <owl:Restriction>
c7ec85d1103173e089aa5048fd7afb2f9b505124Klaus Luettich <owl:onProperty rdf:resource="#hasAge"/>
c7ec85d1103173e089aa5048fd7afb2f9b505124Klaus Luettich <owl:allValuesFrom>
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder <rdf:Description>
c7ec85d1103173e089aa5048fd7afb2f9b505124Klaus Luettich <rdf:type rdf:resource="&owl;DataRange"/>
c7ec85d1103173e089aa5048fd7afb2f9b505124Klaus Luettich <owl11:minInclusive rdf:datatype="&xsd;int">20</owl11:minInclusive>
810746aea00b81c1eec27dae84d73a43599ff056Christian Maeder <owl11:onDataRange rdf:resource="&xsd;nonNegativeInteger"/>
a883cd4d01fe39d23219cf5333425f195be24d8bChristian Maeder </rdf:Description>
b905126bab9454b89041f92b3c50bb9efc85e427Klaus Luettich </owl:allValuesFrom>
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder </owl:Restriction>
33d042fe6a9eb27a4c48f840b80838f3e7d98e34Christian Maeder <rdf:Description rdf:about="#Person"/>
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder </owl:intersectionOf>
0a5571c8adeddd27548445546491725beb224dddChristian Maeder </owl:Class>
0a5571c8adeddd27548445546491725beb224dddChristian Maeder </owl:equivalentClass>
0a5571c8adeddd27548445546491725beb224dddChristian Maeder <owl:equivalentClass rdf:resource="#Child"/>
0a5571c8adeddd27548445546491725beb224dddChristian Maeder </owl:Class>
0a5571c8adeddd27548445546491725beb224dddChristian Maeder -}
f38b3687c5558128515e34fb85d8b466d22dc300Christian Maeder
e112e83352048f3db8c8f93ae104193e7338c10fChristian Maeder DisjointClasses _ (clazz:djList) ->
f38b3687c5558128515e34fb85d8b466d22dc300Christian Maeder tagToDocWithAttr' "owl:Class" (printURIFromDesc clazz)
f38b3687c5558128515e34fb85d8b466d22dc300Christian Maeder (tagToDoc "owl:disjointWith" (listToDoc' (printRDF Map.empty) djList))
e642ad0e782f9bb9ba310164358220402eec8cd8Christian Maeder {-
f38b3687c5558128515e34fb85d8b466d22dc300Christian Maeder <owl:Class rdf:about="#Teenager">
f38b3687c5558128515e34fb85d8b466d22dc300Christian Maeder <owl:disjointWith rdf:resource="#Adult"/>
db3016fbc6065fc0d57e68c28ae280e6ac95a39aChristian Maeder </owl:Class>
ef67402074be14deb95e4ff564737d5593144130Klaus Luettich -}
e112e83352048f3db8c8f93ae104193e7338c10fChristian Maeder
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder DisjointUnion _ curi discList ->
ddbf07996361d7e88cf23858a8f85595fa493514Jonathan von Schroeder tagToDocWithAttr' "owl:Class" (printURI curi)
ddbf07996361d7e88cf23858a8f85595fa493514Jonathan von Schroeder (tagToDocWithAttr "owl11:disjointUnionOf" "rdf:parseType=\"Collection\"" (listToDoc' (printRDF Map.empty) discList))
ddbf07996361d7e88cf23858a8f85595fa493514Jonathan von Schroeder {-
ddbf07996361d7e88cf23858a8f85595fa493514Jonathan von Schroeder <owl:Class rdf:about="#Person">
ddbf07996361d7e88cf23858a8f85595fa493514Jonathan von Schroeder <owl11:disjointUnionOf rdf:parseType="Collection">
ddbf07996361d7e88cf23858a8f85595fa493514Jonathan von Schroeder <rdf:Description rdf:about="#Female"/>
ddbf07996361d7e88cf23858a8f85595fa493514Jonathan von Schroeder <rdf:Description rdf:about="#Male"/>
aebb0b18fe5e6ba7dd7e4c66a16a905611ef7ba9Christian Maeder </owl11:disjointUnionOf>
e05fd774e0181e93963d4302303b20698603a505Christian Maeder </owl:Class>
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder -}
3dde4051c307b609159a097f08a05108fdd036efJonathan von Schroeder
825a1e4ca1e768de4b4883c65a6cb1dce6aa0002Christian Maeder -- ObjectPropertyAxiom
825a1e4ca1e768de4b4883c65a6cb1dce6aa0002Christian Maeder SubObjectPropertyOf _ sopExp opExp ->
825a1e4ca1e768de4b4883c65a6cb1dce6aa0002Christian Maeder case sopExp of
825a1e4ca1e768de4b4883c65a6cb1dce6aa0002Christian Maeder OPExpression oexp ->
3dde4051c307b609159a097f08a05108fdd036efJonathan von Schroeder tagToDocWithAttr' "owl:ObjectProperty" (printURIFromOPExp oexp)
3dde4051c307b609159a097f08a05108fdd036efJonathan von Schroeder (tagToDoc "rdfs:subPropertyOf" (printRDF Map.empty opExp))
3dde4051c307b609159a097f08a05108fdd036efJonathan von Schroeder SubObjectPropertyChain oeList ->
3dde4051c307b609159a097f08a05108fdd036efJonathan von Schroeder tagToDoc "rdf:Description"
aebb0b18fe5e6ba7dd7e4c66a16a905611ef7ba9Christian Maeder (listToDoc (printRDF Map.empty) oeList $+$
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder oneLineTagToDoc "rdfs:subPropertyOf"
63f0e65a37b95621334db9ee4ba0cd9d826f5c0fChristian Maeder (printURIFromOPExpRes opExp))
e05fd774e0181e93963d4302303b20698603a505Christian Maeder
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder {-1.
1dfba1f850f6a43094962b459998d1ea11472461Christian Maeder <owl:ObjectProperty rdf:about="#dislikes">
1dfba1f850f6a43094962b459998d1ea11472461Christian Maeder <rdfs:subPropertyOf rdf:resource="#hasChild"/>
1dfba1f850f6a43094962b459998d1ea11472461Christian Maeder <owl11:disjointObjectProperties rdf:resource="#likes"/>
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder </owl:ObjectProperty>
e7757995211bd395dc79d26fe017d99375f7d2a6Christian Maeder 2.
99afa6000472f3d291fdf9193ea19d334a58658dChristian Maeder <rdf:Description>
8e58704c1752afd6adbc58ad4c163144aeafa64bcmaeder <rdf:type rdf:resource="&rdf;List"/>
99afa6000472f3d291fdf9193ea19d334a58658dChristian Maeder <rdf:first rdf:resource="#hasAncestor"/>
5bb7eeaca10ea76595229375f907a5a388b7c882Christian Maeder <rdfs:subPropertyOf rdf:resource="#hasAncestor"/>
5bb7eeaca10ea76595229375f907a5a388b7c882Christian Maeder <rdf:rest rdf:parseType="Collection">
5bb7eeaca10ea76595229375f907a5a388b7c882Christian Maeder <rdf:Description rdf:about="#hasAncestor"/>
cd36bffee51c77cdadcb9f916b34fa512e311946Christian Maeder </rdf:rest>
1014251688a34ab6de17bf6f8b839a7a4b959586Christian Maeder </rdf:Description>
ac0bbbcb2774629bb87986e69cf53d3402c5f575Christian Maeder -}
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder
3e61f574717499939bd8e0ff538ea9e7b72d4e2dKlaus Luettich EquivalentObjectProperties _ (opExp:opList) ->
3e61f574717499939bd8e0ff538ea9e7b72d4e2dKlaus Luettich tagToDocWithAttr' "owl:ObjectProperty" (printURIFromOPExp opExp)
3e61f574717499939bd8e0ff538ea9e7b72d4e2dKlaus Luettich (listToDoc' (\o -> oneLineTagToDoc "owl:equivalentProperty"
3e61f574717499939bd8e0ff538ea9e7b72d4e2dKlaus Luettich (printURIFromOPExpRes o)) opList)
3e61f574717499939bd8e0ff538ea9e7b72d4e2dKlaus Luettich {-
3e61f574717499939bd8e0ff538ea9e7b72d4e2dKlaus Luettich <owl:ObjectProperty rdf:about="#hasSon">
36f63902db2b3463faa9f59912ad106e2d5aaa24Klaus Luettich <rdfs:range rdf:resource="#Male"/>
3e61f574717499939bd8e0ff538ea9e7b72d4e2dKlaus Luettich <owl:equivalentProperty rdf:resource="#hasSibling"/>
3e61f574717499939bd8e0ff538ea9e7b72d4e2dKlaus Luettich <rdfs:subPropertyOf rdf:resource="#hasChild"/>
3e61f574717499939bd8e0ff538ea9e7b72d4e2dKlaus Luettich <owl:equivalentProperty rdf:resource="#hasDaughter"/>
3e61f574717499939bd8e0ff538ea9e7b72d4e2dKlaus Luettich </owl:ObjectProperty>
3e61f574717499939bd8e0ff538ea9e7b72d4e2dKlaus Luettich -}
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder
e7757995211bd395dc79d26fe017d99375f7d2a6Christian Maeder DisjointObjectProperties _ (opExp:opList) ->
810746aea00b81c1eec27dae84d73a43599ff056Christian Maeder tagToDocWithAttr' "owl:ObjectProperty" (printURIFromOPExp opExp)
6dc9bc98d0854fe2e3dd3bfc4275096a0c28ee1cChristian Maeder (listToDoc' (\o -> oneLineTagToDoc "owl11:disjointObjectProperties"
8b0f493ae42bad8b94918cc0957f1af57096cda4Felix Reckers (printURIFromOPExpRes o)) opList)
1365c420ef71be3d52796ebd369dc2defdedc822Christian Maeder
a80c28bb8b7a23ccdf7e08d0fe216fc19cc97273Klaus Luettich ObjectPropertyDomain _ opExp desc ->
82e29b77f0ef4cccd7ed734692c5e1e93dbbc645Christian Maeder tagToDocWithAttr' "owl:ObjectProperty"
a80c28bb8b7a23ccdf7e08d0fe216fc19cc97273Klaus Luettich (printURIFromOPExp opExp)
5f0e3e4cb7dd31033c9682cafa712d2a66b2f3bcChristian Maeder (case desc of
120145afbf940aff243cb3e847188383d6d622b6Christian Maeder OWLClass _ -> oneLineTagToDoc "rdfs:domain"
5f0e3e4cb7dd31033c9682cafa712d2a66b2f3bcChristian Maeder (printURIFromDescRes desc)
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder _ -> tagToDoc "rdfs:domain"
b9625461755578f3eed04676d42a63fd2caebd0cChristian Maeder (printRDF Map.empty desc))
e7757995211bd395dc79d26fe017d99375f7d2a6Christian Maeder {-
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder <owl:ObjectProperty rdf:about="#hasAncestor">
d0652648f9879c67a194f8b03baafe2700c68eb4Christian Maeder <rdfs:domain rdf:resource="#Person"/>
363939beade943a02b31004cea09dec34fa8a6d9Christian Maeder <rdfs:range rdf:resource="#Person"/>
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder </owl:ObjectProperty>
b1f59a4ea7c96f4c03a4d7cfcb9c5e66871cfbbbChristian Maeder -}
3e61f574717499939bd8e0ff538ea9e7b72d4e2dKlaus Luettich ObjectPropertyRange _ opExp desc ->
3e61f574717499939bd8e0ff538ea9e7b72d4e2dKlaus Luettich tagToDocWithAttr' "owl:ObjectProperty" (printURIFromOPExp opExp)
4ba08bfca0cc8d9da65397b8dfd2654fdb4c0e62Christian Maeder (oneLineTagToDoc "rdfs:range" (printURIFromDescRes desc))
4ba08bfca0cc8d9da65397b8dfd2654fdb4c0e62Christian Maeder
4ba08bfca0cc8d9da65397b8dfd2654fdb4c0e62Christian Maeder InverseObjectProperties _ opExp1 opExp2 ->
4ba08bfca0cc8d9da65397b8dfd2654fdb4c0e62Christian Maeder tagToDocWithAttr' "owl:ObjectProperty"
4ba08bfca0cc8d9da65397b8dfd2654fdb4c0e62Christian Maeder (printURIFromOPExp opExp1)
3e61f574717499939bd8e0ff538ea9e7b72d4e2dKlaus Luettich (oneLineTagToDoc "owl:inverseOf" (printURIFromOPExpRes opExp2))
1365c420ef71be3d52796ebd369dc2defdedc822Christian Maeder {-
308834907a120fd8771e18292ed2ca9cd767c12dChristian Maeder <owl:ObjectProperty rdf:about="#hasBrother">
308834907a120fd8771e18292ed2ca9cd767c12dChristian Maeder <owl:inverseOf rdf:resource="#hasSister"/>
1365c420ef71be3d52796ebd369dc2defdedc822Christian Maeder </owl:ObjectProperty>
83394c6b6e6de128e71b67c9251ed7a84485d082Christian Maeder -}
36f63902db2b3463faa9f59912ad106e2d5aaa24Klaus Luettich FunctionalObjectProperty _ opExp ->
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder tagToDocWithAttr' "owl:ObjectProperty" (printURIFromOPExp opExp)
e420b3848a0e15a9e074b08c413996cbeb5ab06dChristian Maeder (text "<rdf:type rdf:resource=\"&owl;FunctionalProperty\"/>")
68d10d143f29fcff3c637ba24f90e983995ceae6Christian Maeder {-
42ce525125971c5e8ff32a38de5d7ea174d6508cChristian Maeder <owl:ObjectProperty rdf:about="#hasFather">
cc07a598b995acc9436651e66fd18009509047efChristian Maeder <rdf:type rdf:resource="&owl;FunctionalProperty"/>
cc07a598b995acc9436651e66fd18009509047efChristian Maeder <rdf:type rdf:resource="&owl11;AntisymmetricProperty"/>
825a1e4ca1e768de4b4883c65a6cb1dce6aa0002Christian Maeder <rdf:type rdf:resource="&owl;InverseFunctionalProperty"/>
825a1e4ca1e768de4b4883c65a6cb1dce6aa0002Christian Maeder <rdf:type rdf:resource="&owl11;ReflexiveProperty"/>
3e61f574717499939bd8e0ff538ea9e7b72d4e2dKlaus Luettich <rdf:type rdf:resource="&owl11;IrreflexiveProperty"/>
4ba08bfca0cc8d9da65397b8dfd2654fdb4c0e62Christian Maeder <rdf:type rdf:resource="&owl;TransitiveProperty"/>
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder <rdf:type rdf:resource="&owl;SymmetricProperty"/>
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder <rdfs:subPropertyOf rdf:resource="#hasParent"/>
2c619a4dfdc1df27573eba98e81ed1ace906941dChristian Maeder <rdfs:range rdf:resource="#Male"/>
5580ab3e64410186ccd36cde8a94282d8757ac0dChristian Maeder </owl:ObjectProperty>
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder -}
e284004f10a315dbdb624c8b2522f65d485eaa48Martin Kühl InverseFunctionalObjectProperty _ opExp ->
b446bf54c1dc78690aa12e86aadc49cdd8585847Christian Maeder tagToDocWithAttr' "owl:ObjectProperty" (printURIFromOPExp opExp)
e284004f10a315dbdb624c8b2522f65d485eaa48Martin Kühl (text "<rdf:type rdf:resource=\"&owl;InverseFunctionalProperty\"/>")
e284004f10a315dbdb624c8b2522f65d485eaa48Martin Kühl
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder ReflexiveObjectProperty _ opExp ->
50515239e7e190f4a34ca581dd685d002148fbddChristian Maeder tagToDocWithAttr' "owl:ObjectProperty" (printURIFromOPExp opExp)
50515239e7e190f4a34ca581dd685d002148fbddChristian Maeder (text "<rdf:type rdf:resource=\"&owl11;ReflexiveProperty\"/>")
0b349288edfa50fdf38fda1a14e1562d03f92574Christian Maeder
0b349288edfa50fdf38fda1a14e1562d03f92574Christian Maeder IrreflexiveObjectProperty _ opExp ->
0b349288edfa50fdf38fda1a14e1562d03f92574Christian Maeder tagToDocWithAttr' "owl:ObjectProperty" (printURIFromOPExp opExp)
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder (text "<rdf:type rdf:resource=\"&owl11;IrreflexiveProperty\"/>")
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder SymmetricObjectProperty _ opExp ->
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder tagToDocWithAttr' "owl:ObjectProperty" (printURIFromOPExp opExp)
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder (text "<rdf:type rdf:resource=\"&owl;SymmetricProperty\"/>")
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder AntisymmetricObjectProperty _ opExp ->
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder tagToDocWithAttr' "owl:ObjectProperty" (printURIFromOPExp opExp)
8b4c68db8b465107cabef8b9cd5b6bc216e1b156Till Mossakowski (text "<rdf:type rdf:resource=\"&owl;AntisymmetricProperty\"/>")
8b4c68db8b465107cabef8b9cd5b6bc216e1b156Till Mossakowski TransitiveObjectProperty _ opExp ->
8b4c68db8b465107cabef8b9cd5b6bc216e1b156Till Mossakowski tagToDocWithAttr' "owl:ObjectProperty" (printURIFromOPExp opExp)
bcaf979d9babe6346aa343687aa7d596e2894cccPaolo Torrini (text "<rdf:type rdf:resource=\"&owl;TransitiveProperty\"/>")
df29370ae8d8b41587957f6bcdcb43a3f1927e47Christian Maeder
bcaf979d9babe6346aa343687aa7d596e2894cccPaolo Torrini -- DataPropertyAxiom
5ce19352a9cc47d982819cc889a71cd0a61ac171Christian Maeder -- no example
5ce19352a9cc47d982819cc889a71cd0a61ac171Christian Maeder SubDataPropertyOf _ dpExp1 dpExp2 ->
c9a7e6af169a2adfb92f42331cd578065ed83a2bChristian Maeder tagToDocWithAttr' "owl:DatatypeProperty" (printURI dpExp1)
bcaf979d9babe6346aa343687aa7d596e2894cccPaolo Torrini (oneLineTagToDoc "rdfs:subPropertyOf" (printResource dpExp2))
23ab8855c58adfbd03a0730584b917b24c603901Christian Maeder {-
df29370ae8d8b41587957f6bcdcb43a3f1927e47Christian Maeder <owl:DatatypeProperty rdf:about="#isOfAge">
23ab8855c58adfbd03a0730584b917b24c603901Christian Maeder <rdf:type rdf:resource="&owl;FunctionalProperty"/>
e50e41135ece589f7202bd4ef8d6b97531c2a56eKlaus Luettich <rdfs:range rdf:resource="&xsd;integer"/>
47b0e9f3cb008cb7997f4e3bae26e4d62dcc887aChristian Maeder <owl:equivalentProperty rdf:resource="#topDataProperty"/>
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder <owl11:disjointDataProperties rdf:resource="#hasAge"/>
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder <rdfs:subPropertyOf rdf:resource="#topDataProperty"/>
431d34c7007a787331c4e5ec997badb0f8190fc7Christian Maeder </owl:DatatypeProperty>
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder -}
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder EquivalentDataProperties _ (dpExp:dpList) ->
99afa6000472f3d291fdf9193ea19d334a58658dChristian Maeder tagToDocWithAttr' "owl:DatatypeProperty" (printURI dpExp)
39bc7bbfc84f8b49f8434d299ec3a602c0437581Christian Maeder (listToDoc' (\dp -> oneLineTagToDoc "owl:equivalentProperty"
88318aafc287e92931dceffbb943d58a9310001dChristian Maeder (printResource dp)) dpList)
24ddb6d7cde9dd6ab04b8631b1b0104e0861ec5fChristian Maeder
39bc7bbfc84f8b49f8434d299ec3a602c0437581Christian Maeder DisjointDataProperties _ (dpExp:dpList) ->
88318aafc287e92931dceffbb943d58a9310001dChristian Maeder tagToDocWithAttr' "owl:DatatypeProperty" (printURI dpExp)
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder (listToDoc' (\dp -> oneLineTagToDoc "owl11:disjointDataProperties"
39bc7bbfc84f8b49f8434d299ec3a602c0437581Christian Maeder (printResource dp)) dpList)
39bc7bbfc84f8b49f8434d299ec3a602c0437581Christian Maeder
a6091cb14d14a9273e8eacdfe33be1247b26c689Christian Maeder DataPropertyDomain _ dpExp desc ->
39bc7bbfc84f8b49f8434d299ec3a602c0437581Christian Maeder tagToDocWithAttr' "owl:DatatypeProperty" (printURI dpExp)
50c3cc2b79207355522c5b096172b3c6b7bec300Christian Maeder (tagToDoc "rdfs:domain" (printRDF Map.empty desc))
e62d49c0dc2893da75faad896bd135e2e9a7087bKlaus Luettich {-
9096f6c6aaded6cd8288656ceccd4c7b3bd0747eChristian Maeder <owl:DatatypeProperty rdf:about="#testDataProperty1">
9096f6c6aaded6cd8288656ceccd4c7b3bd0747eChristian Maeder <rdfs:domain rdf:resource="#Female"/>
e112e83352048f3db8c8f93ae104193e7338c10fChristian Maeder </owl:DatatypeProperty>
e112e83352048f3db8c8f93ae104193e7338c10fChristian Maeder -}
e62d49c0dc2893da75faad896bd135e2e9a7087bKlaus Luettich DataPropertyRange _ dpExp drange ->
e62d49c0dc2893da75faad896bd135e2e9a7087bKlaus Luettich tagToDocWithAttr' "owl:DatatypeProperty" (printURI dpExp)
e62d49c0dc2893da75faad896bd135e2e9a7087bKlaus Luettich (case drange of
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder DRDatatype did ->
e112e83352048f3db8c8f93ae104193e7338c10fChristian Maeder oneLineTagToDoc "rdfs:range" (printResource did)
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder _ ->
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder (tagToDoc "rdfs:range" (printRDF Map.empty drange)))
61fa0ac06ede811c7aad54ec4c4202346727368eChristian Maeder
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder FunctionalDataProperty _ dpExp ->
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder tagToDocWithAttr' "owl:DatatypeProperty" (printURI dpExp)
f5c9b1e739228c2a2edf055ac419583412569683Christian Maeder (text "<rdf:type rdf:resource=\"&owl;FunctionalProperty\"/>")
363939beade943a02b31004cea09dec34fa8a6d9Christian Maeder
c72c1e75a969ff4c336e77481c2a8e42603f13eeChristian Maeder -- Fact
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder -- see http://www.w3.org/2007/OWL/draft/ED-owl11-xml-serialization-20080326/#The_XML_Schema
d23b0cc79c0d204e6ec758dff8d0ba71c9f693f7Christian Maeder SameIndividual _ (ind:indList) ->
88318aafc287e92931dceffbb943d58a9310001dChristian Maeder case Map.lookup ind indClsMap of
7767474aba4fa2dc51a6c68017d3bcef3b773001Christian Maeder Just classId ->
88318aafc287e92931dceffbb943d58a9310001dChristian Maeder let clz = classNameForInd classId
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder in tagToDocWithAttr' clz (printURI ind)
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder (listToDoc'
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder (\i -> oneLineTagToDoc "owl:sameAs"
f4505a64a089693012a3f5c3b1f12a82cd7a2a5aKlaus Luettich (printResource i)) indList)
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder Nothing ->
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder tagToDoc "owl11:SameIndividual"
f4505a64a089693012a3f5c3b1f12a82cd7a2a5aKlaus Luettich ((printIndividual ind)
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder $+$ (listToDoc printIndividual indList))
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder {-
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder <Person rdf:about="#personX">
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder <owl:sameAs rdf:resource="#uncle"/>
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder <owl:sameAs rdf:resource="#father"/>
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder </Person>
5191fa24c532d1f67e7a642e9aece65efb8a0975Christian Maeder -}
1a6464613c59e35072b90ca296ae402cbe956144Christian Maeder
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder DifferentIndividuals _ (ind:indList) ->
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder tagToDoc "rdf:Description"
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder (text "<rdf:type rdf:resource=\"&owl;AllDifferent\"/>" $+$
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder tagToDocWithAttr "owl:distinctMembers" "rdf:parseType=\"Collection\"" (listToDoc' (\d -> oneLineTagToDoc "rdf:Description" (printURI d)) (ind:indList)))
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder {-
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder <rdf:Description>
8b767d09a78927b111f5596fdff9ca7d2c1a439fChristian Maeder <rdf:type rdf:resource="&owl;AllDifferent"/>
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder <owl:distinctMembers rdf:parseType="Collection">
f78ce817f35574674d54e30ad1861a9b4ced20caChristian Maeder <rdf:Description rdf:about="#personY"/>
f78ce817f35574674d54e30ad1861a9b4ced20caChristian Maeder <rdf:Description rdf:about="#father"/>
f78ce817f35574674d54e30ad1861a9b4ced20caChristian Maeder </owl:distinctMembers>
f78ce817f35574674d54e30ad1861a9b4ced20caChristian Maeder </rdf:Description>
fd2c22348e5a69231f92fb44e35a9970b47c4e93Christian Maeder -}
f78ce817f35574674d54e30ad1861a9b4ced20caChristian Maeder ClassAssertion _ ind desc ->
f78ce817f35574674d54e30ad1861a9b4ced20caChristian Maeder case Map.lookup ind indClsMap of
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder Just clsOfInd ->
89c9d707aa817684b88036a2dad66c3437840677Heng Jiang case desc of
f78ce817f35574674d54e30ad1861a9b4ced20caChristian Maeder OWLClass curi ->
f78ce817f35574674d54e30ad1861a9b4ced20caChristian Maeder -- if the classAssertion is only a declaration of
f78ce817f35574674d54e30ad1861a9b4ced20caChristian Maeder -- individual, a oneline-tag is used oder ignored.
f041c9a6bda23de33a38490e35b831ae18d96b45Christian Maeder if clsOfInd == curi then
f041c9a6bda23de33a38490e35b831ae18d96b45Christian Maeder -- oneLineTagToDoc (localPart curi)
f041c9a6bda23de33a38490e35b831ae18d96b45Christian Maeder -- (printURI ind)
bea81dabd203833818cb4a5f3758977c695728cdHeng Jiang empty
bf7b17b0e19362e9228672782218678cab275d1eDominik Luecke else printClassAssertion clsOfInd ind desc
456238178f89e5a3de2988ee6c8af924297d52d9Christian Maeder _ -> printClassAssertion clsOfInd ind desc
49d647f58ec5bf482da541eec62f531848c49036Christian Maeder Nothing ->
7834a982096d93301a4626f444dd9ea5f9fe17eaChristian Maeder tagToDoc "owl11:ClassAssertion"
6f21da274060a2aa02923c5beca3485456a4b9a0Christian Maeder ((case desc of
409fdf3eb3a0824ab032c4bc1f00f5838fd54d4cChristian Maeder OWLClass ouri ->
409fdf3eb3a0824ab032c4bc1f00f5838fd54d4cChristian Maeder text "<owl:Class" <+> printResource ouri
5c0b769e33f643e5f0b06328ba0eb03e5bd6e18eChristian Maeder <+> text "/>"
f9442174f64331ccf0bf08178632af7302ccfc96Christian Maeder _ -> printRDF Map.empty desc)
f9442174f64331ccf0bf08178632af7302ccfc96Christian Maeder $+$ printIndividual ind)
c802a1041ed9251f8ad79139454267e802900e2aChristian Maeder {-
53bbc1c9a4e986d1ee9c081d6f0ac7b9546f212bDominik Luecke <Person rdf:about="#father">
bf7b17b0e19362e9228672782218678cab275d1eDominik Luecke <rdf:type>
bf7b17b0e19362e9228672782218678cab275d1eDominik Luecke <owl:Restriction>
bf7b17b0e19362e9228672782218678cab275d1eDominik Luecke <owl:onProperty rdf:resource="#hasChild"/>
bf7b17b0e19362e9228672782218678cab275d1eDominik Luecke <owl:allValuesFrom rdf:resource="#FamilyMembers"/>
bf7b17b0e19362e9228672782218678cab275d1eDominik Luecke </owl:Restriction>
bf7b17b0e19362e9228672782218678cab275d1eDominik Luecke </rdf:type>
bf7b17b0e19362e9228672782218678cab275d1eDominik Luecke </Person>
75b0c0c2cbfb7edd3f4c0555227aabbe6c1aa195Christian Maeder -}
bf7b17b0e19362e9228672782218678cab275d1eDominik Luecke
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu ObjectPropertyAssertion _ opExp source target ->
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu case Map.lookup source indClsMap of
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu Just curi ->
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu tagToDocWithAttr' (classNameForInd curi) (printURI source)
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu (case opExp of
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu OpURI ou -> oneLineTagToDoc (classNameForInd ou)
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu (printResource target)
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu InverseOp _ -> -- on idee, error?
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu error ("ObjectPropertyAssertion can not accept a inverse object property expression.")
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu )
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu Nothing -> -- without classAssertion of source the object-
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu -- propertyAssertion can't be declared in RDF.
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu tagToDoc "owl11:ObjectPropertyAssertion"
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu (printOPERes opExp $+$ printIndividual source
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu $+$ printIndividual target)
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu {-
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu <ObjectPropertyAssertion>
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu <ObjectProperty URI="&family;hasMother"/>
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu <Individual URI="&family;father"/>
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu <Individual URI="&family;grandmother"/>
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu </ObjectPropertyAssertion>
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu ---------------->>
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu <Person rdf:about="#father">
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu <hasMother rdf:resource="#grandmother"/>
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu </Person>
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu -}
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu NegativeObjectPropertyAssertion _ opExp source target ->
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu tagToDoc "owl11:NegativeObjectPropertyAssertion"
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu (printSubject source <+>
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu printPredicate opExp <+>
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu printObject target)
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu {-
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu <owl11:NegativeObjectPropertyAssertion>
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu <rdf:subject rdf:resource="#father"/>
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu <rdf:predicate rdf:resource="#hasBrother"/>
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu <rdf:object rdf:resource="#uncle"/>
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu </owl11:NegativeObjectPropertyAssertion>
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu -}
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu DataPropertyAssertion _ dpExp source target ->
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu case Map.lookup source indClsMap of
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu Just curi ->
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu tagToDocWithAttr' (classNameForInd curi) (printURI source)
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu (printDPWithConst dpExp target)
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu Nothing ->
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu tagToDoc "owl11:DataPropertyAssertion"
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu (oneLineTagToDoc "owl11:DataProperty"
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu (printResource dpExp)
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu $+$ printIndividual source
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu $+$ printRDF Map.empty target)
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu {-
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu <Person rdf:about="#father">
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu <hasAge rdf:datatype="&xsd;int">38</hasAge>
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu </Person>
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu -}
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu NegativeDataPropertyAssertion _ dpExp source target ->
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu tagToDoc "owl11:NegativeDataPropertyAssertion"
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu (printSubject source
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu $+$ printPredicateDataProp dpExp
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu $+$ printObjectDataProp target
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu )
ae3e4689adbf4de67f4e1cdda6db2c0e406027d0Francisc Nicolae Bungiu {-
b446bf54c1dc78690aa12e86aadc49cdd8585847Christian Maeder <owl11:NegativeDataPropertyAssertion>
3b5814dc6ac813faf8a12ecddf4b727ca7b666a8Francisc Nicolae Bungiu <rdf:subject rdf:resource="#father"/>
3b5814dc6ac813faf8a12ecddf4b727ca7b666a8Francisc Nicolae Bungiu <rdf:predicate rdf:resource="#hasName"/>
e7cf29d9f71f4724aed05916d93a0b656d7104e6Francisc Nicolae Bungiu <rdf:object rdf:datatype="&xsd;string">RRRRRRRRR</rdf:object>
9f226cec9f978edaba67aee4c4e04e3d3b994b87Daniel Calegari </owl11:NegativeDataPropertyAssertion>
9f226cec9f978edaba67aee4c4e04e3d3b994b87Daniel Calegari -}
9f226cec9f978edaba67aee4c4e04e3d3b994b87Daniel Calegari
9f226cec9f978edaba67aee4c4e04e3d3b994b87Daniel Calegari Declaration _ entity ->
9f226cec9f978edaba67aee4c4e04e3d3b994b87Daniel Calegari {- case entity of ->
9f226cec9f978edaba67aee4c4e04e3d3b994b87Daniel Calegari Datatype u ->
9f226cec9f978edaba67aee4c4e04e3d3b994b87Daniel Calegari OWLClassEntity u
ObjectProperty u
DataProperty u
Individual u
-}
tagToDoc "Declaration"
(printRDF Map.empty entity)
EntityAnno _ -> empty -- EntityAnnotation, here the "implied" comes
u -> error ("unknow axiom" ++ show u)
instance PrettyRDF SubObjectPropertyExpression where
printRDF _ sopExp =
case sopExp of
OPExpression opExp ->
tagToDoc "rdfs:subPropertyOf" (printRDF Map.empty opExp)
SubObjectPropertyChain opExpList ->
tagToDoc "rdfs:subPropertyOf"
(tagToDoc "owl11:propertyChain"
(listToDoc' (printRDF Map.empty) opExpList))
{-
<owl:ObjectProperty rdf:about="#dislikes">
<rdfs:subPropertyOf rdf:resource="#hasChild"/>
<owl11:disjointObjectProperties rdf:resource="#likes"/>
</owl:ObjectProperty>
-}
printClass :: Description -> Doc -> Doc
printClass desc content =
case desc of
OWLClass curi ->
classStart curi $+$
nest 4 <> content $+$
classEnd
_ -> error ("Class here muss be a delaration of OWLClass")
where
classStart :: OwlClassURI -> Doc
classStart cu =
text "<owl:Class" <+> printURI cu
<+> text ">"
classEnd :: Doc
classEnd = text "</owl:Class>"
equivalentClassTag :: Doc -> Doc
equivalentClassTag doc =
text "<owl:equivalentClass>" $+$
nest 4 <> doc $+$
text "</owl:equivalentClass>"
classTag :: Description -> Doc -> Doc
classTag desc content =
case desc of
OWLClass curi ->
classStart curi $+$
nest 4 <> content $+$
classEnd
_ -> error ("Class here muss be a delaration of OWLClass")
where
classStart :: OwlClassURI -> Doc
classStart cu =
text "<owl:Class" <+> printURI cu
<+> text ">"
classEnd :: Doc
classEnd = text "</owl:Class>"
classTag' :: OwlClassURI -> Doc -> Doc
classTag' curi d =
classTag (OWLClass curi) d
printIndividual :: IndividualURI -> Doc
printIndividual iuri =
oneLineTagToDoc "owl11:Individual" (printResource iuri)
printDataProperty :: DataPropertyExpression -> Doc
printDataProperty dpe =
oneLineTagToDoc "owl11:DataProperty" (printRDF Map.empty dpe)
printSubject :: SourceIndividualURI -> Doc
printSubject ind =
oneLineTagToDoc "rdf:subject" (printResource ind)
printObject :: TargetIndividualURI -> Doc
printObject ind =
oneLineTagToDoc "rdf:object" (printResource ind)
printPredicate :: ObjectPropertyExpression -> Doc
printPredicate ope =
case ope of
OpURI oUri -> oneLineTagToDoc "rdf:predicate"
(printResource oUri)
InverseOp _ -> error ("NegativeObjectPropertyAssertion can not accept a inverse object property expression.")
printPredicateDataProp :: DataPropertyExpression -> Doc
printPredicateDataProp dpe =
oneLineTagToDoc "rdf:predicate" (printResource dpe)
printObjectDataProp :: TargetValue -> Doc
printObjectDataProp cons =
tagToDocWithAttr' "rdf:object"
(case cons of
TypedConstant (_, ty) ->
printURIWithAttr "rdf:datatype" ty
UntypedConstant _ -> empty)
(getValueFromConst cons)
printDPWithConst :: DataPropertyExpression
-> Constant -> Doc
printDPWithConst dpe cons =
tagToDocWithAttr' (localPart dpe)
(case cons of
TypedConstant (_, ty) ->
printURIWithAttr "rdf:datatype" ty
UntypedConstant _ -> empty)
(getValueFromConst cons)
tagToDoc :: String -> Doc -> Doc
tagToDoc tag content =
text ("<" ++ tag ++ ">") $+$
nest 4 <> content $+$
text ("</" ++ tag ++ ">")
tagToDocWithAttr :: String -> String -> Doc -> Doc
tagToDocWithAttr tag attr content =
text ("<" ++ tag ++ " " ++ attr ++ ">") $+$
nest 4 <> content $+$
text ("</" ++ tag ++ ">")
tagToDocWithAttr' :: String -> Doc -> Doc -> Doc
tagToDocWithAttr' tag attr content =
text ("<" ++ tag) <+> attr <> text ">" $+$
nest 4 <> content $+$
text ("</" ++ tag ++ ">")
cardinalityToDoc :: String -> Cardinality -> Doc -> Doc
cardinalityToDoc tag card d =
text ("<owl11:" ++ tag ++ " owl11:cardinality=\"" ++
show card ++ "\">") $+$
nest 4 <> d $+$
text ("</owl11:" ++ tag ++ ">")
printClassAssertion :: OwlClassURI -> IndividualURI
-> Description -> Doc
printClassAssertion clsOfInd ind desc =
tagToDocWithAttr' (classNameForInd clsOfInd) (printURI ind)
(tagToDoc "rdf:type" (printRDF Map.empty desc))
{-
<Person rdf:about="#father">
<rdf:type>
<owl:Restriction>
<owl:onProperty rdf:resource="#hasChild"/>
<owl:allValuesFrom rdf:resource="#FamilyMembers"/>
</owl:Restriction>
</rdf:type>
</Person>
-}
oneLineTagToDoc :: String -> Doc -> Doc
oneLineTagToDoc s content =
text ("<" ++ s) <+> content <> text "/>"
-- not necessary
instance PrettyRDF OntologyFile where
printRDF _ = text . show
instance PrettyRDF Ontology where
printRDF _ = text . show -- printOntology
instance PrettyRDF [AS_Anno.Named Sentence] where
printRDF m l = foldl ($+$) empty $ map (printRDF m) l
instance PrettyRDF (AS_Anno.Named Sentence) where
printRDF m s = printRDF m (AS_Anno.sentence s)
listToDoc :: (PrettyRDF a) =>
(a -> Doc) -> [a] -> Doc
listToDoc pf list =
text "<rdf:type rdf:resource=\"&rdf;List\"/>"
$+$ (ltd pf list)
where
ltd _ [] = empty
ltd p (lastOne:[]) =
text ("<rdf:rest " ++
"rdf:resource=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#nil\"/>")
$+$ (tagToDoc "rdf:first" (p lastOne))
ltd p (h:r) =
text "<rdf:rest rdf:parseType=\"Resource\">" $+$
nest 4 <> ltd p r $+$
text "</rdf:rest>" $+$
(tagToDoc "rdf:first" (p h))
listToDoc' :: (PrettyRDF a) =>
(a -> Doc) -> [a] -> Doc
listToDoc' p = vcat . map p
classNameForInd ::OwlClassURI -> String
classNameForInd cid =
let lp = localPart cid
in if lp == "Thing" then
"owl:" ++ lp
else lp
emptyQN :: QName
emptyQN = QN "" "" ""
simpleQN :: String -> QName
simpleQN str = QN "" str ""
choiceName :: Int -> String
choiceName level
| level <= 0 = "x"
| level == 1 = "y"
| level == 2 = "z"
| otherwise = "u" ++ (show (level -2))
nest :: Int -> Doc
nest longOfNest
| longOfNest == 0 = empty
| otherwise = space <> (nest (longOfNest -1))