AS.hs revision 3d3889e0cefcdce9b3f43c53aaa201943ac2e895
55cf6e01272ec475edea32aa9b7923de2d36cb42Christian Maeder{- |
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis TsogiasModule : $Header$
e9458b1a7a19a63aa4c179f9ab20f4d50681c168Jens ElknerCopyright : (c) Felix Gabriel Mance, Francisc-Nicolae Bungiu
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis TsogiasLicense : GPLv2 or higher, see LICENSE.txt
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias
3a9fce5398f4621558ca220c66c87cee59adc258Jonathan von SchroederMaintainer : Christian.Maeder@dfki.de
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis TsogiasStability : provisional
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis TsogiasPortability : portable
ad1df93673cf323534cdfe18981ad5daae4c90c0Jonathan von Schroeder
1e622ddf5a057555db1924ddc88475c695c6f7f2Alexis TsogiasRDF abstract syntax
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis TsogiasReferences:
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias <http://www.w3.org/TeamSubmission/turtle/>
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias <http://www.informatik.uni-bremen.de/~till/papers/ontotrans.pdf>
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias <http://www.w3.org/TR/rdf-concepts/#section-Graph-syntax>
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias-}
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogiasmodule RDF.AS where
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias
f88f637f3c7ff472142b07dcc12230375a5f1c28Christian Maederimport Common.Id
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogiasimport OWL2.AS
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias
e16b3696b2c173aac14200321868ed81b8f7dc69Christian Maederimport Data.List
87d946b3c13ffd7f6391aa796e786c2b31b122b1Jonathan von Schroederimport qualified Data.Map as Map
e16b3696b2c173aac14200321868ed81b8f7dc69Christian Maeder
e16b3696b2c173aac14200321868ed81b8f7dc69Christian Maeder-- * RDF Turtle Document
e16b3696b2c173aac14200321868ed81b8f7dc69Christian Maeder
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogiastype RDFPrefixMap = Map.Map String IRI
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias
87d946b3c13ffd7f6391aa796e786c2b31b122b1Jonathan von Schroederdata TurtleDocument = TurtleDocument
4e95ffc23b9c5f0b5980ab6f1cacbe7bd9789851Alexis Tsogias { documentName :: IRI
4e95ffc23b9c5f0b5980ab6f1cacbe7bd9789851Alexis Tsogias , prefixMap :: RDFPrefixMap
421def3c7b0b9ca7762f809a2c57c6ee74495ffaJonathan von Schroeder , statements :: [Statement] }
4b9f1c9f95296f3292b2e53dbc3d196751b862dbJonathan von Schroeder deriving (Show, Eq, Ord)
7dc37844730a8b23973139e9720574382de109e7Alexis Tsogias
93c8c4a8ce75cc2e02e03468a97b896f149d26ceAlexis TsogiasemptyTurtleDocument :: TurtleDocument
9d05f30775dd499da9e262b5c199b63c86cc239bJonathan von SchroederemptyTurtleDocument = TurtleDocument nullQName Map.empty []
3a9fce5398f4621558ca220c66c87cee59adc258Jonathan von Schroeder
91673dab8e4e249ffb3efe5edab8351dfaf4977dJonathan von Schroederdata Statement = Statement Triples | PrefixStatement Prefix | BaseStatement Base
91673dab8e4e249ffb3efe5edab8351dfaf4977dJonathan von Schroeder deriving (Show, Eq, Ord)
9503f59b8e16c517ba75df2512b80b354759ad1aJonathan von Schroeder
9503f59b8e16c517ba75df2512b80b354759ad1aJonathan von Schroederdata Prefix = Prefix String IRI
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias deriving (Show, Eq, Ord)
e16b3696b2c173aac14200321868ed81b8f7dc69Christian Maeder
409eb8adf8c7ee0609aef256b67f5dfad2fb6386Alexis Tsogiasdata Base = Base IRI
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias deriving (Show, Eq, Ord)
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogiasdata Triples = Triples Subject [PredicateObjectList]
409eb8adf8c7ee0609aef256b67f5dfad2fb6386Alexis Tsogias deriving (Show, Eq, Ord)
beb399aad2f2d329dea36508625352fddee3c302Christian Maeder
409eb8adf8c7ee0609aef256b67f5dfad2fb6386Alexis Tsogiasdata Subject =
409eb8adf8c7ee0609aef256b67f5dfad2fb6386Alexis Tsogias Subject IRI
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias | SubjectList [PredicateObjectList]
e16b3696b2c173aac14200321868ed81b8f7dc69Christian Maeder | SubjectCollection [Object]
9d05f30775dd499da9e262b5c199b63c86cc239bJonathan von Schroeder deriving (Show, Eq, Ord)
9d05f30775dd499da9e262b5c199b63c86cc239bJonathan von Schroeder
9d05f30775dd499da9e262b5c199b63c86cc239bJonathan von Schroederdata Predicate = Predicate IRI
e16b3696b2c173aac14200321868ed81b8f7dc69Christian Maeder deriving (Show, Eq, Ord)
a65c6747c9acbbebc93baba7bae94d2e3d8cdafbTill Mossakowski
87d946b3c13ffd7f6391aa796e786c2b31b122b1Jonathan von Schroederdata Object = Object Subject
1e622ddf5a057555db1924ddc88475c695c6f7f2Alexis Tsogias | ObjectLiteral RDFLiteral
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias deriving (Show, Eq, Ord)
8394b397aadaf0c2bfc19c0628f17f83f031a759Jonathan von Schroeder
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogiasdata PredicateObjectList = PredicateObjectList Predicate [Object]
8394b397aadaf0c2bfc19c0628f17f83f031a759Jonathan von Schroeder deriving (Show, Eq, Ord)
91673dab8e4e249ffb3efe5edab8351dfaf4977dJonathan von Schroeder
91673dab8e4e249ffb3efe5edab8351dfaf4977dJonathan von Schroederdata RDFLiteral = RDFLiteral Bool LexicalForm TypedOrUntyped
91673dab8e4e249ffb3efe5edab8351dfaf4977dJonathan von Schroeder | RDFNumberLit FloatLit
91673dab8e4e249ffb3efe5edab8351dfaf4977dJonathan von Schroeder deriving (Show, Eq, Ord)
91673dab8e4e249ffb3efe5edab8351dfaf4977dJonathan von Schroeder
9503f59b8e16c517ba75df2512b80b354759ad1aJonathan von Schroeder-- * Datatypes for Hets manipulation
91673dab8e4e249ffb3efe5edab8351dfaf4977dJonathan von Schroeder
e16b3696b2c173aac14200321868ed81b8f7dc69Christian Maederdata Term =
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias SubjectTerm IRI
8394b397aadaf0c2bfc19c0628f17f83f031a759Jonathan von Schroeder | PredicateTerm IRI
1e622ddf5a057555db1924ddc88475c695c6f7f2Alexis Tsogias | ObjectTerm (Either IRI RDFLiteral)
409eb8adf8c7ee0609aef256b67f5dfad2fb6386Alexis Tsogias deriving (Show, Eq, Ord)
409eb8adf8c7ee0609aef256b67f5dfad2fb6386Alexis Tsogias
409eb8adf8c7ee0609aef256b67f5dfad2fb6386Alexis Tsogiasdata Axiom = Axiom Term Term Term
409eb8adf8c7ee0609aef256b67f5dfad2fb6386Alexis Tsogias deriving (Show, Eq, Ord)
409eb8adf8c7ee0609aef256b67f5dfad2fb6386Alexis Tsogias
1566df29333319b713031b86c7d18171e5a009bdJonathan von Schroederdata RDFEntityType = SubjectEntity | PredicateEntity | ObjectEntity
1566df29333319b713031b86c7d18171e5a009bdJonathan von Schroeder deriving (Show, Eq, Ord, Bounded, Enum)
f88f637f3c7ff472142b07dcc12230375a5f1c28Christian Maeder
e21e5f0fa66bf80e14cfd3f571e09b3952e46ad9Alexis Tsogias-- | entities used for morphisms
e16b3696b2c173aac14200321868ed81b8f7dc69Christian Maederdata RDFEntity = RDFEntity RDFEntityType Term
e16b3696b2c173aac14200321868ed81b8f7dc69Christian Maeder deriving (Show, Eq, Ord)
e16b3696b2c173aac14200321868ed81b8f7dc69Christian Maeder
e16b3696b2c173aac14200321868ed81b8f7dc69Christian MaederrdfEntityTypes :: [RDFEntityType]
8394b397aadaf0c2bfc19c0628f17f83f031a759Jonathan von SchroederrdfEntityTypes = [minBound .. maxBound]
1e622ddf5a057555db1924ddc88475c695c6f7f2Alexis Tsogias
3a9fce5398f4621558ca220c66c87cee59adc258Jonathan von Schroederinstance GetRange TurtleDocument where
409eb8adf8c7ee0609aef256b67f5dfad2fb6386Alexis Tsogiasinstance GetRange RDFEntity where
e24ad3f655daa60ddabe690e4b11de3187996c16cmaederinstance GetRange Axiom where
e24ad3f655daa60ddabe690e4b11de3187996c16cmaeder
e24ad3f655daa60ddabe690e4b11de3187996c16cmaeder-- | useful functions
3a9fce5398f4621558ca220c66c87cee59adc258Jonathan von Schroeder
3a9fce5398f4621558ca220c66c87cee59adc258Jonathan von SchroederextractTripleStatements :: [Statement] -> [Triples]
3a9fce5398f4621558ca220c66c87cee59adc258Jonathan von SchroederextractTripleStatements ls = case ls of
3a9fce5398f4621558ca220c66c87cee59adc258Jonathan von Schroeder [] -> []
8c7aa750542dcadb94b971be712564a9a8f1d189Christian Maeder h : t -> case h of
55dfa79a16e5f0ddb60bceab3717c07e62e65846Jonathan von Schroeder Statement triple -> triple : extractTripleStatements t
3a9fce5398f4621558ca220c66c87cee59adc258Jonathan von Schroeder _ -> extractTripleStatements t
3a9fce5398f4621558ca220c66c87cee59adc258Jonathan von Schroeder
8c7aa750542dcadb94b971be712564a9a8f1d189Christian MaedertriplesOfDocument :: TurtleDocument -> [Triples]
87d946b3c13ffd7f6391aa796e786c2b31b122b1Jonathan von SchroedertriplesOfDocument doc = extractTripleStatements $ statements doc
8c030738bc90ffb417074a9502c0bac2ed414e2eJonathan von Schroeder
55dfa79a16e5f0ddb60bceab3717c07e62e65846Jonathan von SchroederrdfFirst :: IRI
87d946b3c13ffd7f6391aa796e786c2b31b122b1Jonathan von SchroederrdfFirst = QN "rdf" "first" Abbreviated
3a9fce5398f4621558ca220c66c87cee59adc258Jonathan von Schroeder "http://www.w3.org/1999/02/22-rdf-syntax-ns#first" nullRange
3a9fce5398f4621558ca220c66c87cee59adc258Jonathan von Schroeder
3a9fce5398f4621558ca220c66c87cee59adc258Jonathan von SchroederrdfRest :: IRI
3a9fce5398f4621558ca220c66c87cee59adc258Jonathan von SchroederrdfRest = QN "rdf" "rest" Abbreviated
3a9fce5398f4621558ca220c66c87cee59adc258Jonathan von Schroeder "http://www.w3.org/1999/02/22-rdf-syntax-ns#rest" nullRange
87d946b3c13ffd7f6391aa796e786c2b31b122b1Jonathan von Schroeder
3a9fce5398f4621558ca220c66c87cee59adc258Jonathan von SchroederrdfNil :: IRI
3a9fce5398f4621558ca220c66c87cee59adc258Jonathan von SchroederrdfNil = QN "rdf" "nil" Abbreviated
55dfa79a16e5f0ddb60bceab3717c07e62e65846Jonathan von Schroeder "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil" nullRange
3a9fce5398f4621558ca220c66c87cee59adc258Jonathan von Schroeder
3a9fce5398f4621558ca220c66c87cee59adc258Jonathan von SchroederisAbsoluteIRI :: IRI -> Bool
8c7aa750542dcadb94b971be712564a9a8f1d189Christian MaederisAbsoluteIRI iri = iriType iri == Full && isPrefixOf "//" (localPart iri)
8c7aa750542dcadb94b971be712564a9a8f1d189Christian Maeder