[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