1a38107941725211e7c3f051f7a8f5e12199f03acmaeder{-# LANGUAGE DeriveDataTypeable #-}
ccb84c1cb43fb0ed70c5bf2d364e671820473ed5Francisc Nicolae Bungiu{- |
e9458b1a7a19a63aa4c179f9ab20f4d50681c168Jens ElknerModule : ./RDF/AS.hs
734257b9ea9fcaa18d4e3627f54f5295a99aa1f7Felix Gabriel ManceCopyright : (c) Felix Gabriel Mance, Francisc-Nicolae Bungiu
ccb84c1cb43fb0ed70c5bf2d364e671820473ed5Francisc Nicolae BungiuLicense : GPLv2 or higher, see LICENSE.txt
ccb84c1cb43fb0ed70c5bf2d364e671820473ed5Francisc Nicolae Bungiu
ccb84c1cb43fb0ed70c5bf2d364e671820473ed5Francisc Nicolae BungiuMaintainer : Christian.Maeder@dfki.de
ccb84c1cb43fb0ed70c5bf2d364e671820473ed5Francisc Nicolae BungiuStability : provisional
ccb84c1cb43fb0ed70c5bf2d364e671820473ed5Francisc Nicolae BungiuPortability : portable
ccb84c1cb43fb0ed70c5bf2d364e671820473ed5Francisc Nicolae Bungiu
c038fcf2030a6cfac7a261dee48a9eb29edb78eaFelix Gabriel ManceRDF abstract syntax
ccb84c1cb43fb0ed70c5bf2d364e671820473ed5Francisc Nicolae Bungiu
15d62726781e67fe6458fbcf0a8c46832a7bb8daFelix Gabriel ManceReferences:
734257b9ea9fcaa18d4e3627f54f5295a99aa1f7Felix Gabriel Mance <http://www.w3.org/TeamSubmission/turtle/>
c038fcf2030a6cfac7a261dee48a9eb29edb78eaFelix Gabriel Mance <http://www.informatik.uni-bremen.de/~till/papers/ontotrans.pdf>
c038fcf2030a6cfac7a261dee48a9eb29edb78eaFelix Gabriel Mance <http://www.w3.org/TR/rdf-concepts/#section-Graph-syntax>
ccb84c1cb43fb0ed70c5bf2d364e671820473ed5Francisc Nicolae Bungiu-}
ccb84c1cb43fb0ed70c5bf2d364e671820473ed5Francisc Nicolae Bungiu
ccb84c1cb43fb0ed70c5bf2d364e671820473ed5Francisc Nicolae Bungiumodule RDF.AS where
ccb84c1cb43fb0ed70c5bf2d364e671820473ed5Francisc Nicolae Bungiu
ed1b8e97e72b2e3e92edaf2eb22a4b5373d705f1Felix Gabriel Manceimport Common.Id
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowskiimport Common.IRI
5180a08007989fd364622fc9bc01f82141643f7bFelix Gabriel Manceimport OWL2.AS
ccb84c1cb43fb0ed70c5bf2d364e671820473ed5Francisc Nicolae Bungiu
1a38107941725211e7c3f051f7a8f5e12199f03acmaederimport Data.Data
12078a24d49ba36b83cda9d07c8e8a480c493fe8Felix Gabriel Manceimport Data.List
734257b9ea9fcaa18d4e3627f54f5295a99aa1f7Felix Gabriel Manceimport qualified Data.Map as Map
c038fcf2030a6cfac7a261dee48a9eb29edb78eaFelix Gabriel Mance
0be7a9c012366ada63d587898a15c551b499b76dFelix Gabriel Mance-- * RDF Turtle Document
0be7a9c012366ada63d587898a15c551b499b76dFelix Gabriel Mance
3b15ba1ffa9a23ca14f3882d1390abddfc494009Felix Gabriel Mancetype RDFPrefixMap = Map.Map String IRI
3b15ba1ffa9a23ca14f3882d1390abddfc494009Felix Gabriel Mance
0be7a9c012366ada63d587898a15c551b499b76dFelix Gabriel Mancedata TurtleDocument = TurtleDocument
e5dc5119231bdeb5c604f7709e0fa197fd2c4829Felix Gabriel Mance { documentName :: IRI
e5dc5119231bdeb5c604f7709e0fa197fd2c4829Felix Gabriel Mance , prefixMap :: RDFPrefixMap
0be7a9c012366ada63d587898a15c551b499b76dFelix Gabriel Mance , statements :: [Statement] }
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder deriving (Show, Eq, Ord, Typeable, Data)
30e9cf458094e5970bc06be667558961c2eccff4Felix Gabriel Mance
30e9cf458094e5970bc06be667558961c2eccff4Felix Gabriel ManceemptyTurtleDocument :: TurtleDocument
80875f917d741946a39d0ec0b5721e46ba609823Till MossakowskiemptyTurtleDocument = TurtleDocument nullIRI Map.empty []
30e9cf458094e5970bc06be667558961c2eccff4Felix Gabriel Mance
12078a24d49ba36b83cda9d07c8e8a480c493fe8Felix Gabriel Mancedata Statement = Statement Triples | PrefixStatement Prefix | BaseStatement Base
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder deriving (Show, Eq, Ord, Typeable, Data)
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroeder
1a38107941725211e7c3f051f7a8f5e12199f03acmaederdata Prefix = PrefixR String IRI
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder deriving (Show, Eq, Ord, Typeable, Data)
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroeder
12078a24d49ba36b83cda9d07c8e8a480c493fe8Felix Gabriel Mancedata Base = Base IRI
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder deriving (Show, Eq, Ord, Typeable, Data)
30e9cf458094e5970bc06be667558961c2eccff4Felix Gabriel Mance
30e9cf458094e5970bc06be667558961c2eccff4Felix Gabriel Mancedata Triples = Triples Subject [PredicateObjectList]
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder deriving (Show, Eq, Ord, Typeable, Data)
30e9cf458094e5970bc06be667558961c2eccff4Felix Gabriel Mance
3e0eb79b52a3078a12531efc3f66d0d94fd9938dFelix Gabriel Mancedata Subject =
3e0eb79b52a3078a12531efc3f66d0d94fd9938dFelix Gabriel Mance Subject IRI
9c3f6477a95da46a907326206673b4a5c2164164Felix Gabriel Mance | SubjectList [PredicateObjectList]
3e0eb79b52a3078a12531efc3f66d0d94fd9938dFelix Gabriel Mance | SubjectCollection [Object]
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder deriving (Show, Eq, Ord, Typeable, Data)
30e9cf458094e5970bc06be667558961c2eccff4Felix Gabriel Mance
3e0eb79b52a3078a12531efc3f66d0d94fd9938dFelix Gabriel Mancedata Predicate = Predicate IRI
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder deriving (Show, Eq, Ord, Typeable, Data)
30e9cf458094e5970bc06be667558961c2eccff4Felix Gabriel Mance
9c3f6477a95da46a907326206673b4a5c2164164Felix Gabriel Mancedata Object = Object Subject
316ef492799cd45fea0f5c26932f49adddfda3f7Felix Gabriel Mance | ObjectLiteral RDFLiteral
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder deriving (Show, Eq, Ord, Typeable, Data)
31a5ba51cd6d24e28a23abf64ce4043a45eabbefFelix Gabriel Mance
30e9cf458094e5970bc06be667558961c2eccff4Felix Gabriel Mancedata PredicateObjectList = PredicateObjectList Predicate [Object]
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder deriving (Show, Eq, Ord, Typeable, Data)
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroeder
316ef492799cd45fea0f5c26932f49adddfda3f7Felix Gabriel Mancedata RDFLiteral = RDFLiteral Bool LexicalForm TypedOrUntyped
316ef492799cd45fea0f5c26932f49adddfda3f7Felix Gabriel Mance | RDFNumberLit FloatLit
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder deriving (Show, Eq, Ord, Typeable, Data)
31a5ba51cd6d24e28a23abf64ce4043a45eabbefFelix Gabriel Mance
0be7a9c012366ada63d587898a15c551b499b76dFelix Gabriel Mance-- * Datatypes for Hets manipulation
30e9cf458094e5970bc06be667558961c2eccff4Felix Gabriel Mance
e5e3f128bbd44dd393e1038718038bd323f5e415Felix Gabriel Mancedata Term =
e5e3f128bbd44dd393e1038718038bd323f5e415Felix Gabriel Mance SubjectTerm IRI
e5e3f128bbd44dd393e1038718038bd323f5e415Felix Gabriel Mance | PredicateTerm IRI
e5e3f128bbd44dd393e1038718038bd323f5e415Felix Gabriel Mance | ObjectTerm (Either IRI RDFLiteral)
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder deriving (Show, Eq, Ord, Typeable, Data)
e5e3f128bbd44dd393e1038718038bd323f5e415Felix Gabriel Mance
e5e3f128bbd44dd393e1038718038bd323f5e415Felix Gabriel Mancedata Axiom = Axiom Term Term Term
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder deriving (Show, Eq, Ord, Typeable, Data)
31a5ba51cd6d24e28a23abf64ce4043a45eabbefFelix Gabriel Mance
3e0eb79b52a3078a12531efc3f66d0d94fd9938dFelix Gabriel Mancedata RDFEntityType = SubjectEntity | PredicateEntity | ObjectEntity
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder deriving (Show, Eq, Ord, Bounded, Enum, Typeable, Data)
15d62726781e67fe6458fbcf0a8c46832a7bb8daFelix Gabriel Mance
15d62726781e67fe6458fbcf0a8c46832a7bb8daFelix Gabriel Mance-- | entities used for morphisms
e5e3f128bbd44dd393e1038718038bd323f5e415Felix Gabriel Mancedata RDFEntity = RDFEntity RDFEntityType Term
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder deriving (Show, Eq, Ord, Typeable, Data)
15d62726781e67fe6458fbcf0a8c46832a7bb8daFelix Gabriel Mance
e5ea4eeaeefd3521ae3475719e18c96cf91637d5Felix Gabriel MancerdfEntityTypes :: [RDFEntityType]
e5ea4eeaeefd3521ae3475719e18c96cf91637d5Felix Gabriel MancerdfEntityTypes = [minBound .. maxBound]
dda7065c0c0f383558d7d4e8072969c8c41a8ed7Francisc Nicolae Bungiu
734257b9ea9fcaa18d4e3627f54f5295a99aa1f7Felix Gabriel Manceinstance GetRange TurtleDocument where
1f9274bb2aa44ea236327814dce99946be52e348Felix Gabriel Manceinstance GetRange RDFEntity where
c4076ff1721f8901a30e4b7aa004479ecb2631e0Felix Gabriel Manceinstance GetRange Axiom where
30e9cf458094e5970bc06be667558961c2eccff4Felix Gabriel Mance
02c522d7af110fcad567e3db59f444185ad2c22eFelix Gabriel Mance-- | useful functions
02c522d7af110fcad567e3db59f444185ad2c22eFelix Gabriel Mance
02c522d7af110fcad567e3db59f444185ad2c22eFelix Gabriel ManceextractTripleStatements :: [Statement] -> [Triples]
02c522d7af110fcad567e3db59f444185ad2c22eFelix Gabriel ManceextractTripleStatements ls = case ls of
02c522d7af110fcad567e3db59f444185ad2c22eFelix Gabriel Mance [] -> []
02c522d7af110fcad567e3db59f444185ad2c22eFelix Gabriel Mance h : t -> case h of
02c522d7af110fcad567e3db59f444185ad2c22eFelix Gabriel Mance Statement triple -> triple : extractTripleStatements t
02c522d7af110fcad567e3db59f444185ad2c22eFelix Gabriel Mance _ -> extractTripleStatements t
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroeder
02c522d7af110fcad567e3db59f444185ad2c22eFelix Gabriel MancetriplesOfDocument :: TurtleDocument -> [Triples]
02c522d7af110fcad567e3db59f444185ad2c22eFelix Gabriel MancetriplesOfDocument doc = extractTripleStatements $ statements doc
02c522d7af110fcad567e3db59f444185ad2c22eFelix Gabriel Mance
02c522d7af110fcad567e3db59f444185ad2c22eFelix Gabriel MancerdfFirst :: IRI
80875f917d741946a39d0ec0b5721e46ba609823Till MossakowskirdfFirst = nullIRI { prefixName = "rdf"
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski , iriPath = stringToId "first"
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski , isAbbrev = True }
02c522d7af110fcad567e3db59f444185ad2c22eFelix Gabriel Mance
02c522d7af110fcad567e3db59f444185ad2c22eFelix Gabriel MancerdfRest :: IRI
80875f917d741946a39d0ec0b5721e46ba609823Till MossakowskirdfRest = nullIRI { prefixName = "rdf"
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski , iriPath = stringToId "rest"
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski , isAbbrev = True }
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroeder
02c522d7af110fcad567e3db59f444185ad2c22eFelix Gabriel MancerdfNil :: IRI
80875f917d741946a39d0ec0b5721e46ba609823Till MossakowskirdfNil = nullIRI { prefixName = "rdf"
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski , iriPath = stringToId "nil"
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski , isAbbrev = True }
02c522d7af110fcad567e3db59f444185ad2c22eFelix Gabriel Mance
12078a24d49ba36b83cda9d07c8e8a480c493fe8Felix Gabriel ManceisAbsoluteIRI :: IRI -> Bool
80875f917d741946a39d0ec0b5721e46ba609823Till MossakowskiisAbsoluteIRI i = hasFullIRI i && isPrefixOf "//" (show $ iriPath i)
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski