swish- A semantic web toolkit.

Copyright(c) 2003, Graham Klyne, 2009 Vasili I Galchin, 2011, 2012, 2014 Douglas Burke
LicenseGPL V2
MaintainerDouglas Burke
PortabilityCPP, FlexibleInstances, MultiParamTypeClasses
Safe HaskellSafe-Inferred



This module defines a simple memory-based graph instance.



data GraphMem lb Source

Simple memory-based graph type.




arcs :: ArcSet lb


Label lb => LDGraph GraphMem lb 
Label lb => Eq (GraphMem lb) 
Label lb => Ord (GraphMem lb) 
Label lb => Show (GraphMem lb) 
Label lb => Monoid (GraphMem lb) 

data LabelMem Source

Minimal graph label value - for testing


LF String 
LV String 

setArcs :: LDGraph lg lb => lg lb -> ArcSet lb -> lg lb Source

Replace the existing arcs in the graph.

getArcs :: LDGraph lg lb => lg lb -> ArcSet lb Source

Extract all the arcs from a graph

addGraphs :: (LDGraph lg lb, Ord lb) => lg lb -> lg lb -> lg lb Source

Add the two graphs

delete Source


:: (LDGraph lg lb, Ord lb) 
=> lg lb


-> lg lb


-> lg lb

g2 - g1 -> g3

Remove those arcs in the first graph from the second graph

extract :: (LDGraph lg lb, Ord lb) => Selector lb -> lg lb -> lg lb Source

Extract those arcs that match the given Selector.

labels :: (LDGraph lg lb, Ord lb) => lg lb -> Set lb Source

Enumerate the distinct labels contained in a graph; that is, any label that appears in the subject, predicate or object position of an Arc.

labelIsVar :: Label lb => lb -> Bool Source

Does this node have a variable binding?

labelHash :: Label lb => Int -> lb -> Int Source

Calculate the hash of the label using the supplied seed.

matchGraphMem Source


:: Label lb 
=> GraphMem lb 
-> GraphMem lb 
-> (Bool, LabelMap (ScopedLabel lb))

if the first element is True then the second value is a label map that maps each label to an equivalence-class identifier, otherwise emptyMap.

GraphMem matching function accepting GraphMem value and returning node map if successful