{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}

module Data.RDF.State where

import           Control.Monad.State
import           Data.RDF            (RDF, Rdf, PrefixMappings, BaseUrl, Triples, Triple, NodeSelector)
import qualified Data.RDF            as RDF

-- | StateT monad which allows to combine more easily functions from 'Rdf'
-- typeclass, eg.:
--
-- @
-- import Data.RDF
-- import qualified Data.RDF.State as RDFS
--
-- main :: IO ()
-- main = do
--   let myEmptyGraph = empty :: RDF TList
--   newGraph <- execStateT (unRdfST createGraph) myEmptyGraph
--   putStrLn (showGraph newGraph)
--
-- createGraph :: (Rdf rdfImpl, Monad m) => RdfST rdfImpl m ()
-- createGraph = do
--   -- add a triple to the empty graph
--   let triple1 = triple (unode "http://www.example.com/rob")
--                        (unode "http://xmlns.com/foaf/0.1/interest")
--                        (unode "http://dbpedia.org/resource/Scotch_whisky")
--   RDFS.addTriple triple1
--
--   -- add another triple to the graph
--   let triple2 = triple (unode "http://www.example.com/rob")
--                        (unode "http://xmlns.com/foaf/0.1/interest")
--                        (unode "http://dbpedia.org/resource/Haskell_(programming_language)")
--   RDFS.addTriple triple2
--
--   -- remove one of my interests
--   RDFS.removeTriple triple1
-- @
newtype RdfST rdfImpl m a = RdfST { forall rdfImpl (m :: * -> *) a.
RdfST rdfImpl m a -> StateT (RDF rdfImpl) m a
unRdfST :: StateT (RDF rdfImpl) m a }
  deriving
    ( (forall a b. (a -> b) -> RdfST rdfImpl m a -> RdfST rdfImpl m b)
-> (forall a b. a -> RdfST rdfImpl m b -> RdfST rdfImpl m a)
-> Functor (RdfST rdfImpl m)
forall a b. a -> RdfST rdfImpl m b -> RdfST rdfImpl m a
forall a b. (a -> b) -> RdfST rdfImpl m a -> RdfST rdfImpl m b
forall rdfImpl (m :: * -> *) a b.
Functor m =>
a -> RdfST rdfImpl m b -> RdfST rdfImpl m a
forall rdfImpl (m :: * -> *) a b.
Functor m =>
(a -> b) -> RdfST rdfImpl m a -> RdfST rdfImpl m b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
$cfmap :: forall rdfImpl (m :: * -> *) a b.
Functor m =>
(a -> b) -> RdfST rdfImpl m a -> RdfST rdfImpl m b
fmap :: forall a b. (a -> b) -> RdfST rdfImpl m a -> RdfST rdfImpl m b
$c<$ :: forall rdfImpl (m :: * -> *) a b.
Functor m =>
a -> RdfST rdfImpl m b -> RdfST rdfImpl m a
<$ :: forall a b. a -> RdfST rdfImpl m b -> RdfST rdfImpl m a
Functor,
      Functor (RdfST rdfImpl m)
Functor (RdfST rdfImpl m) =>
(forall a. a -> RdfST rdfImpl m a)
-> (forall a b.
    RdfST rdfImpl m (a -> b) -> RdfST rdfImpl m a -> RdfST rdfImpl m b)
-> (forall a b c.
    (a -> b -> c)
    -> RdfST rdfImpl m a -> RdfST rdfImpl m b -> RdfST rdfImpl m c)
-> (forall a b.
    RdfST rdfImpl m a -> RdfST rdfImpl m b -> RdfST rdfImpl m b)
-> (forall a b.
    RdfST rdfImpl m a -> RdfST rdfImpl m b -> RdfST rdfImpl m a)
-> Applicative (RdfST rdfImpl m)
forall a. a -> RdfST rdfImpl m a
forall a b.
RdfST rdfImpl m a -> RdfST rdfImpl m b -> RdfST rdfImpl m a
forall a b.
RdfST rdfImpl m a -> RdfST rdfImpl m b -> RdfST rdfImpl m b
forall a b.
RdfST rdfImpl m (a -> b) -> RdfST rdfImpl m a -> RdfST rdfImpl m b
forall a b c.
(a -> b -> c)
-> RdfST rdfImpl m a -> RdfST rdfImpl m b -> RdfST rdfImpl m c
forall rdfImpl (m :: * -> *). Monad m => Functor (RdfST rdfImpl m)
forall rdfImpl (m :: * -> *) a. Monad m => a -> RdfST rdfImpl m a
forall rdfImpl (m :: * -> *) a b.
Monad m =>
RdfST rdfImpl m a -> RdfST rdfImpl m b -> RdfST rdfImpl m a
forall rdfImpl (m :: * -> *) a b.
Monad m =>
RdfST rdfImpl m a -> RdfST rdfImpl m b -> RdfST rdfImpl m b
forall rdfImpl (m :: * -> *) a b.
Monad m =>
RdfST rdfImpl m (a -> b) -> RdfST rdfImpl m a -> RdfST rdfImpl m b
forall rdfImpl (m :: * -> *) a b c.
Monad m =>
(a -> b -> c)
-> RdfST rdfImpl m a -> RdfST rdfImpl m b -> RdfST rdfImpl m c
forall (f :: * -> *).
Functor f =>
(forall a. a -> f a)
-> (forall a b. f (a -> b) -> f a -> f b)
-> (forall a b c. (a -> b -> c) -> f a -> f b -> f c)
-> (forall a b. f a -> f b -> f b)
-> (forall a b. f a -> f b -> f a)
-> Applicative f
$cpure :: forall rdfImpl (m :: * -> *) a. Monad m => a -> RdfST rdfImpl m a
pure :: forall a. a -> RdfST rdfImpl m a
$c<*> :: forall rdfImpl (m :: * -> *) a b.
Monad m =>
RdfST rdfImpl m (a -> b) -> RdfST rdfImpl m a -> RdfST rdfImpl m b
<*> :: forall a b.
RdfST rdfImpl m (a -> b) -> RdfST rdfImpl m a -> RdfST rdfImpl m b
$cliftA2 :: forall rdfImpl (m :: * -> *) a b c.
Monad m =>
(a -> b -> c)
-> RdfST rdfImpl m a -> RdfST rdfImpl m b -> RdfST rdfImpl m c
liftA2 :: forall a b c.
(a -> b -> c)
-> RdfST rdfImpl m a -> RdfST rdfImpl m b -> RdfST rdfImpl m c
$c*> :: forall rdfImpl (m :: * -> *) a b.
Monad m =>
RdfST rdfImpl m a -> RdfST rdfImpl m b -> RdfST rdfImpl m b
*> :: forall a b.
RdfST rdfImpl m a -> RdfST rdfImpl m b -> RdfST rdfImpl m b
$c<* :: forall rdfImpl (m :: * -> *) a b.
Monad m =>
RdfST rdfImpl m a -> RdfST rdfImpl m b -> RdfST rdfImpl m a
<* :: forall a b.
RdfST rdfImpl m a -> RdfST rdfImpl m b -> RdfST rdfImpl m a
Applicative,
      Applicative (RdfST rdfImpl m)
Applicative (RdfST rdfImpl m) =>
(forall a b.
 RdfST rdfImpl m a -> (a -> RdfST rdfImpl m b) -> RdfST rdfImpl m b)
-> (forall a b.
    RdfST rdfImpl m a -> RdfST rdfImpl m b -> RdfST rdfImpl m b)
-> (forall a. a -> RdfST rdfImpl m a)
-> Monad (RdfST rdfImpl m)
forall a. a -> RdfST rdfImpl m a
forall a b.
RdfST rdfImpl m a -> RdfST rdfImpl m b -> RdfST rdfImpl m b
forall a b.
RdfST rdfImpl m a -> (a -> RdfST rdfImpl m b) -> RdfST rdfImpl m b
forall rdfImpl (m :: * -> *).
Monad m =>
Applicative (RdfST rdfImpl m)
forall rdfImpl (m :: * -> *) a. Monad m => a -> RdfST rdfImpl m a
forall rdfImpl (m :: * -> *) a b.
Monad m =>
RdfST rdfImpl m a -> RdfST rdfImpl m b -> RdfST rdfImpl m b
forall rdfImpl (m :: * -> *) a b.
Monad m =>
RdfST rdfImpl m a -> (a -> RdfST rdfImpl m b) -> RdfST rdfImpl m b
forall (m :: * -> *).
Applicative m =>
(forall a b. m a -> (a -> m b) -> m b)
-> (forall a b. m a -> m b -> m b)
-> (forall a. a -> m a)
-> Monad m
$c>>= :: forall rdfImpl (m :: * -> *) a b.
Monad m =>
RdfST rdfImpl m a -> (a -> RdfST rdfImpl m b) -> RdfST rdfImpl m b
>>= :: forall a b.
RdfST rdfImpl m a -> (a -> RdfST rdfImpl m b) -> RdfST rdfImpl m b
$c>> :: forall rdfImpl (m :: * -> *) a b.
Monad m =>
RdfST rdfImpl m a -> RdfST rdfImpl m b -> RdfST rdfImpl m b
>> :: forall a b.
RdfST rdfImpl m a -> RdfST rdfImpl m b -> RdfST rdfImpl m b
$creturn :: forall rdfImpl (m :: * -> *) a. Monad m => a -> RdfST rdfImpl m a
return :: forall a. a -> RdfST rdfImpl m a
Monad,
      MonadState (RDF rdfImpl),
      (forall (m :: * -> *). Monad m => Monad (RdfST rdfImpl m)) =>
(forall (m :: * -> *) a. Monad m => m a -> RdfST rdfImpl m a)
-> MonadTrans (RdfST rdfImpl)
forall rdfImpl (m :: * -> *). Monad m => Monad (RdfST rdfImpl m)
forall rdfImpl (m :: * -> *) a. Monad m => m a -> RdfST rdfImpl m a
forall (m :: * -> *). Monad m => Monad (RdfST rdfImpl m)
forall (m :: * -> *) a. Monad m => m a -> RdfST rdfImpl m a
forall (t :: (* -> *) -> * -> *).
(forall (m :: * -> *). Monad m => Monad (t m)) =>
(forall (m :: * -> *) a. Monad m => m a -> t m a) -> MonadTrans t
$clift :: forall rdfImpl (m :: * -> *) a. Monad m => m a -> RdfST rdfImpl m a
lift :: forall (m :: * -> *) a. Monad m => m a -> RdfST rdfImpl m a
MonadTrans,
      Monad (RdfST rdfImpl m)
Monad (RdfST rdfImpl m) =>
(forall a. IO a -> RdfST rdfImpl m a) -> MonadIO (RdfST rdfImpl m)
forall a. IO a -> RdfST rdfImpl m a
forall rdfImpl (m :: * -> *). MonadIO m => Monad (RdfST rdfImpl m)
forall rdfImpl (m :: * -> *) a.
MonadIO m =>
IO a -> RdfST rdfImpl m a
forall (m :: * -> *).
Monad m =>
(forall a. IO a -> m a) -> MonadIO m
$cliftIO :: forall rdfImpl (m :: * -> *) a.
MonadIO m =>
IO a -> RdfST rdfImpl m a
liftIO :: forall a. IO a -> RdfST rdfImpl m a
MonadIO
    )

