Skip to content

Instantly share code, notes, and snippets.

@andrewsalveson
Forked from aidancasey/AWS Graph Gist.adoc
Last active October 26, 2015 19:10
Show Gist options
  • Save andrewsalveson/86c67f74537027f78bc4 to your computer and use it in GitHub Desktop.
Save andrewsalveson/86c67f74537027f78bc4 to your computer and use it in GitHub Desktop.
SoftwareInfrastructure

Software Infrastructure graph

feedback to andrewsalveson@gmail.com | @andrewsalveson

Setup

CREATE (software_windows:Software{name:'Windows'})
CREATE (software_linux:Software{name:'Linux'})
CREATE (software_macos:Software{name:'Mac OS'})

CREATE (software_fme:Software{name:'FME Desktop'})
CREATE (software_client_newforma:Software{name:'Newforma Client'})
CREATE (software_revit:Software{name:'Revit'})
CREATE (software_outlook:Software{name:'Outlook'})
CREATE (software_arcgis:Software{name:'ArcGIS'})
CREATE (software_excel:Software{name:'Microsoft Excel'})

CREATE (software_sketchup:Software{name:'SketchUp'})
CREATE (software_rhino:Software{name:'Rhinoceros'})
CREATE (software_grasshopper:Software{name:'Grasshopper'})
CREATE (software_dynamo:Software{name:'Dynamo'})
CREATE (software_revit_newforma:Software{name:'Newforma Revit Addin'})
CREATE (software_revit_rtv:Software{name:'RTV Revit Addin'})
CREATE (software_revit_fme:Software{name:'FME Revit Addin'})
CREATE (software_outlook_newforma:Software{name:'Newforma Outlook Addin'})

CREATE (software_server_fme:Software{name:'FME Server'})
CREATE (software_server_newforma:Software{name:'Newforma Server'})
CREATE (software_server_geoserver:Software{name:'GeoServer'})

CREATE (software_windows_task_scheduler:Software{name:"Windows Task Scheduler"})
CREATE (software_windows_task_scheduler)-[:RUNS_IN]->(software_windows)

CREATE (software_excel)-[:RUNS_IN]->(software_windows)
CREATE (software_sketchup)-[:RUNS_IN]->(software_windows)
CREATE (software_sketchup)-[:RUNS_IN]->(software_macos)
CREATE (software_rhino)-[:RUNS_IN]->(software_windows)
CREATE (software_grasshopper)-[:RUNS_IN]->(software_rhino)
CREATE (software_fme)-[:RUNS_IN]->(software_windows)
CREATE (software_client_newforma)-[:RUNS_IN]->(software_windows)
CREATE (software_revit)-[:RUNS_IN]->(software_windows)
CREATE (software_dynamo)-[:RUNS_IN]->(software_windows)
CREATE (software_outlook)-[:RUNS_IN]->(software_windows)
CREATE (software_arcgis)-[:RUNS_IN]->(software_arcgis)
CREATE (software_revit_newforma)-[:RUNS_IN]->(software_revit)
CREATE (software_revit_rtv)-[:RUNS_IN]->(software_revit)
CREATE (software_revit_fme)-[:RUNS_IN]->(software_revit)
CREATE (software_outlook_newforma)-[:RUNS_IN]->(software_outlook)
create (software_server_fme)-[:RUNS_IN]->(software_windows)
create (software_server_newforma)-[:RUNS_IN]->(software_windows)
CREATE (software_server_geoserver)-[:RUNS_IN]->(software_windows)
CREATE (software_server_geoserver)-[:RUNS_IN]->(software_linux)
CREATE (software_server_geoserver)-[:RUNS_IN]->(software_macos)

CREATE (filetype_csv:Filetype{name:'Comma Separated Values',extension:'CSV'})
CREATE (filetype_xls:Filetype{name:'Excel Document',extension:'xls'})
CREATE (filetype_3dm:Filetype{name:'Rhinoceros model',extension:'3dm'})
CREATE (filetype_skp:Filetype{name:'SketchUp Model',extension:'skp'})
CREATE (filetype_dwg:Filetype{name:'AutoCAD Drawing', extension: 'dwg'})
CREATE (filetype_pdf:Filetype{name:'Portable Document Format', extension: 'pdf'})
CREATE (filetype_rvt:Filetype{name:'Revit Project', extension: 'rvt'})
CREATE (filetype_rvz:Filetype{name:'Aveva Review Model', extension: 'rvz'})
CREATE (filetype_shap:Filetype{name:'Shapefile',extension: 'shap'})
CREATE (filetype_ifc:Filetype{name:'IFC',extension:'ifc'})

CREATE (software_excel)-[:WRITES{three_d:false,projection:false,geolocation:false}]->(filetype_xls)
CREATE (software_excel)-[:WRITES{three_d:false,projection:false,geolocation:false}]->(filetype_csv)
CREATE (software_excel)-[:READS{three_d:false,projection:false,geolocation:false}]->(filetype_xls)
CREATE (software_excel)-[:READS{three_d:false,projection:false,geolocation:false}]->(filetype_csv)
CREATE (software_sketchup)-[:WRITES{three_d:true,projection:false,geolocation:true}]->(filetype_skp)
CREATE (software_sketchup)-[:READS{three_d:true,projection:false,geolocation:true}]->(filetype_skp)
CREATE (software_sketchup)-[:READS{three_d:true,projection:false,geolocation:false}]->(filetype_dwg)
CREATE (software_grasshopper)-[:READS]->(filetype_csv)
CREATE (software_grasshopper)-[:READS]->(filetype_xls)
CREATE (software_grasshopper)-[:WRITES]->(filetype_csv)
CREATE (software_grasshopper)-[:WRITES]->(filetype_xls)
CREATE (software_dynamo)-[:READS]->(filetype_csv)
CREATE (software_dynamo)-[:READS]->(filetype_xls)
CREATE (software_dynamo)-[:WRITES]->(filetype_csv)
CREATE (software_dynamo)-[:WRITES]->(filetype_xls)
CREATE (software_rhino)-[:READS{three_d:true,projection:false,geolocation:false}]->(filetype_dwg)
CREATE (software_rhino)-[:WRITES{three_d:true,projection:false,geolocation:false}]->(filetype_dwg)
CREATE (software_rhino)-[:WRITES{three_d:true,projection:false,geolocation:false}]->(filetype_3dm)
CREATE (software_rhino)-[:READS{three_d:true,projection:false,geolocation:false}]->(filetype_3dm)
CREATE (software_rhino)-[:READS{three_d:true,projection:false,geolocation:false}]->(filetype_skp)
CREATE (software_fme)-[:READS{three_d:true,projection:true,geolocation:true}]->(filetype_dwg)
CREATE (software_fme)-[:READS{three_d:true,projection:false,geolocation:true}]->(filetype_rvz)
CREATE (software_fme)-[:READS{three_d:false,projection:true,geolocation:true}]->(filetype_pdf)
CREATE (software_fme)-[:READS{three_d:false,projection:true,geolocation:true}]->(filetype_shap)
CREATE (software_fme)-[:WRITES{three_d:true,projection:true,geolocation:true}]->(filetype_dwg)
CREATE (software_fme)-[:WRITES{three_d:false,projection:true,geolocation:true}]->(filetype_pdf)
CREATE (software_fme)-[:WRITES{three_d:false,projection:true,geolocation:true}]->(filetype_shap)
CREATE (software_fme)-[:WRITES{three_d:true,projection:false,geolocation:true}]->(filetype_rvz)
CREATE (software_arcgis)-[:READS{three_d:false,projection:true,geolocation:true}]->(filetype_dwg)
CREATE (software_arcgis)-[:READS{three_d:false,projection:true,geolocation:true}]->(filetype_shap)
CREATE (software_arcgis)-[:WRITES{three_d:false,projection:true,geolocation:true}]->(filetype_dwg)
CREATE (software_arcgis)-[:WRITES{three_d:false,projection:true,geolocation:true}]->(filetype_shap)
CREATE (software_sketchup)-[:READS{three_d:true,projection:false,geolocation:true}]->(filetype_skp)
CREATE (software_sketchup)-[:WRITES{three_d:true,projection:false,geolocation:true}]->(filetype_skp)
CREATE (software_revit_rtv)-[:READS{three_d:true,projection:false,geolocation:true}]->(filetype_rvt)
CREATE (software_revit_rtv)-[:WRITES{three_d:true,projection:false,geolocation:true}]->(filetype_rvz)
CREATE (software_revit)-[:READS{three_d:true,projection:false,geolocation:false}]->(filetype_skp)
CREATE (software_revit)-[:READS{three_d:true,projection:false,geolocation:true}]->(filetype_rvt)
CREATE (software_revit)-[:READS{three_d:true,projection:false,geolocation:true}]->(filetype_ifc)
CREATE (software_revit)-[:WRITES{three_d:true,projection:false,geolocation:true}]->(filetype_rvt)
CREATE (software_revit)-[:WRITES{three_d:false,projection:false,geolocation:false}]->(filetype_pdf)
CREATE (software_revit)-[:WRITES{three_d:true,projection:false,geolocation:true}]->(filetype_ifc)
CREATE (software_revit)-[:WRITES{three_d:false,projection:false,geolocation:false}]->(filetype_csv)
CREATE (software_revit_fme)-[:WRITES{three_d:true,projection:false,geolocation:true}]->(filetype_rvz)
CREATE (software_revit_rtv)-[:WRITES{three_d:false,projection:false,geolocation:false}]->(filetype_pdf)
CREATE (software_revit_rtv)-[:WRITES{three_d:true,projection:false,geolocation:false}]->(filetype_rvz)
CREATE (software_dynamo)-[:CONNECTS_TO{three_d:true}]->(software_revit)
CREATE (software_revit_newforma)-[:CONNECTS_TO{tabular:true}]->(software_server_newforma)
CREATE (software_outlook_newforma)-[:CONNECTS_TO{email:true}]->(software_server_newforma)
CREATE (software_client_newforma)-[:CONNECTS_TO{three_d:false,projection:false,geolocation:false}]->(software_server_newforma)
CREATE (software_server_geoserver)-[:READS{three_d:false,projection:true,geolocation:true}]->(filetype_shap)



CREATE (windows_task_rtv:WindowsTask{name:'Windows Task: RTV Automation'})

CREATE (windows_task_rtv)-[:RUNS_IN]->(software_windows_task_scheduler)
CREATE (windows_task_rtv)-[:AUTOMATES]->(software_revit_rtv)
CREATE (software_server_fme)-[:AUTOMATES]->(software_fme)
CREATE (software_dynamo)-[:AUTOMATES]->(software_revit)
CREATE (software_grasshopper)-[:AUTOMATES]->(software_rhino)

The Graph

Some Use Cases…​

What software can write an .rvz file?

MATCH (software)-[:WRITES]->(Filetype{extension:'rvz'})
RETURN distinct software.name as software_name
ORDER BY software_name;

What Windows-based process can automate writing an .rvz file?

MATCH (Software{name:'Windows'})<-[:RUNS_IN*]-(process)-[:AUTOMATES]->(writer)-[:WRITES]->(Filetype{extension:'rvz'})
RETURN distinct process.name as process_name
ORDER BY process_name;

What 3D filetypes can we get from a SketchUp file?

MATCH p=(Filetype { extension:'skp' })-[:AUTOMATES|WRITES|READS*..4]-(n:Filetype)
WHERE ALL (r IN relationships(p)
           WHERE r.three_d = TRUE )
RETURN DISTINCT n.name AS `names`;

What process can write a .shap file from an .rvt file, preserving geolocation?

MATCH
	(writer)-[:WRITES]->(shapefile:Filetype{extension:'shap'}),
	(reader)-[:READS{geolocation:true}]->(Filetype{extension:'rvt'}),
	p = allShortestPaths((writer)-[:AUTOMATES|WRITES|READS*]-(reader))
WHERE all(r IN relationships(p) WHERE r.geolocation = true)
RETURN DISTINCT extract(n IN nodes(p)| coalesce(n.name)) AS `names`, length(p)
ORDER BY length(p)
LIMIT 10;

Created by Andrew Salveson

twitter: @ANDREWSALVESON

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment