calpano / graphinout Goto Github PK
View Code? Open in Web Editor NEWGraph Input/Output Converter – GraphML Reader/Writer in Java
License: BSD 3-Clause "New" or "Revised" License
Graph Input/Output Converter – GraphML Reader/Writer in Java
License: BSD 3-Clause "New" or "Revised" License
Add test file which tries to use all DOT features, (or use multiple files), then verify via e.g. mocks that data from file ended up correctly in Gio stream (calls to GioWriter)
Look at existing Graph6Reader
add validation to the GioNode/GioEdge/etc. objects themselves
maybe a ValidatingGioWriter is not needed. -> is required to check interplay of objects
Every stream of valid/creatable GioObjects should be handled by GioWriter,
delegates to GraphMLWriter -- and the ValidatingGraphmlWriter catches all wrongly nested/ordered elements.
similar to ValidatingXmlWriter,
ensure that the structure of GrapML as defined in the spec/DTD is respected.
Check for the order of elements according to DTD.
Test reader-dot in-depth:
If the XmlWriterImpl receives start & end element with no other content in between,
it should emit a self-closing tag.
E.g. instead of
<node id="node1"></node>
it should generate
<node id="node1" />
Spec: https://users.cecs.anu.edu.au/~bdm/data/formats.txt
undirected graphs
ext: ".g6"
support: no loops, no multi-edges
undirected graphs
more space-efficient for large, sparse graphs
ext: ".s6"
support: loops, multi-edges
directed graphs
ext: ".d6"
Format is used, e.g., by "House of Graphs", a graph test data repository.
E.g. here https://houseofgraphs.org/meta-directory/nut
See also https://houseofgraphs.org/help#format_g6
Decide if JGraphT can be used (EPL 2.0, many dependencies)
Use
io.github.classgraph classgraph 4.8.154in reader-tgf test to read all .tgf resources in the test.
Me, trying to convince them to export GraphML:
hyperbard/hyperbard#8
1)
Download file from https://keybase.pub/mjdilworth/yed-aws-palettes/AWS%20-%20Developer%20Tools.graphml put in reader-graphml /test/resources as "AWS - Developer Tools.graphml".
Next add a "AWS - Developer Tools.graphml.meta" file with the single line "url-info=(the URL above)" in it.
Download the graphml files sing the download button ON the page, dont download the HTML PAGE :-)
https://en.wikipedia.org/wiki/DOT_(graph_description_language)
https://www.graphviz.org/doc/info/lang.html
https://en.wikipedia.org/wiki/Trivial_Graph_Format
Using JGraphT, in the reader-jgrapht project
Samples files:
https://userpages.uni-koblenz.de/~ist/GXL/examples/instance/gxl/simpleExample/content.html
https://github.com/Bioconductor/RBGL/tree/master/inst/XML
https://git.litislab.fr/bgauzere/py-graph/-/tree/0cc89ae026108889b986aba01e3f999d12d37a2b/datasets/monoterpenoides
https://gitlab.liris.cnrs.fr/aekiouche/kite-project/-/tree/a5310781f18e28c19ba98941226bd01228bea915/data/Kite_graphs_xml
Nested ports are not correctly writtein to graphml
GioWriter.data( GioData data )
stream-based, like the "inverse" of SAX
Test reader-tgf in depth:
for each .tgf sample file:
read once: file.tgf =reader-tgf (->gio->graphml)=> file.graphml
read again: file.graphml =reader-graphml (->(gio->graphml)=> file2.graphml
now file.graphml should be byte-identical to file2.graphml (no need to use real files, just in-memory byte-buffers)
download all files from https://dgit.cs.uni-saarland.de/Nikolai/cpraa/-/tree/master/AFs
and as sample files.
put them all in a directory /AFs within /test/resources.
add one file ".meta" file with the single line "url-info=https://dgit.cs.uni-saarland.de/Nikolai/cpraa/-/tree/master/AFs"
first iteration:
simply stream incoming content errors to a Logger.log and render them somewhat readable
(no stack, no file, no ..)
we can map our Level ERROR to ERROR, WARN to WARN
remember: all normal logging in the code happens in all normal levels as usual to Logger as well
no central messages
--Using AWS Lambda.-- -> Contabo or similar
Functionality:
GET /status
response: "OK"
POST /validate (upload file)
POST /read (upload file)
optional queryParam "inputType" with values "json", "tgf", "dot", "graphml"
we can auto-detect input type -> GioEngine
result is a zip file named "result.zip" which contains
-- result.graphml
-- log.txt
create a first swagger doc for the API
create initial impl with at least "GET /status"
add more functionality
Add test with e.g. 3 nodes and 2 edges (with and without label), verify that this goes into Gio-stream -> mock
Using JGraphT, in the reader-jgrapht project
Sample files:
https://gexf.net/data/hello-world.gexf
https://github.com/Man-UP/GroupMyContacts/blob/master/dataCrawlerBirthMonth.gefx
https://github.com/Man-UP/GroupMyContacts/blob/master/dataCrawlerBirthDay.gexf
https://github.com/gephi/gephi-toolkit-demos/tree/master/src/main/resources/org/gephi/toolkit/demos
no unused imports
all files auto-formatted
all interface types
"most interface methods documented, where not clear"
each major feature has a JUnit test (each reader-read, reader find validation error)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.