-- | Same as 'Data.RDF.Types.baseUrl'
baseUrl
  :: (Rdf rdfImpl, Monad m)
  => RdfST rdfImpl m (Maybe BaseUrl)
baseUrl :: forall rdfImpl (m :: * -> *).
(Rdf rdfImpl, Monad m) =>
RdfST rdfImpl m (Maybe BaseUrl)
baseUrl = (RDF rdfImpl -> Maybe BaseUrl) -> RdfST rdfImpl m (Maybe BaseUrl)
forall s (m :: * -> *) a. MonadState s m => (s -> a) -> m a
gets RDF rdfImpl -> Maybe BaseUrl
forall rdfImpl. Rdf rdfImpl => RDF rdfImpl -> Maybe BaseUrl
RDF.baseUrl

-- | Same as 'Data.RDF.Types.prefixMappings'
prefixMappings
  :: (Rdf rdfImpl, Monad m)
  => RdfST rdfImpl m PrefixMappings
prefixMappings :: forall rdfImpl (m :: * -> *).
(Rdf rdfImpl, Monad m) =>
RdfST rdfImpl m PrefixMappings
prefixMappings = (RDF rdfImpl -> PrefixMappings) -> RdfST rdfImpl m PrefixMappings
forall s (m :: * -> *) a. MonadState s m => (s -> a) -> m a
gets RDF rdfImpl -> PrefixMappings
forall rdfImpl. Rdf rdfImpl => RDF rdfImpl -> PrefixMappings
RDF.prefixMappings

-- | Same as 'Data.RDF.Types.addPrefixMappings', but with the Bool arg as False
addPrefixMappings
  :: (Rdf rdfImpl, Monad m)
  => PrefixMappings
  -> RdfST rdfImpl m ()
addPrefixMappings :: forall rdfImpl (m :: * -> *).
(Rdf rdfImpl, Monad m) =>
PrefixMappings -> RdfST rdfImpl m ()
addPrefixMappings PrefixMappings
mappings =
  RdfST rdfImpl m (RDF rdfImpl)
forall s (m :: * -> *). MonadState s m => m s
get RdfST rdfImpl m (RDF rdfImpl)
-> (RDF rdfImpl -> RdfST rdfImpl m ()) -> RdfST rdfImpl m ()
forall a b.
RdfST rdfImpl m a -> (a -> RdfST rdfImpl m b) -> RdfST rdfImpl m b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \RDF rdfImpl
graph -> RDF rdfImpl -> RdfST rdfImpl m ()
forall s (m :: * -> *). MonadState s m => s -> m ()
put (RDF rdfImpl -> RdfST rdfImpl m ())
-> RDF rdfImpl -> RdfST rdfImpl m ()
forall a b. (a -> b) -> a -> b
$ RDF rdfImpl -> PrefixMappings -> Bool -> RDF rdfImpl
forall rdfImpl.
Rdf rdfImpl =>
RDF rdfImpl -> PrefixMappings -> Bool -> RDF rdfImpl
RDF.addPrefixMappings RDF rdfImpl
graph PrefixMappings
mappings Bool
False

-- | Same as 'Data.RDF.Types.addPrefixMappings', but with the Bool arg as True
replacePrefixMappings
  :: (Rdf rdfImpl, Monad m)
  => PrefixMappings
  -> RdfST rdfImpl m ()
replacePrefixMappings :: forall rdfImpl (m :: * -> *).
(Rdf rdfImpl, Monad m) =>
PrefixMappings -> RdfST rdfImpl m ()
replacePrefixMappings PrefixMappings
mappings =
  RdfST rdfImpl m (RDF rdfImpl)
forall s (m :: * -> *). MonadState s m => m s
get RdfST rdfImpl m (RDF rdfImpl)
-> (RDF rdfImpl -> RdfST rdfImpl m ()) -> RdfST rdfImpl m ()
forall a b.
RdfST rdfImpl m a -> (a -> RdfST rdfImpl m b) -> RdfST rdfImpl m b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \RDF rdfImpl
graph -> RDF rdfImpl -> RdfST rdfImpl m ()
forall s (m :: * -> *). MonadState s m => s -> m ()
put (RDF rdfImpl -> RdfST rdfImpl m ())
-> RDF rdfImpl -> RdfST rdfImpl m ()
forall a b. (a -> b) -> a -> b
$ RDF rdfImpl -> PrefixMappings -> Bool -> RDF rdfImpl
forall rdfImpl.
Rdf rdfImpl =>
RDF rdfImpl -> PrefixMappings -> Bool -> RDF rdfImpl
RDF.addPrefixMappings RDF rdfImpl
graph PrefixMappings
mappings Bool
True

-- | Same as 'Data.RDF.Types.empty'
empty
  :: (Rdf rdfImpl, Monad m)
  => RdfST rdfImpl m ()
empty :: forall rdfImpl (m :: * -> *).
(Rdf rdfImpl, Monad m) =>
RdfST rdfImpl m ()
empty = RDF rdfImpl -> RdfST rdfImpl m ()
forall s (m :: * -> *). MonadState s m => s -> m ()
put RDF rdfImpl
forall rdfImpl. Rdf rdfImpl => RDF rdfImpl
RDF.empty

-- | Same as 'Data.RDF.Types.mkRdf'
mkRdf
  :: (Rdf rdfImpl, Monad m)
  => Triples
  -> Maybe BaseUrl
  -> PrefixMappings
  -> RdfST rdfImpl m ()
mkRdf :: forall rdfImpl (m :: * -> *).
(Rdf rdfImpl, Monad m) =>
Triples -> Maybe BaseUrl -> PrefixMappings -> RdfST rdfImpl m ()
mkRdf Triples
triples Maybe BaseUrl
baseUrlMaybe PrefixMappings
mappings =
  RDF rdfImpl -> RdfST rdfImpl m ()
