Commit a3b5c3c5 authored by Przemyslaw Kaminski's avatar Przemyslaw Kaminski

[gexf] fixes to the GEXF file format

parent 4f317061
Pipeline #3534 passed with stage
in 92 minutes and 4 seconds
...@@ -36,8 +36,11 @@ instance Xmlbf.ToXml Graph where ...@@ -36,8 +36,11 @@ instance Xmlbf.ToXml Graph where
root gn ge = root gn ge =
Xmlbf.element "gexf" params $ meta <> (graph gn ge) Xmlbf.element "gexf" params $ meta <> (graph gn ge)
where where
params = HashMap.fromList [ ("xmlns", "http://www.gexf.net/1.2draft") params = HashMap.fromList [ ("xmlns", "http://www.gexf.net/1.3")
, ("version", "1.2") ] , ("xmlns:viz", "http://gexf.net/1.3/viz")
, ("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance")
, ("xsi:schemaLocation", "http://gexf.net/1.3 http://gexf.net/1.3/gexf.xsd")
, ("version", "1.3") ]
meta = Xmlbf.element "meta" params $ creator <> desc meta = Xmlbf.element "meta" params $ creator <> desc
where where
params = HashMap.fromList [ ("lastmodifieddate", "2020-03-13") ] params = HashMap.fromList [ ("lastmodifieddate", "2020-03-13") ]
...@@ -53,20 +56,24 @@ instance Xmlbf.ToXml Graph where ...@@ -53,20 +56,24 @@ instance Xmlbf.ToXml Graph where
node' :: G.Node -> [Xmlbf.Node] node' :: G.Node -> [Xmlbf.Node]
node' (G.Node { node_id = nId, node_label = l, node_size = w}) = node' (G.Node { node_id = nId, node_label = l, node_size = w}) =
Xmlbf.element "node" params [] Xmlbf.element "node" params (Xmlbf.element "viz:size" sizeParams [])
where where
params = HashMap.fromList [ ("id", nId) params = HashMap.fromList [ ("id", nId)
, ("label", l) , ("label", l) ]
, ("size", (cs . show) w)] sizeParams = HashMap.fromList [ ("value", (cs . show) w) ]
edges :: [G.Edge] -> [Xmlbf.Node] edges :: [G.Edge] -> [Xmlbf.Node]
edges gn = Xmlbf.element "edges" HashMap.empty $ P.concatMap edge gn edges gn = Xmlbf.element "edges" HashMap.empty $ P.concatMap edge gn
edge :: G.Edge -> [Xmlbf.Node] edge :: G.Edge -> [Xmlbf.Node]
edge (G.Edge { edge_id = eId, edge_source = es, edge_target = et }) = edge (G.Edge { edge_id = eId
, edge_source = es
, edge_target = et
, edge_weight = ew }) =
Xmlbf.element "edge" params [] Xmlbf.element "edge" params []
where where
params = HashMap.fromList [ ("id", eId) params = HashMap.fromList [ ("id", eId)
, ("source", es) , ("source", es)
, ("target", et) ] , ("target", et)
, ("weight", (cs . show) ew)]
-- just to be able to derive a client for the entire gargantext API, -- just to be able to derive a client for the entire gargantext API,
-- we however want to avoid sollicitating this instance -- we however want to avoid sollicitating this instance
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment