Portability | DeriveFunctor, DeriveFoldable, DeriveTraversable, MultiParamTypeClasses |
---|---|
Stability | experimental |
Maintainer | Douglas Burke |
This module defines a Labelled Directed Graph and Label classes, and the Arc datatype.
- class (Eq (lg lb), Eq lb) => LDGraph lg lb where
- setArcs :: [Arc lb] -> lg lb -> lg lb
- getArcs :: lg lb -> [Arc lb]
- extract :: Selector lb -> lg lb -> lg lb
- add :: lg lb -> lg lb -> lg lb
- delete :: lg lb -> lg lb -> lg lb
- labels :: lg lb -> [lb]
- nodes :: lg lb -> [lb]
- containedIn :: lg lb -> lg lb -> Bool
- update :: ([Arc lb] -> [Arc lb]) -> lg lb -> lg lb
- replaceArcs :: LDGraph lg lb => lg lb -> [Arc lb] -> lg lb
- class (Eq lb, Show lb, Ord lb) => Label lb where
- data Arc lb = Arc {}
- arcSubj :: Arc lb -> lb
- arcPred :: Arc lb -> lb
- arcObj :: Arc lb -> lb
- arc :: lb -> lb -> lb -> Arc lb
- arcToTriple :: Arc lb -> (lb, lb, lb)
- arcFromTriple :: (lb, lb, lb) -> Arc lb
- type Selector lb = Arc lb -> Bool
- hasLabel :: Eq lb => lb -> Arc lb -> Bool
- arcLabels :: Arc lb -> [lb]
Documentation
class (Eq (lg lb), Eq lb) => LDGraph lg lb whereSource
Labelled Directed Graph class
Minimum required implementation: setArcs
, getArcs
and containedIn
(although containedIn
may be removed as it is currently unused).
setArcs :: [Arc lb] -> lg lb -> lg lbSource
Replace the existing arcs in the graph.
getArcs :: lg lb -> [Arc lb]Source
Extract all the arcs from a graph
extract :: Selector lb -> lg lb -> lg lbSource
Extract those arcs that match the given Selector
.
add :: lg lb -> lg lb -> lg lbSource
Add the two graphs
:: lg lb | g1 |
-> lg lb | g2 |
-> lg lb | g2 - g1 -> g3 |
Remove those arcs in the first graph from the second graph
Enumerate the distinct labels contained in a graph;
that is, any label that appears in the subject,
predicate or object position of an Arc
.
Enumerate the distinct nodes contained in a graph;
that is, any label that appears in the subject
or object position of an Arc
.
containedIn :: lg lb -> lg lb -> BoolSource
Test for graph containment in another.
At present this is unused and may be removed in a future release.
update :: ([Arc lb] -> [Arc lb]) -> lg lb -> lg lbSource
Update the arcs in a graph using a supplied function.
replaceArcs :: LDGraph lg lb => lg lb -> [Arc lb] -> lg lbSource
Function to replace arcs in a graph with a given list of arcs.
This is identical to flip setArcs
and so may be removed.
class (Eq lb, Show lb, Ord lb) => Label lb whereSource
Label class
A label may have a fixed binding, which means that the label identifies (is) a particular graph node, and different such labels are always distinct nodes. Alternatively, a label may be unbound (variable), which means that it is a placeholder for an unknown node label. Unbound node labels are used as graph-local identifiers for indicating when the same node appears in several arcs.
For the purposes of graph-isomorphism testing, fixed labels are matched when they are the same. Variable labels may be matched with any other variable label. Our definition of isomorphism (for RDF graphs) does not match variable labels with fixed labels.
labelIsVar :: lb -> BoolSource
Does this node have a variable binding?
labelHash :: Int -> lb -> IntSource
Calculate the hash of the label using the supplied seed.
getLocal :: lb -> StringSource
Extract the local id from a variable node.
makeLabel :: String -> lbSource
Make a label value from a local id.
Arc type
:: lb | The subject of the arc. |
-> lb | The predicate of the arc. |
-> lb | The object of the arc. |
-> Arc lb |
Create an arc.
arcToTriple :: Arc lb -> (lb, lb, lb)Source
Convert an Arc into a tuple.
arcFromTriple :: (lb, lb, lb) -> Arc lbSource
Create an Arc from a tuple.