forall s (m :: * -> *). MonadState s m => s -> m ()
put (RDF rdfImpl -> RdfST rdfImpl m ())
-> RDF rdfImpl -> RdfST rdfImpl m ()
forall a b. (a -> b) -> a -> b
$ Triples -> Maybe BaseUrl -> PrefixMappings -> RDF rdfImpl
forall rdfImpl.
Rdf rdfImpl =>
Triples -> Maybe BaseUrl -> PrefixMappings -> RDF rdfImpl
RDF.mkRdf Triples
triples Maybe BaseUrl
baseUrlMaybe PrefixMappings
mappings

-- | Same as 'Data.RDF.Types.addTriple'
addTriple
  :: (Rdf rdfImpl, Monad m)
  => Triple -> RdfST rdfImpl m ()
addTriple :: forall rdfImpl (m :: * -> *).
(Rdf rdfImpl, Monad m) =>
Triple -> RdfST rdfImpl m ()
addTriple Triple
triple = RdfST rdfImpl m (RDF rdfImpl)
forall s (m :: * -> *). MonadState s m => m s
get RdfST rdfImpl m (RDF rdfImpl)
-> (RDF rdfImpl -> RdfST rdfImpl m ()) -> RdfST rdfImpl m ()
forall a b.
RdfST rdfImpl m a -> (a -> RdfST rdfImpl m b) -> RdfST rdfImpl m b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \RDF rdfImpl
graph -> RDF rdfImpl -> RdfST rdfImpl m ()
forall s (m :: * -> *). MonadState s m => s -> m ()
put (RDF rdfImpl -> RdfST rdfImpl m ())
-> RDF rdfImpl -> RdfST rdfImpl m ()
forall a b. (a -> b) -> a -> b
$ RDF rdfImpl -> Triple -> RDF rdfImpl
forall rdfImpl. Rdf rdfImpl => RDF rdfImpl -> Triple -> RDF rdfImpl
RDF.addTriple RDF rdfImpl
graph Triple
triple

-- | Same as 'Data.RDF.Types.removeTriple'
removeTriple
  :: (Rdf rdfImpl, Monad m)
  => Triple -> RdfST rdfImpl m ()
removeTriple :: forall rdfImpl (m :: * -> *).
(Rdf rdfImpl, Monad m) =>
Triple -> RdfST rdfImpl m ()
removeTriple Triple
triple = RdfST rdfImpl m (RDF rdfImpl)
forall s (m :: * -> *). MonadState s m => m s
get RdfST rdfImpl m (RDF rdfImpl)
-> (RDF rdfImpl -> RdfST rdfImpl m ()) -> RdfST rdfImpl m ()
forall a b.
RdfST rdfImpl m a -> (a -> RdfST rdfImpl m b) -> RdfST rdfImpl m b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \RDF rdfImpl
graph -> RDF rdfImpl -> RdfST rdfImpl m ()
forall s (m :: * -> *). MonadState s m => s -> m ()
put (RDF rdfImpl -> RdfST rdfImpl m ())
-> RDF rdfImpl -> RdfST rdfImpl m ()
forall a b. (a -> b) -> a -> b
$ RDF rdfImpl -> Triple -> RDF rdfImpl
forall rdfImpl. Rdf rdfImpl => RDF rdfImpl -> Triple -> RDF rdfImpl
RDF.removeTriple RDF rdfImpl
graph Triple
triple

-- | Same as 'Data.RDF.Types.triplesOf'
triplesOf
  :: (Rdf rdfImpl, Monad m)
  => RdfST rdfImpl m Triples
triplesOf :: forall rdfImpl (m :: * -> *).
(Rdf rdfImpl, Monad m) =>
RdfST rdfImpl m Triples
triplesOf = (RDF rdfImpl -> Triples) -> RdfST rdfImpl m Triples
forall s (m :: * -> *) a. MonadState s m => (s -> a) -> m a
gets RDF rdfImpl -> Triples
forall rdfImpl. Rdf rdfImpl => RDF rdfImpl -> Triples
RDF.triplesOf

-- | Same as 'Data.RDF.Types.uniqTriplesOf'
uniqTriplesOf
  :: (Rdf rdfImpl, Monad m)
  => RdfST rdfImpl m Triples
