-- | This module provides some convenience functions to get values from BindingValue. module Database.HaSparqlClient.Values(-- * Getting values languageValue, datatypeValue, uriValue, literalValue, bnodeValue, value, -- * XML representation showsparql) where import Database.HaSparqlClient.Types -- | SPARQL XML representation. class ShowQuery a where showsparql :: a -> String -- | SPARQL XML representation for 'BindingValue'. instance ShowQuery BindingValue where showsparql (URI uri) = "" ++ uri ++ "" showsparql (Literal str) = ""++ str ++ "" showsparql (TypedLiteral str tp) = "" ++ str ++ "" showsparql (BNode str) = "" ++ str ++ "" showsparql (LangLiteral str lan) = "" ++ str ++ "" showsparql _ = "" -- | Get the language value for a 'BindingValue'. Return 'Nothing' if 'BindingValue' is not 'LangLiteral'. languageValue :: BindingValue -> Maybe String languageValue (LangLiteral str lan) = Just lan languageValue _ = Nothing -- | Get the datatype value for a 'BindingValue'. Return 'Nothing' if 'BindingValue' is not 'TypedLiteral'. datatypeValue :: BindingValue -> Maybe String datatypeValue (TypedLiteral str tp) = Just tp datatypeValue _ = Nothing -- | Get the 'URI' value for a BindingValue. Return 'Nothing' if 'BindingValue' is not 'URI'. uriValue :: BindingValue -> Maybe String uriValue (URI str) = Just str uriValue _ = Nothing -- | Get the literal value for a 'BindingValue'. Return 'Nothing' if not is of the any literal type. literalValue :: BindingValue -> Maybe String literalValue (Literal str) = Just str literalValue (TypedLiteral str tp) = Just str literalValue (LangLiteral str lan) = Just str literalValue _ = Nothing -- | Get the 'BNode' value for a 'BindingValue'. Return 'Nothing' if 'BindingValue' is not 'BNode'. bnodeValue :: BindingValue -> Maybe String bnodeValue (BNode bno) = Just bno bnodeValue _ = Nothing -- | Get the value for a 'BindingValue'. Return 'Nothing' if BindingValue is 'Unbound'. value :: BindingValue -> Maybe String value res = case (uriValue res) of Nothing -> case (literalValue res) of Nothing -> case (bnodeValue res) of Nothing -> Nothing Just bno -> Just bno Just lit -> Just lit Just uri -> Just uri