[Fencommits] fenserve: make use new RDF implementation
Benja Fallenstein
benja.fallenstein at gmail.com
Thu Mar 22 19:49:16 EET 2007
Tue Mar 20 23:30:33 EET 2007 Benja Fallenstein <benja.fallenstein at gmail.com>
* make use new RDF implementation
diff -rN -u old-fenserve/FenServe.hs new-fenserve/FenServe.hs
--- old-fenserve/FenServe.hs 2007-03-22 19:49:16.000000000 +0200
+++ new-fenserve/FenServe.hs 2007-03-22 19:49:16.000000000 +0200
@@ -24,7 +24,7 @@
import Fenfire.Utils
import qualified Fenfire.Raptor as Raptor
-import HAppS
+import HAppS hiding (query)
import Control.Monad (liftM)
import Control.Monad.State (State, get, gets, put, modify, execState)
@@ -36,6 +36,7 @@
import qualified Data.Map as Map
import Data.Map (Map)
import qualified Data.Set as Set
+import Data.Set (Set)
import Data.Maybe (fromMaybe, fromJust)
import Data.Typeable
@@ -59,11 +60,6 @@
fs_mimeType = IRI "http://fenfire.org/2007/fenserve#mimeType"
fs_language = IRI "http://fenfire.org/2007/fenserve#language"
-rget :: Node -> Node -> Graph -> Node
-rget p s g = fromMaybe (error $ "FenServe.rget: not found: " ++ show s
- ++ " " ++ show p)
- (getOne g s p Pos)
-
data Entry = DirEntry { entryName :: String, entrySubdir :: Node }
| FileEntry { entryName :: String, entryRepr :: Node }
| ExecutableEntry { entryName :: String, entryCode :: Node }
@@ -84,7 +80,7 @@
instance FromRDF Directory where
readRDF g node = do
- let l = rget fs_entries node g
+ let l = query (node, fs_entries, X) g
tellTs [ (node, rdf_type, fs_Directory), (node, fs_entries, l) ]
entries <- readRDF g l
return $ Dir node entries
@@ -107,25 +103,25 @@
return e
instance FromRDF Entry where
- readRDF g node = case rget rdf_type node g of
+ readRDF g node = case query (node, rdf_type, X) g of
x | x == fs_FileEntry -> do
- let nameR = rget fs_filename node g
+ let nameR = query (node, fs_filename, X) g
name <- readRDF g nameR
- let repr = rget fs_representation node g
+ let repr = query (node, fs_representation, X) g
tellTs [ (node, fs_filename, nameR),
(node, fs_representation, repr) ]
return $ FileEntry name repr
x | x == fs_DirEntry -> do
- let nameR = rget fs_filename node g
+ let nameR = query (node, fs_filename, X) g
name <- readRDF g nameR
- let subdir = rget fs_subdir node g
+ let subdir = query (node, fs_subdir, X) g
tellTs [ (node, fs_filename, nameR),
(node, fs_subdir, subdir) ]
return $ DirEntry name subdir
x | x == fs_ExecutableEntry -> do
- let nameR = rget fs_filename node g
+ let nameR = query (node, fs_filename, X) g
name <- readRDF g nameR
- let code = rget fs_code node g
+ let code = query (node, fs_code, X) g
tellTs [ (node, fs_filename, nameR),
(node, fs_subdir, code) ]
return $ ExecutableEntry name code
@@ -166,12 +162,12 @@
readGraph :: BlockId -> StormIO Graph
readGraph bid = do triples <- readBlock bid; let uri = bURI bid
let triples' = everywhere (mkT $ absolutizeNode uri) triples
- return $ setGraphURI uri $ listToGraph $ triples'
+ return $ toGraph (IRI uri) (triples' :: Set Triple)
writeGraph :: Graph -> StormIO BlockId
-writeGraph graph = let triples = graphToList graph; uri = graphURI graph
- triples' = everywhere (mkT $ relativizeNode uri) triples
- in writeBlock triples'
+writeGraph g = let triples = fromGraph g; uri = iriStr $ defaultGraph g
+ triples' = everywhere (mkT $ relativizeNode uri) triples
+ in writeBlock (triples' :: Set Triple)
readData :: FromRDF a => Node -> StormIO a
readData node = do graph <- readGraph (bID node)
@@ -180,7 +176,7 @@
writeData :: ToRDF a => String -> a -> StormIO Node
writeData baseURI value = do
let (node, ts) = runToRDF baseURI $ toRDF value
- bid <- writeGraph $ setGraphURI baseURI $ listToGraph $ Set.toList ts
+ bid <- writeGraph $ toGraph (IRI baseURI) ts
return $ changeBaseURI baseURI (bURI bid) node
updateData :: (FromRDF a, ToRDF a) => EndoM StormIO a -> EndoM StormIO Node
More information about the Fencommits
mailing list