[Fencommits] fenfire-hs: make nodes and graphs derive Read; make setGraphURI replace the graph URI in bnodes
Benja Fallenstein
benja.fallenstein at gmail.com
Sun Mar 18 02:14:50 EET 2007
Sun Mar 18 02:10:27 EET 2007 Benja Fallenstein <benja.fallenstein at gmail.com>
* make nodes and graphs derive Read; make setGraphURI replace the graph URI in bnodes
diff -rN -u old-fenfire-hs/Fenfire/RDF.hs new-fenfire-hs/Fenfire/RDF.hs
--- old-fenfire-hs/Fenfire/RDF.hs 2007-03-18 02:14:49.000000000 +0200
+++ new-fenfire-hs/Fenfire/RDF.hs 2007-03-18 02:14:50.000000000 +0200
@@ -28,6 +28,7 @@
import Control.Monad.Reader (Reader, ask, runReader)
import Control.Monad.State (State, get, put, modify, runState)
+import Data.Generics
import Data.List (intersperse)
import Data.Map (Map)
import qualified Data.Map as Map
@@ -41,12 +42,12 @@
data Node = IRI { nodeStr :: String }
| BNode { bnodeGraph :: String, nodeStr :: String }
| Literal { nodeStr :: String, literalTag :: LiteralTag }
- deriving (Eq, Ord)
-data LiteralTag = Plain | Lang String | Type String deriving (Eq, Ord, Show)
+ deriving (Eq, Ord, Show, Read, Typeable, Data)
+data LiteralTag = Plain | Lang String | Type String deriving (Eq, Ord, Show, Read, Typeable, Data)
data Dir = Pos | Neg deriving (Eq, Ord, Show)
-instance Show Node where
- show = showNode defaultNamespaces
+{-instance Show Node where
+ show = showNode defaultNamespaces-}
-- This is unfortunately something of a pun because I can't find a good
@@ -69,7 +70,7 @@
data Graph = Graph {
graphNamespaces :: Namespaces, graphURI :: String,
graphSides :: Coin (Map Node (Map Node (Set Node))),
- graphRealTriples :: Set Triple } deriving (Show, Eq)
+ graphRealTriples :: Set Triple } deriving (Show, Read, Eq, Data, Typeable)
data Conn = Conn { connProp :: Node, connDir :: Dir, connTarget :: Node }
deriving (Eq, Ord, Show)
@@ -188,7 +189,10 @@
mergeGraphs real virtual = foldr insertVirtual real (graphToList virtual)
setGraphURI :: String -> Endo Graph
-setGraphURI uri g = g { graphURI = uri }
+setGraphURI uri g = everywhere (mkT f) $ g { graphURI = uri } where
+ f :: Endo Node
+ f (BNode gid n) | gid == graphURI g = BNode uri n
+ f n = n
insert :: Triple -> Endo Graph
insert t graph@(Graph { graphRealTriples=ts }) =
More information about the Fencommits
mailing list