uniqTriplesOf :: forall rdfImpl (m :: * -> *).
(Rdf rdfImpl, Monad m) =>
RdfST rdfImpl m Triples
uniqTriplesOf = (RDF rdfImpl -> Triples) -> RdfST rdfImpl m Triples
forall s (m :: * -> *) a. MonadState s m => (s -> a) -> m a
gets RDF rdfImpl -> Triples
forall rdfImpl. Rdf rdfImpl => RDF rdfImpl -> Triples
RDF.uniqTriplesOf

-- | Same as 'Data.RDF.Types.select'
select
  :: (Rdf rdfImpl, Monad m)
  => NodeSelector
  -> NodeSelector
  -> NodeSelector
  -> RdfST rdfImpl m Triples
select :: forall rdfImpl (m :: * -> *).
(Rdf rdfImpl, Monad m) =>
NodeSelector
-> NodeSelector -> NodeSelector -> RdfST rdfImpl m Triples
select NodeSelector
s NodeSelector
p NodeSelector
o = RdfST rdfImpl m (RDF rdfImpl)
forall s (m :: * -> *). MonadState s m => m s
get RdfST rdfImpl m (RDF rdfImpl)
-> (RDF rdfImpl -> RdfST rdfImpl m Triples)
-> RdfST rdfImpl m Triples
forall a b.
RdfST rdfImpl m a -> (a -> RdfST rdfImpl m b) -> RdfST rdfImpl m b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \RDF rdfImpl
graph -> Triples -> RdfST rdfImpl m Triples
forall a. a -> RdfST rdfImpl m a
forall (m :: * -> *) a. Monad m => a -> m a
return (Triples -> RdfST rdfImpl m Triples)
-> Triples -> RdfST rdfImpl m Triples
forall a b. (a -> b) -> a -> b
$ RDF rdfImpl
-> NodeSelector -> NodeSelector -> NodeSelector -> Triples
forall rdfImpl.
Rdf rdfImpl =>
RDF rdfImpl
-> NodeSelector -> NodeSelector -> NodeSelector -> Triples
RDF.select RDF rdfImpl
graph NodeSelector
s NodeSelector
p NodeSelector
o

-- | Same as 'Data.RDF.Types.query'
query
  :: (Rdf rdfImpl, Monad m)
  => Maybe RDF.Node
  -> Maybe RDF.Node
  -> Maybe RDF.Node
  -> RdfST rdfImpl m Triples
query :: forall rdfImpl (m :: * -> *).
(Rdf rdfImpl, Monad m) =>
Maybe Node -> Maybe Node -> Maybe Node -> RdfST rdfImpl m Triples
query Maybe Node
s Maybe Node
p Maybe Node
o = RdfST rdfImpl m (RDF rdfImpl)
forall s (m :: * -> *). MonadState s m => m s
get RdfST rdfImpl m (RDF rdfImpl)
-> (RDF rdfImpl -> RdfST rdfImpl m Triples)
-> RdfST rdfImpl m Triples
forall a b.
RdfST rdfImpl m a -> (a -> RdfST rdfImpl m b) -> RdfST rdfImpl m b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \RDF rdfImpl
graph -> Triples -> RdfST rdfImpl m Triples
forall a. a -> RdfST rdfImpl m a
forall (m :: * -> *) a. Monad m => a -> m a
return (Triples -> RdfST rdfImpl m Triples)
-> Triples -> RdfST rdfImpl m Triples
forall a b. (a -> b) -> a -> b
$ RDF rdfImpl -> Maybe Node -> Maybe Node -> Maybe Node -> Triples
forall rdfImpl.
Rdf rdfImpl =>
RDF rdfImpl -> Maybe Node -> Maybe Node -> Maybe Node -> Triples
RDF.query RDF rdfImpl
graph Maybe Node
s Maybe Node
p Maybe Node
o

-- | Same as 'Data.RDF.Types.showGraph'
showGraph
  :: (Rdf rdfImpl, Monad m)
  => RdfST rdfImpl m String
showGraph :: forall rdfImpl (m :: * -> *).
(Rdf rdfImpl, Monad m) =>
RdfST rdfImpl m String
showGraph = (RDF rdfImpl -> String) -> RdfST rdfImpl m String
forall s (m :: * -> *) a. MonadState s m => (s -> a) -> m a
gets RDF rdfImpl -> String
forall rdfImpl. Rdf rdfImpl => RDF rdfImpl -> String
RDF.showGraph