packages feed

hsparql 0.2.2 → 0.2.3

raw patch · 3 files changed

+48/−50 lines, 3 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Database.HSparql.QueryGenerator: instance QueryShow RDFLiteral
- Database.HSparql.QueryGenerator: instance TermLike ([Char], IRIRef)
- Database.HSparql.QueryGenerator: instance TermLike ([Char], [Char])
- Database.HSparql.QueryGenerator: instance TermLike [Char]
+ Database.HSparql.QueryGenerator: instance QueryShow LValue
+ Database.HSparql.QueryGenerator: instance QueryShow Node
+ Database.HSparql.QueryGenerator: instance TermLike (Text, IRIRef)
+ Database.HSparql.QueryGenerator: instance TermLike (Text, Text)
+ Database.HSparql.QueryGenerator: instance TermLike Text
- Database.HSparql.QueryGenerator: (.:.) :: Prefix -> String -> IRIRef
+ Database.HSparql.QueryGenerator: (.:.) :: Prefix -> Text -> IRIRef
- Database.HSparql.QueryGenerator: iriRef :: String -> IRIRef
+ Database.HSparql.QueryGenerator: iriRef :: Text -> IRIRef
- Database.HSparql.QueryGenerator: prefix :: String -> IRIRef -> Query Prefix
+ Database.HSparql.QueryGenerator: prefix :: Text -> IRIRef -> Query Prefix

Files

