swish-0.9.1.7: A semantic web toolkit.

Copyright | (c) 2003, Graham Klyne, 2009 Vasili I Galchin, 2011, 2012, 2014, 2016 Douglas Burke
License | GPL V2
Maintainer | Douglas Burke
Stability | experimental
Portability | CPP, FlexibleInstances, MultiParamTypeClasses
Safe Haskell | Safe
Language | Haskell98

Swish.GraphMem

Description

This module defines a simple memory-based graph instance.

Synopsis

- data GraphMem lb = GraphMem {
  - arcs :: ArcSet lb
  }
- data LabelMem
  - = LF String
  - | LV String
- setArcs :: LDGraph lg lb => lg lb -> ArcSet lb -> lg lb
- getArcs :: LDGraph lg lb => lg lb -> ArcSet lb
- addGraphs :: (LDGraph lg lb, Ord lb) => lg lb -> lg lb -> lg lb
- delete :: (LDGraph lg lb, Ord lb) => lg lb -> lg lb -> lg lb
- extract :: (LDGraph lg lb, Ord lb) => Selector lb -> lg lb -> lg lb
- labels :: (LDGraph lg lb, Ord lb) => lg lb -> Set lb
- labelIsVar :: Label lb => lb -> Bool
- labelHash :: Label lb => Int -> lb -> Int
- matchGraphMem :: Label lb => GraphMem lb -> GraphMem lb -> (Bool, LabelMap (ScopedLabel lb))

# Documentation

data GraphMem lb Source

Simple memory-based graph type.

Constructors

GraphMem |

Fields

arcs :: ArcSet lb

Instances

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

data LabelMem Source

Minimal graph label value - for testing

Constructors

LF String |
LV String |

Instances

Eq LabelMem Source |
Ord LabelMem Source |
Show LabelMem Source |
Hashable LabelMem Source |
Label LabelMem Source |

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

Arguments

:: (LDGraph lg lb, Ord lb) |
=> lg lb | g1
-> lg lb | g2
-> 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

Arguments

:: 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