[Fencommits] fenfire-hs: implement changeURI
Benja Fallenstein
benja.fallenstein at gmail.com
Wed Feb 21 09:01:35 EET 2007
Wed Feb 21 09:00:21 EET 2007 Benja Fallenstein <benja.fallenstein at gmail.com>
* implement changeURI
diff -rN -u old-fenfire-hs/Fenfire.fhs new-fenfire-hs/Fenfire.fhs
--- old-fenfire-hs/Fenfire.fhs 2007-02-21 09:01:35.000000000 +0200
+++ new-fenfire-hs/Fenfire.fhs 2007-02-21 09:01:35.000000000 +0200
@@ -569,8 +569,9 @@
"resetprop" -> when (fsProperty state /= rdfs_seeAlso) $
put $ state { fsProperty = rdfs_seeAlso }
"changeURI" -> case node of
- URI uri -> confirmString "New URI" uri $ \uri' ->
- liftIO $ putStrLn $ "Change "++uri++" to "++uri'
+ URI uri -> confirmString "New URI" uri $ \uri' -> do
+ putGraph $ replaceNode node (URI uri') graph
+ putRotation $ Rotation (URI uri') r
_ -> unhandledEvent
_ -> unhandledEvent
where putGraph g = do modify $ \s ->
diff -rN -u old-fenfire-hs/RDF.hs new-fenfire-hs/RDF.hs
--- old-fenfire-hs/RDF.hs 2007-02-21 09:01:35.000000000 +0200
+++ new-fenfire-hs/RDF.hs 2007-02-21 09:01:35.000000000 +0200
@@ -169,6 +169,11 @@
update :: Triple -> Endo Graph
update (s,p,o) g = insert (s,p,o) $ deleteAll s p g
+replaceNode :: Node -> Node -> Endo Graph
+replaceNode m n graph = Set.fold f graph (graphRealTriples graph) where
+ f (s,p,o) = insert (r s, r p, r o) . delete (s,p,o)
+ r x = if x == m then n else x
+
addNamespace :: String -> String -> Endo Graph
addNamespace prefix uri g =
g { graphNamespaces = Map.insert prefix uri $ graphNamespaces g }
More information about the Fencommits
mailing list