Database/HSparql/Connection.hs view
@@ -54,7 +54,7 @@           value :: Element -> BindingValue           value e =             case qName (elName e) of-              "uri"     -> Bound $ Data.RDF.unode $ T.pack $ strContent e+              "uri"     -> Bound $ Data.RDF.unode $ (T.pack $ strContent e)               "literal" -> case findAttr (unqual "datatype") e of                              Just dt -> Bound $ Data.RDF.lnode $ Data.RDF.typedL (T.pack $ strContent e) (T.pack dt)                              Nothing -> case findAttr langAttr e of
Database/HSparql/QueryGenerator.hs view
@@ -10,7 +10,7 @@     -- * Query Actions     , prefix     , var-    , triple+    , Database.HSparql.QueryGenerator.triple     , constructTriple     , askTriple     , describeIRI@@ -71,7 +71,8 @@  import Control.Monad.State import Data.List (intercalate)-import Data.String.Utils+import qualified Data.Text as T+import Data.RDF   -- State monads@@ -118,10 +119,10 @@ -- Manipulate data within monad  -- |Add a prefix to the query, given an IRI reference, and return it.-prefix :: String -> IRIRef -> Query Prefix-prefix pre ref = do -- n <- gets prefixIdx-                let p = Prefix pre ref-                modify $ \s -> s { {- prefixIdx = n + 1, -} prefixes = p : prefixes s }+prefix :: T.Text -> IRIRef -> Query Prefix+prefix pre (AbsoluteIRI node) = do+                let p = Prefix pre node+                modify $ \s -> s { prefixes = p : prefixes s }                 return p  -- |Create and return a variable to the query, usable in later expressions.@@ -134,20 +135,20 @@ --  triple, or for which the variables can be bound. triple :: (TermLike a, TermLike b, TermLike c) => a -> b -> c -> Query Pattern triple a b c = do-    let t = Triple (varOrTerm a) (varOrTerm b) (varOrTerm c)+    let t = QTriple (varOrTerm a) (varOrTerm b) (varOrTerm c)     modify $ \s -> s { pattern = appendPattern t (pattern s) }     return t   constructTriple :: (TermLike a, TermLike b, TermLike c) => a -> b -> c -> Query Pattern constructTriple a b c = do-    let t = Triple (varOrTerm a) (varOrTerm b) (varOrTerm c)+    let t = QTriple (varOrTerm a) (varOrTerm b) (varOrTerm c)     modify $ \s -> s { constructTriples = appendTriple t (constructTriples s) }     return t  askTriple :: (TermLike a, TermLike b, TermLike c) => a -> b -> c -> Query Pattern askTriple a b c = do-    let t = Triple (varOrTerm a) (varOrTerm b) (varOrTerm c)+    let t = QTriple (varOrTerm a) (varOrTerm b) (varOrTerm c)     modify $ \s -> s { askTriples = appendTriple t (askTriples s) }     return t @@ -187,15 +188,10 @@  -- Random auxiliary --- |Form a 'PrefixedName' 'IRIRef', with the 'Prefix' and reference name.-(.:.) :: Prefix -> String -> IRIRef+-- |Form a 'Node', with the 'Prefix' and reference name.+(.:.) :: Prefix -> T.Text -> IRIRef (.:.) = PrefixedName --- |Create an 'IRIRef' with an absolute reference to the address at which it is---  located.-iriRef :: String -> IRIRef-iriRef = IRIRef- -- Duplicate handling  -- |Set duplicate handling to 'Distinct'. By default, there are no reductions.@@ -246,14 +242,14 @@   varOrTerm = Term . NumericLiteralTerm   expr = NumericExpr . NumericLiteralExpr -instance TermLike [Char] where-  varOrTerm = Term . RDFLiteralTerm . RDFLiteral+instance TermLike T.Text where+  varOrTerm = Term . RDFLiteralTerm . plainL -instance TermLike ([Char], [Char]) where-  varOrTerm (s, lang') = Term . RDFLiteralTerm $ RDFLiteralLang s lang'+instance TermLike (T.Text, T.Text) where+  varOrTerm (s, lang') = Term . RDFLiteralTerm $ plainLL s lang' -instance TermLike ([Char], IRIRef) where-  varOrTerm (s, ref) = Term . RDFLiteralTerm $ RDFLiteralIRIRef s ref+instance TermLike (T.Text, IRIRef) where+  varOrTerm (s, ref) = Term . RDFLiteralTerm $ typedL s (getFQN ref)  instance TermLike Bool where   varOrTerm = Term . BooleanLiteralTerm@@ -363,8 +359,7 @@ -- Default QueryData queryData :: QueryData queryData = QueryData-    { {- prefixIdx  = 0-    , -} prefixes   = []+    { prefixes   = []     , varsIdx    = 0     , vars       = []     , queryType  = TypeNotSet@@ -386,22 +381,23 @@  data Duplicates = NoLimits | Distinct | Reduced --- data Prefix = Prefix Int IRIRef-data Prefix = Prefix String IRIRef+data Prefix = Prefix T.Text Node  data Variable = Variable Int +data IRIRef = AbsoluteIRI Node+            | PrefixedName Prefix T.Text -data IRIRef = IRIRef String-            | PrefixedName Prefix String +iriRef :: T.Text -> IRIRef+iriRef uri = AbsoluteIRI $ unode uri -data RDFLiteral = RDFLiteral String-                | RDFLiteralLang String String-                | RDFLiteralIRIRef String IRIRef+getFQN :: IRIRef -> T.Text+getFQN (AbsoluteIRI (UNode n)) = n+getFQN (PrefixedName (Prefix _ (UNode n)) s) = T.append n s  -- Should support numeric literals, too data GraphTerm = IRIRefTerm IRIRef-               | RDFLiteralTerm RDFLiteral+               | RDFLiteralTerm LValue                | NumericLiteralTerm Integer                | BooleanLiteralTerm Bool @@ -427,7 +423,7 @@           | BuiltinCall Function [Expr]           | VarOrTermExpr VarOrTerm -data Pattern = Triple VarOrTerm VarOrTerm VarOrTerm+data Pattern = QTriple VarOrTerm VarOrTerm VarOrTerm              | Filter Expr              | OptionalGraphPattern GroupGraphPattern              | UnionGraphPattern GroupGraphPattern GroupGraphPattern@@ -450,7 +446,7 @@     , vars       :: [Variable]     , queryType  :: QueryType     , pattern    :: GroupGraphPattern-    , constructTriples :: [Pattern] -- Triple+    , constructTriples :: [Pattern] -- QTriple     , askTriples :: [Pattern]     , describeURI :: Maybe IRIRef     , duplicates :: Duplicates@@ -484,24 +480,27 @@   qshow Distinct = "DISTINCT"   qshow Reduced  = "REDUCED" +instance QueryShow Node where+  qshow (UNode n) = "<" ++ T.unpack n ++ ">"+ instance QueryShow Prefix where-  qshow (Prefix pre ref) = "PREFIX " ++ pre ++ ": " ++ qshow ref+  qshow (Prefix pre ref) = "PREFIX " ++ (T.unpack pre) ++ ": " ++ qshow ref  instance QueryShow Variable where   qshow (Variable v) = "?x" ++ show v  instance QueryShow IRIRef where-  qshow (IRIRef r) = "<" ++ r ++ ">"-  qshow (PrefixedName (Prefix pre _) s) = pre ++ ":" ++ s+  qshow (AbsoluteIRI n) = qshow n+  qshow (PrefixedName (Prefix pre _) s) = (T.unpack pre) ++ ":" ++ (T.unpack s)  instance QueryShow (Maybe IRIRef) where   qshow (Just r) = qshow r   qshow Nothing = "" -instance QueryShow RDFLiteral where-  qshow (RDFLiteral s)           = "\"" ++ escapeQuotes s ++ "\""-  qshow (RDFLiteralLang s lang')  = "\"" ++ escapeQuotes s ++ "\"@" ++ lang'-  qshow (RDFLiteralIRIRef s ref) = "\"" ++ escapeQuotes s ++ "\"^^" ++ qshow ref+instance QueryShow LValue where+  qshow (PlainL s)        = "\"" ++ (T.unpack $ escapeQuotes s) ++ "\""+  qshow (PlainLL s lang') = "\"" ++ (T.unpack $ escapeQuotes s) ++ "\"@" ++ (T.unpack lang')+  qshow (TypedL s ref)    = "\"" ++ (T.unpack $ escapeQuotes s) ++ "\"^^" ++ (T.unpack ref)  instance QueryShow GraphTerm where   qshow (IRIRefTerm ref)           = qshow ref@@ -550,13 +549,13 @@   qshow e = "(" ++ qshow' e ++ ")"     where qshow' (OrExpr es)        = intercalate " || " $ map qshow es           qshow' (AndExpr es)       = intercalate " && " $ map qshow es-          qshow' (NegatedExpr e')    = '!' : qshow e'+          qshow' (NegatedExpr e')   = '!' : qshow e'           qshow' (RelationalExpr rel e1 e2) = qshow e1 ++ qshow rel ++ qshow e2-          qshow' (NumericExpr e')    = qshow e'+          qshow' (NumericExpr e')   = qshow e'           qshow' (BuiltinCall f es) = qshow f ++ "(" ++ intercalate ", " (map qshow es) ++ ")"  instance QueryShow Pattern where-  qshow (Triple a b c) = qshow [a, b, c] ++ " ."+  qshow (QTriple a b c) = qshow [a, b, c] ++ " ."   qshow (Filter e)     = "FILTER " ++ qshow e ++ " ."    qshow (OptionalGraphPattern p)  = "OPTIONAL " ++ qshow p@@ -615,6 +614,5 @@   -- Internal utilities--escapeQuotes :: String -> String-escapeQuotes = replace "\"" "\\\""+escapeQuotes :: T.Text -> T.Text+escapeQuotes = T.replace "\"" "\\\""
hsparql.cabal view
@@ -1,6 +1,6 @@ Name:          hsparql Homepage:      https://github.com/robstewart57/hsparql-Version:       0.2.2+Version:       0.2.3 Synopsis:      A SPARQL query generator and DSL, and a client to query a SPARQL server. Category:      Database Description:@@ -32,7 +32,7 @@                , MissingH                , network                , text-  extensions:  RankNTypes FlexibleInstances+  extensions:  RankNTypes FlexibleInstances OverloadedStrings  test-suite test-hsparql   type:          exitcode-stdio-1.0