diff --git a/.DS_Store b/.DS_Store index b5e3024..dc7d939 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/css/app.243599e3.css b/css/app.243599e3.css new file mode 100644 index 0000000..eebe400 --- /dev/null +++ b/css/app.243599e3.css @@ -0,0 +1 @@ +.landing-page[data-v-64799410]{max-width:800px;margin:0 auto}.gallery[data-v-64799410]{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));grid-gap:20px}.gallery-item img[data-v-64799410]{max-width:100%;height:auto}#colors-graph[data-v-32acb1d8],#trees-graph[data-v-4721e071]{width:100%;height:100vh} \ No newline at end of file diff --git a/css/app.a1ee4f31.css b/css/app.a1ee4f31.css deleted file mode 100644 index ef7413d..0000000 --- a/css/app.a1ee4f31.css +++ /dev/null @@ -1 +0,0 @@ -.landing-page[data-v-03caad2c]{max-width:800px;margin:0 auto}.gallery[data-v-03caad2c]{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));grid-gap:20px}.gallery-item img[data-v-03caad2c]{max-width:100%;height:auto}#colors-graph[data-v-32acb1d8],#trees-graph[data-v-4721e071]{width:100%;height:100vh} \ No newline at end of file diff --git a/img/code.746f4ea3.png b/img/code.746f4ea3.png new file mode 100644 index 0000000..ab19e56 Binary files /dev/null and b/img/code.746f4ea3.png differ diff --git a/index.html b/index.html index 50315c3..3ddf47d 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -
Our motto represents our vision of programming: taking a graph-centric approach to programming itself - to visualize the program as a graph and ultimately to modify a graph to modify a program.
\n{{ graph.headline }}
\t\t\t\n{{ graph.description }}
\t\t\nMore to come soon. Email me at michaelbauer.com for more information.
\n \nOur motto represents our vision of programming: taking a graph-centric approach to programming itself - to visualize the program as a graph and ultimately to modify a graph to modify a program.
\n\tGraphs come from many sources and are manifested in many forms. While we contend code is itself a graph, in terms of data, the most common source by far are spreadsheets. Manifesting spreadsheets as graphs include the pure visualization, our favorite being 3D, and the operational, our preferred choice unquestionably being the Labeled Property Graph from Neo4j.
\n{{ graph.headline }}
\t\t\t\n{{ graph.description }}
\t\t\nBoth the 3D view and the Cypher code were generated from our RadialNEXUS manifest script. The script takes a data spreadsheet and a mapping spreadsheet. The data spreadsheet has rows and columns for representing the data in a domain. The mapping spreadsheet maps the columns in the data spreadsheet to the nodes and attributes in the graph representation along with the edges between those nodes. We're in the process of packaging the code further but like to gauge interest first. Please email me at michaelbauer.com if you'd like to learn more.
\n \n\n\n# Loading Nodes from ../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\nquery = '''\nLOAD CSV WITH HEADERS FROM \"file:///../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\" AS row\n\tWITH row\n\tWHERE row.id IS NOT NULL\n\tMERGE (tree:Tree {id:toString(row.id)})\n\t\tSET tree.name = row.common_name\n\t\tSET tree.height = row.height\n\t\tSET tree.diameter = row.diameter\n\t\tSET tree.circumference = row.circumference\n\t\tSET tree.description = row.information\n\n'''\ngraph.run(query)\n\n# Loading Nodes from ../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\nquery = '''\nLOAD CSV WITH HEADERS FROM \"file:///../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\" AS row\n\tWITH row\n\tWHERE row.species_code IS NOT NULL\n\tMERGE (species:Species {id:toString(row.species_code)})\n\t\tSET species.name = row.scientific_name\n\n'''\ngraph.run(query)\n\n# Loading Nodes from ../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\nquery = '''\nLOAD CSV WITH HEADERS FROM \"file:///../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\" AS row\n\tWITH row\n\tWHERE row.name IS NOT NULL\n\tMERGE (location:Location {id:toString(row.name)})\n\t\tSET location.name = row.location\n\t\tSET location.latitude = row.latitude\n\t\tSET location.longitude = row.longitude\n\n'''\ngraph.run(query)\n\n# Loading Nodes from ../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\nquery = '''\nLOAD CSV WITH HEADERS FROM \"file:///../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\" AS row\n\tWITH row\n\tWHERE row.island_abbv IS NOT NULL\n\tMERGE (island:Island {id:toString(row.island_abbv)})\n\t\tSET island.name = row.island_name\n\n'''\ngraph.run(query)\n\n# Loading Relationships from ../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\nquery = '''\nLOAD CSV WITH HEADERS FROM \"file:///../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\" AS row\n\tMATCH (source:Tree {id: toString(row.id)}), (target:Location {id: toString(row.name)})\n\t\tMERGE(source)-[edge:IN_A]->(target)\n'''\ngraph.run(query)\n\n# Loading Relationships from ../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\nquery = '''\nLOAD CSV WITH HEADERS FROM \"file:///../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\" AS row\n\tMATCH (source:Tree {id: toString(row.id)}), (target:Species {id: toString(row.species_code)})\n\t\tMERGE(source)-[edge:IS_A]->(target)\n'''\ngraph.run(query)\n\n# Loading Relationships from ../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\nquery = '''\nLOAD CSV WITH HEADERS FROM \"file:///../domain/trees/csv/data/Exceptional_Trees_On_Oahu.csv\" AS row\n\tMATCH (source:Location {id: toString(row.name)}), (target:Island {id: toString(row.island_abbv)})\n\t\tMERGE(source)-[edge:ON_A]->(target)\n'''\ngraph.run(query)\n\n\t
\n