Schema Diagram and Graph Statistics
Node Statistics
| Node Label | Count |
|---|---|
| Accident | 115,142 |
| Vehicle | 182,055 |
| Person | 280,093 |
| Event | 329,040 |
| VPICDecode | 173,667 |
| Trailer | 4,742 |
| DrugEvent | 349,255 |
| Weather | 13 |
| CrashRF | 29 |
| Damage | 16 |
| Distract | 22 |
| DrImpair | 15 |
| DriverRF | 67 |
| Factor | 20 |
| Maneuver | 10 |
| VehicleSF | 13 |
| Violatn | 76 |
| Vision | 19 |
| Race | 20 |
| PersonRF | 44 |
| NMCrash | 24 |
| NMDistract | 18 |
| NMImpair | 14 |
| NMPrior | 15 |
| DrugTest | 12 |
| Drug | 422 |
Edge Statistics
| Relationship | Count |
|---|---|
| (:Accident)-[:INVOLVES]->(:Vehicle) | 182,055 |
| (:Accident)-[:HAS_VICTIM]->(:Person) | 280,093 |
| (:Accident)-[:RESULTED_IN]->(:Event) | 329,040 |
| (:Vehicle)-[:HAS_OCCUPANT]->(:Person) | 252,980 |
| (:Vehicle)-[:SUBJECT_OF]->(:Event) | 329,040 |
| (:Vehicle)-[:OBJECT_OF]->(:Event) | 66,079 |
| (:Vehicle)-[:HAS_VEVENT]->(:Event) | 395,119 |
| (:Vehicle)-[:HAS_VPIC]->(:VPICDecode) | 173,667 |
| (:Vehicle)-[:HAS_TRAILER]->(:Trailer) | 4,742 |
| (:DrugEvent)-[:DRUG_EVENT_OF]->(:Person) | 349,255 |
| (:DrugTest)-[:DRUG_TEST_OF]->(:DrugEvent) | 349,255 |
| (:Drug)-[:RESULT_OF]->(:DrugEvent) | 349,255 |
| (:Accident)-[:OCCURRED_IN]->(:Weather) | 116,337 |
| (:CrashRF)-[:CRASH_FACTOR_OF]->(:Accident) | 116,019 |
| (:Damage)-[:POSITION_OF]->(:Vehicle) | 761,383 |
| (:Distract)-[:DISTRACTION_OF]->(:Vehicle) | 177,181 |
| (:DrImpair)-[:IMPAIRMENT_OF]->(:Vehicle) | 177,703 |
| (:DriverRF)-[:DRIVER_RF_OF]->(:Vehicle) | 195,590 |
| (:Factor)-[:FACTOR_OF]->(:Vehicle) | 177,351 |
| (:Maneuver)-[:MANEUVER_OF]->(:Vehicle) | 177,145 |
| (:VehicleSF)-[:VEHICLE_SF_OF]->(:Vehicle) | 182,057 |
| (:Violatn)-[:COMMITTED_BY]->(:Vehicle) | 190,012 |
| (:Vision)-[:VISION_OF]->(:Vehicle) | 177,246 |
| (:Race)-[:RACE_OF]->(:Person) | 280,633 |
| (:PersonRF)-[:PERSON_RF_OF]->(:Person) | 280,134 |
| (:NMCrash)-[:NMCRASH_OF]->(:Person) | 37,908 |
| (:NMDistract)-[:NMDISTRACT_OF]->(:Person) | 27,125 |
| (:NMImpair)-[:NMIMPAIR_OF]->(:Person) | 27,182 |
| (:NMPrior)-[:NMPRIOR_OF]->(:Person) | 28,191 |
Disk space: 1.88 GiB (store files, excluding transaction logs)
Total import time: 357.71 Seconds (constraints 5.62 s + nodes and relationships 352.08 s)
Data Loading
Select a button below to jump to the code for that step. The time next to each heading is the measured wall-clock time of that statement.
Overview
This workload covers only the 2020–2022 FARS releases, whose table layouts are nearly identical, unlike the full 1975–2022 import. All 33 tables of the three years are first cleaned into one tab-separated file per node label and one per (source label, relationship, target label) triple: 26 node files and 29 relationship files, 1.2 GB in total. The same files are loaded into tigergraph and uploaded to hdfs, so every platform holds exactly the same graph.
The cleaning is the only Python step. Loading itself uses only Cypher: no data passes through Python.
Data Preparation (Python)
build_csv.py reads <year>/National/*.csv for 2020–2022 and applies the
following rules:
- Encoding: each source file is decoded as UTF-8, falling back to cp1252 (both occur). Output is UTF-8 with
LF line endings. Non-breaking spaces become spaces,
\x1aand en/em dashes become-, curly quotes become straight quotes, and tabs and newlines inside values become spaces. - Columns: names are upper-cased (2020
vpicdecodeis camel-cased) and the three years are merged by column union; a column missing in a year is left empty.ORDERandTRIMare renamed toRACE_ORDERandTRIM1because they are GSQL keywords. - Keys:
accident_id = <year>_<ST_CASE>,vehicle_id = <accident_id>_<VEH_NO>,person_id = <vehicle_id>_<PER_NO>,event_id = <accident_id>_<EVENTNUM>. Keys are unique within a label. - Parked and working vehicles (
parkwork) are merged intoVehicle: theirP-prefixed columns are mapped to the matchingvehiclecolumns (for examplePMAKE→MAKE,PVEH_SEV→DEFORMED; all 113 map), andsource_tablerecordsvehicleorparkwork. Both tables share theVEH_NOnumbering and never overlap;pvehiclesfis merged intovehiclesfthe same way. - 1:1 tables are folded into their parent node;
vsoeis fully derivable fromvevent(checked row by row) and is stored as theAOIproperty ofHAS_VEVENT. - Code nodes
{id, name}are built from each table's code/NAME column pair; if a code's wording differs between years, the 2022 wording is used. - Types are inferred per column: INT if every value is an integer without leading zeros, DOUBLE if numeric with decimals, otherwise STRING (VINs, for example).
- Integrity: every relationship file is checked for missing endpoints and duplicate (source, target) pairs. None were found.
- Format: tab-separated with no quoting. Many values contain a literal
"(inch marks such as126" Day cab), and the TigerGraph loader does not accept the CSV""escape. Tabs never occur in the cleaned values, and Neo4j only treats"as a quote at the start of a field. The single value that started with"was rewritten with single quotes.
The script also writes schema.json (columns, inferred types, row counts),
expected-counts.tsv (used to verify each platform after loading), and the Cypher and GSQL shown on this
page, so the property lists always match the files. It runs in about six minutes. The full script,
build_csv.py, is available on the Download page.
Create Database
The CSV directory sits under the Neo4j import directory (server.directories.import=/datasets/prop_datasets),
so files are read as file:///fars/fars20-22/csv/.... A dedicated database keeps this graph separate from the
full-history fars database. Run against the system database:
CREATE DATABASE `fars20-22` WAIT;
Every statement below runs against fars20-22 through cypher-shell -d fars20-22. All
loading statements use LOAD CSV ... FIELDTERMINATOR '\t' with CALL { ... } IN TRANSACTIONS OF
10000 ROWS. An empty field is null in LOAD CSV, so missing values are simply not
stored as properties.
Constraints and Indexes (5.622s)
One uniqueness constraint per label (which also backs the MATCH lookups used to create relationships)
and a few secondary indexes on foreign keys and the data year.
CREATE CONSTRAINT accident_accident_id IF NOT EXISTS FOR (n:Accident) REQUIRE n.accident_id IS UNIQUE; CREATE CONSTRAINT vehicle_vehicle_id IF NOT EXISTS FOR (n:Vehicle) REQUIRE n.vehicle_id IS UNIQUE; CREATE CONSTRAINT person_person_id IF NOT EXISTS FOR (n:Person) REQUIRE n.person_id IS UNIQUE; CREATE CONSTRAINT event_event_id IF NOT EXISTS FOR (n:Event) REQUIRE n.event_id IS UNIQUE; CREATE CONSTRAINT vpicdecode_vpic_id IF NOT EXISTS FOR (n:VPICDecode) REQUIRE n.vpic_id IS UNIQUE; CREATE CONSTRAINT trailer_trailer_id IF NOT EXISTS FOR (n:Trailer) REQUIRE n.trailer_id IS UNIQUE; CREATE CONSTRAINT drugevent_drug_event_id IF NOT EXISTS FOR (n:DrugEvent) REQUIRE n.drug_event_id IS UNIQUE; CREATE CONSTRAINT weather_id IF NOT EXISTS FOR (n:Weather) REQUIRE n.id IS UNIQUE; CREATE CONSTRAINT crashrf_id IF NOT EXISTS FOR (n:CrashRF) REQUIRE n.id IS UNIQUE; CREATE CONSTRAINT damage_id IF NOT EXISTS FOR (n:Damage) REQUIRE n.id IS UNIQUE; CREATE CONSTRAINT distract_id IF NOT EXISTS FOR (n:Distract) REQUIRE n.id IS UNIQUE; CREATE CONSTRAINT drimpair_id IF NOT EXISTS FOR (n:DrImpair) REQUIRE n.id IS UNIQUE; CREATE CONSTRAINT driverrf_id IF NOT EXISTS FOR (n:DriverRF) REQUIRE n.id IS UNIQUE; CREATE CONSTRAINT factor_id IF NOT EXISTS FOR (n:Factor) REQUIRE n.id IS UNIQUE; CREATE CONSTRAINT maneuver_id IF NOT EXISTS FOR (n:Maneuver) REQUIRE n.id IS UNIQUE; CREATE CONSTRAINT vehiclesf_id IF NOT EXISTS FOR (n:VehicleSF) REQUIRE n.id IS UNIQUE; CREATE CONSTRAINT violatn_id IF NOT EXISTS FOR (n:Violatn) REQUIRE n.id IS UNIQUE; CREATE CONSTRAINT vision_id IF NOT EXISTS FOR (n:Vision) REQUIRE n.id IS UNIQUE; CREATE CONSTRAINT race_id IF NOT EXISTS FOR (n:Race) REQUIRE n.id IS UNIQUE; CREATE CONSTRAINT personrf_id IF NOT EXISTS FOR (n:PersonRF) REQUIRE n.id IS UNIQUE; CREATE CONSTRAINT nmcrash_id IF NOT EXISTS FOR (n:NMCrash) REQUIRE n.id IS UNIQUE; CREATE CONSTRAINT nmdistract_id IF NOT EXISTS FOR (n:NMDistract) REQUIRE n.id IS UNIQUE; CREATE CONSTRAINT nmimpair_id IF NOT EXISTS FOR (n:NMImpair) REQUIRE n.id IS UNIQUE; CREATE CONSTRAINT nmprior_id IF NOT EXISTS FOR (n:NMPrior) REQUIRE n.id IS UNIQUE; CREATE CONSTRAINT drugtest_id IF NOT EXISTS FOR (n:DrugTest) REQUIRE n.id IS UNIQUE; CREATE CONSTRAINT drug_id IF NOT EXISTS FOR (n:Drug) REQUIRE n.id IS UNIQUE; CREATE INDEX vehicle_accident_id IF NOT EXISTS FOR (n:Vehicle) ON (n.accident_id); CREATE INDEX vehicle_source_table IF NOT EXISTS FOR (n:Vehicle) ON (n.source_table); CREATE INDEX person_accident_id IF NOT EXISTS FOR (n:Person) ON (n.accident_id); CREATE INDEX person_vehicle_id IF NOT EXISTS FOR (n:Person) ON (n.vehicle_id); CREATE INDEX event_accident_id IF NOT EXISTS FOR (n:Event) ON (n.accident_id); CREATE INDEX accident_data_year IF NOT EXISTS FOR (n:Accident) ON (n.DATA_YEAR); CALL db.awaitIndexes(600);
Core Entities
Nodes are created before any relationship. Each statement is self-contained; the property list and types come from schema.json.
Accident Nodes (18.429s)
One node per crash from accident.csv. The 1:1 multiple-imputation tables miacc and midrvacc are folded in as MIACC_A1..A10 and MIDRVACC_A1..A10. 115,142 rows, 103 properties.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/Accident.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:Accident {
accident_id: row.accident_id,
DATA_YEAR: toInteger(row.DATA_YEAR),
STATE: toInteger(row.STATE),
STATENAME: row.STATENAME,
ST_CASE: toInteger(row.ST_CASE),
VE_TOTAL: toInteger(row.VE_TOTAL),
VE_FORMS: toInteger(row.VE_FORMS),
PVH_INVL: toInteger(row.PVH_INVL),
PEDS: toInteger(row.PEDS),
PERNOTMVIT: toInteger(row.PERNOTMVIT),
PERMVIT: toInteger(row.PERMVIT),
PERSONS: toInteger(row.PERSONS),
COUNTY: toInteger(row.COUNTY),
COUNTYNAME: row.COUNTYNAME,
CITY: toInteger(row.CITY),
CITYNAME: row.CITYNAME,
DAY: toInteger(row.DAY),
DAYNAME: toInteger(row.DAYNAME),
MONTH: toInteger(row.MONTH),
MONTHNAME: row.MONTHNAME,
YEAR: toInteger(row.YEAR),
DAY_WEEK: toInteger(row.DAY_WEEK),
DAY_WEEKNAME: row.DAY_WEEKNAME,
HOUR: toInteger(row.HOUR),
HOURNAME: row.HOURNAME,
MINUTE: toInteger(row.MINUTE),
MINUTENAME: row.MINUTENAME,
NHS: toInteger(row.NHS),
NHSNAME: row.NHSNAME,
ROUTE: toInteger(row.ROUTE),
ROUTENAME: row.ROUTENAME,
TWAY_ID: row.TWAY_ID,
TWAY_ID2: row.TWAY_ID2,
RUR_URB: toInteger(row.RUR_URB),
RUR_URBNAME: row.RUR_URBNAME,
FUNC_SYS: toInteger(row.FUNC_SYS),
FUNC_SYSNAME: row.FUNC_SYSNAME,
RD_OWNER: toInteger(row.RD_OWNER),
RD_OWNERNAME: row.RD_OWNERNAME,
MILEPT: toInteger(row.MILEPT),
MILEPTNAME: row.MILEPTNAME,
LATITUDE: toFloat(row.LATITUDE),
LATITUDENAME: toFloat(row.LATITUDENAME),
LONGITUD: toFloat(row.LONGITUD),
LONGITUDNAME: toFloat(row.LONGITUDNAME),
SP_JUR: toInteger(row.SP_JUR),
SP_JURNAME: row.SP_JURNAME,
HARM_EV: toInteger(row.HARM_EV),
HARM_EVNAME: row.HARM_EVNAME,
MAN_COLL: toInteger(row.MAN_COLL),
MAN_COLLNAME: row.MAN_COLLNAME,
RELJCT1: toInteger(row.RELJCT1),
RELJCT1NAME: row.RELJCT1NAME,
RELJCT2: toInteger(row.RELJCT2),
RELJCT2NAME: row.RELJCT2NAME,
TYP_INT: toInteger(row.TYP_INT),
TYP_INTNAME: row.TYP_INTNAME,
WRK_ZONE: toInteger(row.WRK_ZONE),
WRK_ZONENAME: row.WRK_ZONENAME,
REL_ROAD: toInteger(row.REL_ROAD),
REL_ROADNAME: row.REL_ROADNAME,
LGT_COND: toInteger(row.LGT_COND),
LGT_CONDNAME: row.LGT_CONDNAME,
WEATHER: toInteger(row.WEATHER),
WEATHERNAME: row.WEATHERNAME,
SCH_BUS: toInteger(row.SCH_BUS),
SCH_BUSNAME: row.SCH_BUSNAME,
RAIL: row.RAIL,
RAILNAME: row.RAILNAME,
NOT_HOUR: toInteger(row.NOT_HOUR),
NOT_HOURNAME: row.NOT_HOURNAME,
NOT_MIN: toInteger(row.NOT_MIN),
NOT_MINNAME: row.NOT_MINNAME,
ARR_HOUR: toInteger(row.ARR_HOUR),
ARR_HOURNAME: row.ARR_HOURNAME,
ARR_MIN: toInteger(row.ARR_MIN),
ARR_MINNAME: row.ARR_MINNAME,
HOSP_HR: toInteger(row.HOSP_HR),
HOSP_HRNAME: row.HOSP_HRNAME,
HOSP_MN: toInteger(row.HOSP_MN),
HOSP_MNNAME: row.HOSP_MNNAME,
FATALS: toInteger(row.FATALS),
DRUNK_DR: toInteger(row.DRUNK_DR),
MIACC_A1: toInteger(row.MIACC_A1),
MIACC_A2: toInteger(row.MIACC_A2),
MIACC_A3: toInteger(row.MIACC_A3),
MIACC_A4: toInteger(row.MIACC_A4),
MIACC_A5: toInteger(row.MIACC_A5),
MIACC_A6: toInteger(row.MIACC_A6),
MIACC_A7: toInteger(row.MIACC_A7),
MIACC_A8: toInteger(row.MIACC_A8),
MIACC_A9: toInteger(row.MIACC_A9),
MIACC_A10: toInteger(row.MIACC_A10),
MIDRVACC_A1: toInteger(row.MIDRVACC_A1),
MIDRVACC_A2: toInteger(row.MIDRVACC_A2),
MIDRVACC_A3: toInteger(row.MIDRVACC_A3),
MIDRVACC_A4: toInteger(row.MIDRVACC_A4),
MIDRVACC_A5: toInteger(row.MIDRVACC_A5),
MIDRVACC_A6: toInteger(row.MIDRVACC_A6),
MIDRVACC_A7: toInteger(row.MIDRVACC_A7),
MIDRVACC_A8: toInteger(row.MIDRVACC_A8),
MIDRVACC_A9: toInteger(row.MIDRVACC_A9),
MIDRVACC_A10: toInteger(row.MIDRVACC_A10)
})
} IN TRANSACTIONS OF 10000 ROWS;
Vehicle Nodes (35.390s)
In-transport vehicles from vehicle.csv plus parked and working vehicles from parkwork.csv (column names mapped to the vehicle ones; source_table tells them apart). UNDERIDE (2020) and UNDEROVERRIDE (2021+) are kept as two properties because their codings differ. 182,055 rows, 207 properties.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/Vehicle.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:Vehicle {
vehicle_id: row.vehicle_id,
accident_id: row.accident_id,
source_table: row.source_table,
DATA_YEAR: toInteger(row.DATA_YEAR),
STATE: toInteger(row.STATE),
STATENAME: row.STATENAME,
ST_CASE: toInteger(row.ST_CASE),
VEH_NO: toInteger(row.VEH_NO),
VE_FORMS: toInteger(row.VE_FORMS),
NUMOCCS: toInteger(row.NUMOCCS),
NUMOCCSNAME: row.NUMOCCSNAME,
DAY: toInteger(row.DAY),
DAYNAME: toInteger(row.DAYNAME),
MONTH: toInteger(row.MONTH),
MONTHNAME: row.MONTHNAME,
HOUR: toInteger(row.HOUR),
HOURNAME: row.HOURNAME,
MINUTE: toInteger(row.MINUTE),
MINUTENAME: row.MINUTENAME,
HARM_EV: toInteger(row.HARM_EV),
HARM_EVNAME: row.HARM_EVNAME,
MAN_COLL: toInteger(row.MAN_COLL),
MAN_COLLNAME: row.MAN_COLLNAME,
UNITTYPE: toInteger(row.UNITTYPE),
UNITTYPENAME: row.UNITTYPENAME,
HIT_RUN: toInteger(row.HIT_RUN),
HIT_RUNNAME: row.HIT_RUNNAME,
REG_STAT: toInteger(row.REG_STAT),
REG_STATNAME: row.REG_STATNAME,
OWNER: toInteger(row.OWNER),
OWNERNAME: row.OWNERNAME,
MAKE: toInteger(row.MAKE),
MAKENAME: row.MAKENAME,
MODEL: toInteger(row.MODEL),
MAK_MOD: toInteger(row.MAK_MOD),
MAK_MODNAME: row.MAK_MODNAME,
BODY_TYP: toInteger(row.BODY_TYP),
BODY_TYPNAME: row.BODY_TYPNAME,
MOD_YEAR: toInteger(row.MOD_YEAR),
MOD_YEARNAME: row.MOD_YEARNAME,
VIN: row.VIN,
VINNAME: row.VINNAME,
VIN_1: row.VIN_1,
VIN_2: row.VIN_2,
VIN_3: row.VIN_3,
VIN_4: row.VIN_4,
VIN_5: row.VIN_5,
VIN_6: row.VIN_6,
VIN_7: row.VIN_7,
VIN_8: row.VIN_8,
VIN_9: row.VIN_9,
VIN_10: row.VIN_10,
VIN_11: row.VIN_11,
VIN_12: row.VIN_12,
TOW_VEH: toInteger(row.TOW_VEH),
TOW_VEHNAME: row.TOW_VEHNAME,
J_KNIFE: toInteger(row.J_KNIFE),
J_KNIFENAME: row.J_KNIFENAME,
MCARR_I1: toInteger(row.MCARR_I1),
MCARR_I1NAME: row.MCARR_I1NAME,
MCARR_I2: row.MCARR_I2,
MCARR_I2NAME: row.MCARR_I2NAME,
MCARR_ID: row.MCARR_ID,
MCARR_IDNAME: row.MCARR_IDNAME,
V_CONFIG: toInteger(row.V_CONFIG),
V_CONFIGNAME: row.V_CONFIGNAME,
CARGO_BT: toInteger(row.CARGO_BT),
CARGO_BTNAME: row.CARGO_BTNAME,
HAZ_INV: toInteger(row.HAZ_INV),
HAZ_INVNAME: row.HAZ_INVNAME,
HAZ_PLAC: toInteger(row.HAZ_PLAC),
HAZ_PLACNAME: row.HAZ_PLACNAME,
HAZ_ID: toInteger(row.HAZ_ID),
HAZ_IDNAME: row.HAZ_IDNAME,
HAZ_CNO: toInteger(row.HAZ_CNO),
HAZ_CNONAME: row.HAZ_CNONAME,
HAZ_REL: toInteger(row.HAZ_REL),
HAZ_RELNAME: row.HAZ_RELNAME,
BUS_USE: toInteger(row.BUS_USE),
BUS_USENAME: row.BUS_USENAME,
SPEC_USE: toInteger(row.SPEC_USE),
SPEC_USENAME: row.SPEC_USENAME,
EMER_USE: toInteger(row.EMER_USE),
EMER_USENAME: row.EMER_USENAME,
TRAV_SP: toInteger(row.TRAV_SP),
TRAV_SPNAME: row.TRAV_SPNAME,
UNDERIDE: toInteger(row.UNDERIDE),
UNDERIDENAME: row.UNDERIDENAME,
ROLLOVER: toInteger(row.ROLLOVER),
ROLLOVERNAME: row.ROLLOVERNAME,
ROLINLOC: toInteger(row.ROLINLOC),
ROLINLOCNAME: row.ROLINLOCNAME,
IMPACT1: toInteger(row.IMPACT1),
IMPACT1NAME: row.IMPACT1NAME,
DEFORMED: toInteger(row.DEFORMED),
DEFORMEDNAME: row.DEFORMEDNAME,
TOWED: toInteger(row.TOWED),
TOWEDNAME: row.TOWEDNAME,
M_HARM: toInteger(row.M_HARM),
M_HARMNAME: row.M_HARMNAME,
FIRE_EXP: toInteger(row.FIRE_EXP),
FIRE_EXPNAME: row.FIRE_EXPNAME,
DR_PRES: toInteger(row.DR_PRES),
DR_PRESNAME: row.DR_PRESNAME,
L_STATE: toInteger(row.L_STATE),
L_STATENAME: row.L_STATENAME,
DR_ZIP: toInteger(row.DR_ZIP),
DR_ZIPNAME: row.DR_ZIPNAME,
L_STATUS: toInteger(row.L_STATUS),
L_STATUSNAME: row.L_STATUSNAME,
L_TYPE: toInteger(row.L_TYPE),
L_TYPENAME: row.L_TYPENAME,
CDL_STAT: toInteger(row.CDL_STAT),
CDL_STATNAME: row.CDL_STATNAME,
L_ENDORS: toInteger(row.L_ENDORS),
L_ENDORSNAME: row.L_ENDORSNAME,
L_COMPL: toInteger(row.L_COMPL),
L_COMPLNAME: row.L_COMPLNAME,
L_RESTRI: toInteger(row.L_RESTRI),
L_RESTRINAME: row.L_RESTRINAME,
DR_HGT: toInteger(row.DR_HGT),
DR_HGTNAME: row.DR_HGTNAME,
DR_WGT: toInteger(row.DR_WGT),
DR_WGTNAME: row.DR_WGTNAME,
PREV_ACC: toInteger(row.PREV_ACC),
PREV_ACCNAME: row.PREV_ACCNAME,
PREV_SUS1: toInteger(row.PREV_SUS1),
PREV_SUS1NAME: row.PREV_SUS1NAME,
PREV_SUS2: toInteger(row.PREV_SUS2),
PREV_SUS2NAME: row.PREV_SUS2NAME,
PREV_SUS3: toInteger(row.PREV_SUS3),
PREV_SUS3NAME: row.PREV_SUS3NAME,
PREV_DWI: toInteger(row.PREV_DWI),
PREV_DWINAME: row.PREV_DWINAME,
PREV_SPD: toInteger(row.PREV_SPD),
PREV_SPDNAME: row.PREV_SPDNAME,
PREV_OTH: toInteger(row.PREV_OTH),
PREV_OTHNAME: row.PREV_OTHNAME,
FIRST_MO: toInteger(row.FIRST_MO),
FIRST_MONAME: row.FIRST_MONAME,
FIRST_YR: toInteger(row.FIRST_YR),
FIRST_YRNAME: row.FIRST_YRNAME,
LAST_MO: toInteger(row.LAST_MO),
LAST_MONAME: row.LAST_MONAME,
LAST_YR: toInteger(row.LAST_YR),
LAST_YRNAME: row.LAST_YRNAME,
SPEEDREL: toInteger(row.SPEEDREL),
SPEEDRELNAME: row.SPEEDRELNAME,
VTRAFWAY: toInteger(row.VTRAFWAY),
VTRAFWAYNAME: row.VTRAFWAYNAME,
VNUM_LAN: toInteger(row.VNUM_LAN),
VNUM_LANNAME: row.VNUM_LANNAME,
VSPD_LIM: toInteger(row.VSPD_LIM),
VSPD_LIMNAME: row.VSPD_LIMNAME,
VALIGN: toInteger(row.VALIGN),
VALIGNNAME: row.VALIGNNAME,
VPROFILE: toInteger(row.VPROFILE),
VPROFILENAME: row.VPROFILENAME,
VPAVETYP: toInteger(row.VPAVETYP),
VPAVETYPNAME: row.VPAVETYPNAME,
VSURCOND: toInteger(row.VSURCOND),
VSURCONDNAME: row.VSURCONDNAME,
VTRAFCON: toInteger(row.VTRAFCON),
VTRAFCONNAME: row.VTRAFCONNAME,
VTCONT_F: toInteger(row.VTCONT_F),
VTCONT_FNAME: row.VTCONT_FNAME,
P_CRASH1: toInteger(row.P_CRASH1),
P_CRASH1NAME: row.P_CRASH1NAME,
P_CRASH2: toInteger(row.P_CRASH2),
P_CRASH2NAME: row.P_CRASH2NAME,
P_CRASH3: toInteger(row.P_CRASH3),
P_CRASH3NAME: row.P_CRASH3NAME,
PCRASH4: toInteger(row.PCRASH4),
PCRASH4NAME: row.PCRASH4NAME,
PCRASH5: toInteger(row.PCRASH5),
PCRASH5NAME: row.PCRASH5NAME,
ACC_TYPE: toInteger(row.ACC_TYPE),
ACC_TYPENAME: row.ACC_TYPENAME,
TRLR1VIN: row.TRLR1VIN,
TRLR1VINNAME: row.TRLR1VINNAME,
TRLR2VIN: row.TRLR2VIN,
TRLR2VINNAME: row.TRLR2VINNAME,
TRLR3VIN: row.TRLR3VIN,
TRLR3VINNAME: row.TRLR3VINNAME,
DEATHS: toInteger(row.DEATHS),
DR_DRINK: toInteger(row.DR_DRINK),
DR_DRINKNAME: row.DR_DRINKNAME,
VPICMAKE: toInteger(row.VPICMAKE),
VPICMAKENAME: row.VPICMAKENAME,
VPICMODEL: toInteger(row.VPICMODEL),
VPICMODELNAME: row.VPICMODELNAME,
VPICBODYCLASS: toInteger(row.VPICBODYCLASS),
VPICBODYCLASSNAME: row.VPICBODYCLASSNAME,
ICFINALBODY: toInteger(row.ICFINALBODY),
ICFINALBODYNAME: row.ICFINALBODYNAME,
GVWR_FROM: toInteger(row.GVWR_FROM),
GVWR_FROMNAME: row.GVWR_FROMNAME,
GVWR_TO: toInteger(row.GVWR_TO),
GVWR_TONAME: row.GVWR_TONAME,
TRLR1GVWR: toInteger(row.TRLR1GVWR),
TRLR1GVWRNAME: row.TRLR1GVWRNAME,
TRLR2GVWR: toInteger(row.TRLR2GVWR),
TRLR2GVWRNAME: row.TRLR2GVWRNAME,
TRLR3GVWR: toInteger(row.TRLR3GVWR),
TRLR3GVWRNAME: row.TRLR3GVWRNAME,
UNDEROVERRIDE: toInteger(row.UNDEROVERRIDE),
UNDEROVERRIDENAME: row.UNDEROVERRIDENAME
})
} IN TRANSACTIONS OF 10000 ROWS;
Person Nodes (43.964s)
person.csv with the 1:1 tables pbtype, safetyeq and miper (MIPER_P1..P10) folded in. Non-motorists (VEH_NO = 0) have no vehicle_id. 280,093 rows, 196 properties.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/Person.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:Person {
person_id: row.person_id,
accident_id: row.accident_id,
vehicle_id: row.vehicle_id,
DATA_YEAR: toInteger(row.DATA_YEAR),
STATE: toInteger(row.STATE),
STATENAME: row.STATENAME,
ST_CASE: toInteger(row.ST_CASE),
VE_FORMS: toInteger(row.VE_FORMS),
VEH_NO: toInteger(row.VEH_NO),
PER_NO: toInteger(row.PER_NO),
STR_VEH: toInteger(row.STR_VEH),
COUNTY: toInteger(row.COUNTY),
DAY: toInteger(row.DAY),
DAYNAME: toInteger(row.DAYNAME),
MONTH: toInteger(row.MONTH),
MONTHNAME: row.MONTHNAME,
HOUR: toInteger(row.HOUR),
HOURNAME: row.HOURNAME,
MINUTE: toInteger(row.MINUTE),
MINUTENAME: row.MINUTENAME,
RUR_URB: toInteger(row.RUR_URB),
RUR_URBNAME: row.RUR_URBNAME,
FUNC_SYS: toInteger(row.FUNC_SYS),
FUNC_SYSNAME: row.FUNC_SYSNAME,
HARM_EV: toInteger(row.HARM_EV),
HARM_EVNAME: row.HARM_EVNAME,
MAN_COLL: toInteger(row.MAN_COLL),
MAN_COLLNAME: row.MAN_COLLNAME,
SCH_BUS: toInteger(row.SCH_BUS),
SCH_BUSNAME: row.SCH_BUSNAME,
MAKE: toInteger(row.MAKE),
MAKENAME: row.MAKENAME,
MAK_MOD: toInteger(row.MAK_MOD),
MAK_MODNAME: row.MAK_MODNAME,
BODY_TYP: toInteger(row.BODY_TYP),
BODY_TYPNAME: row.BODY_TYPNAME,
MOD_YEAR: toInteger(row.MOD_YEAR),
MOD_YEARNAME: row.MOD_YEARNAME,
TOW_VEH: toInteger(row.TOW_VEH),
TOW_VEHNAME: row.TOW_VEHNAME,
SPEC_USE: toInteger(row.SPEC_USE),
SPEC_USENAME: row.SPEC_USENAME,
EMER_USE: toInteger(row.EMER_USE),
EMER_USENAME: row.EMER_USENAME,
ROLLOVER: toInteger(row.ROLLOVER),
ROLLOVERNAME: row.ROLLOVERNAME,
IMPACT1: toInteger(row.IMPACT1),
IMPACT1NAME: row.IMPACT1NAME,
FIRE_EXP: toInteger(row.FIRE_EXP),
FIRE_EXPNAME: row.FIRE_EXPNAME,
AGE: toInteger(row.AGE),
AGENAME: row.AGENAME,
SEX: toInteger(row.SEX),
SEXNAME: row.SEXNAME,
PER_TYP: toInteger(row.PER_TYP),
PER_TYPNAME: row.PER_TYPNAME,
INJ_SEV: toInteger(row.INJ_SEV),
INJ_SEVNAME: row.INJ_SEVNAME,
SEAT_POS: toInteger(row.SEAT_POS),
SEAT_POSNAME: row.SEAT_POSNAME,
REST_USE: toInteger(row.REST_USE),
REST_USENAME: row.REST_USENAME,
REST_MIS: toInteger(row.REST_MIS),
REST_MISNAME: row.REST_MISNAME,
AIR_BAG: toInteger(row.AIR_BAG),
AIR_BAGNAME: row.AIR_BAGNAME,
EJECTION: toInteger(row.EJECTION),
EJECTIONNAME: row.EJECTIONNAME,
EJ_PATH: toInteger(row.EJ_PATH),
EJ_PATHNAME: row.EJ_PATHNAME,
EXTRICAT: toInteger(row.EXTRICAT),
EXTRICATNAME: row.EXTRICATNAME,
DRINKING: toInteger(row.DRINKING),
DRINKINGNAME: row.DRINKINGNAME,
ALC_DET: toInteger(row.ALC_DET),
ALC_DETNAME: row.ALC_DETNAME,
ALC_STATUS: toInteger(row.ALC_STATUS),
ALC_STATUSNAME: row.ALC_STATUSNAME,
ATST_TYP: toInteger(row.ATST_TYP),
ATST_TYPNAME: row.ATST_TYPNAME,
ALC_RES: toInteger(row.ALC_RES),
ALC_RESNAME: row.ALC_RESNAME,
DRUGS: toInteger(row.DRUGS),
DRUGSNAME: row.DRUGSNAME,
DRUG_DET: toInteger(row.DRUG_DET),
DRUG_DETNAME: row.DRUG_DETNAME,
DSTATUS: toInteger(row.DSTATUS),
DSTATUSNAME: row.DSTATUSNAME,
HOSPITAL: toInteger(row.HOSPITAL),
HOSPITALNAME: row.HOSPITALNAME,
DOA: toInteger(row.DOA),
DOANAME: row.DOANAME,
DEATH_DA: toInteger(row.DEATH_DA),
DEATH_DANAME: row.DEATH_DANAME,
DEATH_MO: toInteger(row.DEATH_MO),
DEATH_MONAME: row.DEATH_MONAME,
DEATH_YR: toInteger(row.DEATH_YR),
DEATH_YRNAME: row.DEATH_YRNAME,
DEATH_HR: toInteger(row.DEATH_HR),
DEATH_HRNAME: row.DEATH_HRNAME,
DEATH_MN: toInteger(row.DEATH_MN),
DEATH_MNNAME: row.DEATH_MNNAME,
DEATH_TM: toInteger(row.DEATH_TM),
DEATH_TMNAME: row.DEATH_TMNAME,
LAG_HRS: toInteger(row.LAG_HRS),
LAG_HRSNAME: row.LAG_HRSNAME,
LAG_MINS: toInteger(row.LAG_MINS),
LAG_MINSNAME: row.LAG_MINSNAME,
WORK_INJ: toInteger(row.WORK_INJ),
WORK_INJNAME: row.WORK_INJNAME,
HISPANIC: toInteger(row.HISPANIC),
HISPANICNAME: row.HISPANICNAME,
LOCATION: toInteger(row.LOCATION),
LOCATIONNAME: row.LOCATIONNAME,
HELM_USE: toInteger(row.HELM_USE),
HELM_USENAME: row.HELM_USENAME,
HELM_MIS: toInteger(row.HELM_MIS),
HELM_MISNAME: row.HELM_MISNAME,
VPICMAKE: toInteger(row.VPICMAKE),
VPICMAKENAME: row.VPICMAKENAME,
VPICMODEL: toInteger(row.VPICMODEL),
VPICMODELNAME: row.VPICMODELNAME,
VPICBODYCLASS: toInteger(row.VPICBODYCLASS),
VPICBODYCLASSNAME: row.VPICBODYCLASSNAME,
ICFINALBODY: toInteger(row.ICFINALBODY),
ICFINALBODYNAME: row.ICFINALBODYNAME,
GVWR_FROM: toInteger(row.GVWR_FROM),
GVWR_FROMNAME: row.GVWR_FROMNAME,
GVWR_TO: toInteger(row.GVWR_TO),
GVWR_TONAME: row.GVWR_TONAME,
DEVTYPENAME: row.DEVTYPENAME,
DEVMOTORNAME: row.DEVMOTORNAME,
DEVTYPE: toInteger(row.DEVTYPE),
DEVMOTOR: toInteger(row.DEVMOTOR),
PBPTYPE: toInteger(row.PBPTYPE),
PBPTYPENAME: row.PBPTYPENAME,
PBAGE: toInteger(row.PBAGE),
PBAGENAME: row.PBAGENAME,
PBSEX: toInteger(row.PBSEX),
PBSEXNAME: row.PBSEXNAME,
PBCWALK: toInteger(row.PBCWALK),
PBCWALKNAME: row.PBCWALKNAME,
PBSWALK: toInteger(row.PBSWALK),
PBSWALKNAME: row.PBSWALKNAME,
PBSZONE: toInteger(row.PBSZONE),
PBSZONENAME: row.PBSZONENAME,
PEDCTYPE: toInteger(row.PEDCTYPE),
PEDCTYPENAME: row.PEDCTYPENAME,
BIKECTYPE: toInteger(row.BIKECTYPE),
BIKECTYPENAME: row.BIKECTYPENAME,
PEDLOC: toInteger(row.PEDLOC),
PEDLOCNAME: row.PEDLOCNAME,
BIKELOC: toInteger(row.BIKELOC),
BIKELOCNAME: row.BIKELOCNAME,
PEDPOS: toInteger(row.PEDPOS),
PEDPOSNAME: row.PEDPOSNAME,
BIKEPOS: toInteger(row.BIKEPOS),
BIKEPOSNAME: row.BIKEPOSNAME,
PEDDIR: toInteger(row.PEDDIR),
PEDDIRNAME: row.PEDDIRNAME,
BIKEDIR: toInteger(row.BIKEDIR),
BIKEDIRNAME: row.BIKEDIRNAME,
MOTDIR: toInteger(row.MOTDIR),
MOTDIRNAME: row.MOTDIRNAME,
MOTMAN: toInteger(row.MOTMAN),
MOTMANNAME: row.MOTMANNAME,
PEDLEG: toInteger(row.PEDLEG),
PEDLEGNAME: row.PEDLEGNAME,
PEDSNR: row.PEDSNR,
PEDSNRNAME: row.PEDSNRNAME,
PEDCGP: toInteger(row.PEDCGP),
PEDCGPNAME: row.PEDCGPNAME,
BIKECGP: toInteger(row.BIKECGP),
BIKECGPNAME: row.BIKECGPNAME,
NMHELMET: toInteger(row.NMHELMET),
NMHELMETNAME: row.NMHELMETNAME,
NMPROPAD: toInteger(row.NMPROPAD),
NMPROPADNAME: row.NMPROPADNAME,
NMOTHPRO: toInteger(row.NMOTHPRO),
NMOTHPRONAME: row.NMOTHPRONAME,
NMREFCLO: toInteger(row.NMREFCLO),
NMREFCLONAME: row.NMREFCLONAME,
NMLIGHT: toInteger(row.NMLIGHT),
NMLIGHTNAME: row.NMLIGHTNAME,
NMOTHPRE: toInteger(row.NMOTHPRE),
NMOTHPRENAME: row.NMOTHPRENAME,
MIPER_P1: toInteger(row.MIPER_P1),
MIPER_P2: toInteger(row.MIPER_P2),
MIPER_P3: toInteger(row.MIPER_P3),
MIPER_P4: toInteger(row.MIPER_P4),
MIPER_P5: toInteger(row.MIPER_P5),
MIPER_P6: toInteger(row.MIPER_P6),
MIPER_P7: toInteger(row.MIPER_P7),
MIPER_P8: toInteger(row.MIPER_P8),
MIPER_P9: toInteger(row.MIPER_P9),
MIPER_P10: toInteger(row.MIPER_P10)
})
} IN TRANSACTIONS OF 10000 ROWS;
Event Nodes (11.690s)
Harmful and non-harmful crash events from cevent.csv. 329,040 rows, 16 properties.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/Event.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:Event {
event_id: row.event_id,
accident_id: row.accident_id,
DATA_YEAR: toInteger(row.DATA_YEAR),
STATE: toInteger(row.STATE),
STATENAME: row.STATENAME,
ST_CASE: toInteger(row.ST_CASE),
EVENTNUM: toInteger(row.EVENTNUM),
VNUMBER1: toInteger(row.VNUMBER1),
AOI1: toInteger(row.AOI1),
AOI1NAME: row.AOI1NAME,
SOE: toInteger(row.SOE),
SOENAME: row.SOENAME,
VNUMBER2: toInteger(row.VNUMBER2),
VNUMBER2NAME: row.VNUMBER2NAME,
AOI2: toInteger(row.AOI2),
AOI2NAME: row.AOI2NAME
})
} IN TRANSACTIONS OF 10000 ROWS;
VPICDecode Nodes (23.614s)
Decoded VIN attributes from vpicdecode.csv, one per vehicle (in transport or parked). 173,667 rows, 208 properties.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/VPICDecode.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:VPICDecode {
vpic_id: row.vpic_id,
vehicle_id: row.vehicle_id,
accident_id: row.accident_id,
DATA_YEAR: toInteger(row.DATA_YEAR),
STATE: toInteger(row.STATE),
STATENAME: row.STATENAME,
ST_CASE: toInteger(row.ST_CASE),
VEH_NO: toInteger(row.VEH_NO),
VEHICLEDESCRIPTOR: row.VEHICLEDESCRIPTOR,
VINDECODEDON: row.VINDECODEDON,
VINDECODEERROR: row.VINDECODEERROR,
VEHICLETYPEID: toInteger(row.VEHICLETYPEID),
VEHICLETYPE: row.VEHICLETYPE,
MANUFACTURERFULLNAMEID: toInteger(row.MANUFACTURERFULLNAMEID),
MANUFACTURERFULLNAME: row.MANUFACTURERFULLNAME,
MAKEID: toInteger(row.MAKEID),
MAKE: row.MAKE,
MODELID: toInteger(row.MODELID),
MODEL: row.MODEL,
MODELYEAR: toInteger(row.MODELYEAR),
SERIES: row.SERIES,
TRIM1: row.TRIM1,
SERIES2: row.SERIES2,
TRIM2: row.TRIM2,
PLANTCOUNTRYID: toInteger(row.PLANTCOUNTRYID),
PLANTCOUNTRY: row.PLANTCOUNTRY,
PLANTSTATE: row.PLANTSTATE,
PLANTCITY: row.PLANTCITY,
PLANTCOMPANYNAME: row.PLANTCOMPANYNAME,
DESTINATIONMARKETID: toInteger(row.DESTINATIONMARKETID),
DESTINATIONMARKET: row.DESTINATIONMARKET,
BASEPRICE: toFloat(row.BASEPRICE),
NOTE: row.NOTE,
BODYCLASSID: toInteger(row.BODYCLASSID),
BODYCLASS: row.BODYCLASS,
DOORSCOUNT: toInteger(row.DOORSCOUNT),
WINDOWS: toInteger(row.WINDOWS),
WHEELBASETYPEID: toInteger(row.WHEELBASETYPEID),
WHEELBASETYPE: row.WHEELBASETYPE,
TRACKWIDTHIN: toFloat(row.TRACKWIDTHIN),
GROSSVEHICLEWEIGHTRATINGFROMID: toInteger(row.GROSSVEHICLEWEIGHTRATINGFROMID),
GROSSVEHICLEWEIGHTRATINGFROM: row.GROSSVEHICLEWEIGHTRATINGFROM,
GROSSVEHICLEWEIGHTRATINGTOID: toInteger(row.GROSSVEHICLEWEIGHTRATINGTOID),
GROSSVEHICLEWEIGHTRATINGTO: row.GROSSVEHICLEWEIGHTRATINGTO,
GROSSCOMBWEIGHTRATINGFROMID: row.GROSSCOMBWEIGHTRATINGFROMID,
GROSSCOMBWEIGHTRATINGFROM: row.GROSSCOMBWEIGHTRATINGFROM,
GROSSCOMBWEIGHTRATINGTOID: row.GROSSCOMBWEIGHTRATINGTOID,
GROSSCOMBWEIGHTRATINGTO: row.GROSSCOMBWEIGHTRATINGTO,
CURBWEIGHTLB: toInteger(row.CURBWEIGHTLB),
WHEELBASEIN_FROM: toFloat(row.WHEELBASEIN_FROM),
WHEELBASEIN_TO: toFloat(row.WHEELBASEIN_TO),
WHEELSCOUNT: toInteger(row.WHEELSCOUNT),
WHEELSIZEFRONTIN: toInteger(row.WHEELSIZEFRONTIN),
WHEELSIZEREARIN: toInteger(row.WHEELSIZEREARIN),
TRUCKBODYCABTYPEID: toInteger(row.TRUCKBODYCABTYPEID),
TRUCKBODYCABTYPE: row.TRUCKBODYCABTYPE,
TRUCKBEDTYPEID: toInteger(row.TRUCKBEDTYPEID),
TRUCKBEDTYPE: row.TRUCKBEDTYPE,
TRUCKBEDLENGTHIN: toInteger(row.TRUCKBEDLENGTHIN),
BUSTYPEID: toInteger(row.BUSTYPEID),
BUSTYPE: row.BUSTYPE,
BUSFLOORCONFIGURATIONTYPEID: toInteger(row.BUSFLOORCONFIGURATIONTYPEID),
BUSFLOORCONFIGURATIONTYPE: row.BUSFLOORCONFIGURATIONTYPE,
BUSLENGTHFT: toInteger(row.BUSLENGTHFT),
OTHERBUSINFO: row.OTHERBUSINFO,
CUSTOMMOTORCYCLETYPEID: toInteger(row.CUSTOMMOTORCYCLETYPEID),
CUSTOMMOTORCYCLETYPE: row.CUSTOMMOTORCYCLETYPE,
MOTORCYCLESUSPENSIONTYPEID: toInteger(row.MOTORCYCLESUSPENSIONTYPEID),
MOTORCYCLESUSPENSIONTYPE: row.MOTORCYCLESUSPENSIONTYPE,
MOTORCYCLECHASSISTYPEID: toInteger(row.MOTORCYCLECHASSISTYPEID),
MOTORCYCLECHASSISTYPE: row.MOTORCYCLECHASSISTYPE,
OTHERMOTORCYCLEINFO: row.OTHERMOTORCYCLEINFO,
STEERINGLOCATIONID: toInteger(row.STEERINGLOCATIONID),
STEERINGLOCATION: row.STEERINGLOCATION,
ENTERTAINMENTSYSTEMID: toInteger(row.ENTERTAINMENTSYSTEMID),
ENTERTAINMENTSYSTEM: row.ENTERTAINMENTSYSTEM,
SEATSCOUNT: toInteger(row.SEATSCOUNT),
SEATROWSCOUNT: toInteger(row.SEATROWSCOUNT),
TRANSMISSIONSPEEDS: toInteger(row.TRANSMISSIONSPEEDS),
TRANSMISSIONSTYLEID: toInteger(row.TRANSMISSIONSTYLEID),
TRANSMISSIONSTYLE: row.TRANSMISSIONSTYLE,
DRIVETYPEID: toInteger(row.DRIVETYPEID),
DRIVETYPE: row.DRIVETYPE,
AXLESCOUNT: toInteger(row.AXLESCOUNT),
AXLECONFIGURATIONID: toInteger(row.AXLECONFIGURATIONID),
AXLECONFIGURATION: row.AXLECONFIGURATION,
BRAKESYSTEMTYPEID: toInteger(row.BRAKESYSTEMTYPEID),
BRAKESYSTEMTYPE: row.BRAKESYSTEMTYPE,
BRAKESYSTEMDESC: row.BRAKESYSTEMDESC,
EVDRIVEUNITID: toInteger(row.EVDRIVEUNITID),
EVDRIVEUNIT: row.EVDRIVEUNIT,
BATTERYKWH_FROM: toFloat(row.BATTERYKWH_FROM),
BATTERYKWH_TO: toFloat(row.BATTERYKWH_TO),
BATTERYV_FROM: toInteger(row.BATTERYV_FROM),
BATTERYV_TO: row.BATTERYV_TO,
BATTERYA_FROM: toInteger(row.BATTERYA_FROM),
BATTERYA_TO: row.BATTERYA_TO,
BATTERYPACKSPERVEHICLE: toInteger(row.BATTERYPACKSPERVEHICLE),
BATTERYMODULESPERPACK: row.BATTERYMODULESPERPACK,
BATTERYCELLSPERMODULE: row.BATTERYCELLSPERMODULE,
BATTERYTYPEID: toInteger(row.BATTERYTYPEID),
BATTERYTYPE: row.BATTERYTYPE,
OTHERBATTERYINFO: row.OTHERBATTERYINFO,
CHARGERLEVELID: toInteger(row.CHARGERLEVELID),
CHARGERLEVEL: row.CHARGERLEVEL,
CHARGERPOWERKW: toInteger(row.CHARGERPOWERKW),
ENGINEMANUFACTURER: row.ENGINEMANUFACTURER,
ENGINEMODEL: row.ENGINEMODEL,
ENGINECONFIGURATIONID: toInteger(row.ENGINECONFIGURATIONID),
ENGINECONFIGURATION: row.ENGINECONFIGURATION,
ENGINEPOWERKW: toFloat(row.ENGINEPOWERKW),
ENGINESTROKECYCLES: toInteger(row.ENGINESTROKECYCLES),
ENGINECYLINDERSCOUNT: toInteger(row.ENGINECYLINDERSCOUNT),
ENGINEBRAKEHP_FROM: toFloat(row.ENGINEBRAKEHP_FROM),
ENGINEBRAKEHP_TO: toFloat(row.ENGINEBRAKEHP_TO),
ENGINECOOLINGTYPEID: toInteger(row.ENGINECOOLINGTYPEID),
ENGINECOOLINGTYPE: row.ENGINECOOLINGTYPE,
DISPLACEMENTCI: toFloat(row.DISPLACEMENTCI),
DISPLACEMENTCC: toFloat(row.DISPLACEMENTCC),
DISPLACEMENTL: toFloat(row.DISPLACEMENTL),
FUELTYPEPRIMARYID: toInteger(row.FUELTYPEPRIMARYID),
FUELTYPEPRIMARY: row.FUELTYPEPRIMARY,
FUELTYPESECONDARYID: toInteger(row.FUELTYPESECONDARYID),
FUELTYPESECONDARY: row.FUELTYPESECONDARY,
FUELDELIVERYINJECTIONTYPEID: toInteger(row.FUELDELIVERYINJECTIONTYPEID),
FUELDELIVERYINJECTIONTYPE: row.FUELDELIVERYINJECTIONTYPE,
ENGINEVALVETRAINDESIGNID: toInteger(row.ENGINEVALVETRAINDESIGNID),
ENGINEVALVETRAINDESIGN: row.ENGINEVALVETRAINDESIGN,
ENGINEELECTRIFICATIONLEVELID: toInteger(row.ENGINEELECTRIFICATIONLEVELID),
ENGINEELECTRIFICATIONLEVEL: row.ENGINEELECTRIFICATIONLEVEL,
ENGINETURBOID: toInteger(row.ENGINETURBOID),
ENGINETURBO: row.ENGINETURBO,
TOPSPEEDMPH: toInteger(row.TOPSPEEDMPH),
OTHERENGINEINFO: row.OTHERENGINEINFO,
SEATBELTTYPEID: toInteger(row.SEATBELTTYPEID),
SEATBELTTYPE: row.SEATBELTTYPE,
PRETENSIONERID: toInteger(row.PRETENSIONERID),
PRETENSIONER: row.PRETENSIONER,
AIRBAGLOCFRONTID: toInteger(row.AIRBAGLOCFRONTID),
AIRBAGLOCFRONT: row.AIRBAGLOCFRONT,
AIRBAGLOCKNEEID: toInteger(row.AIRBAGLOCKNEEID),
AIRBAGLOCKNEE: row.AIRBAGLOCKNEE,
AIRBAGLOCSIDEID: toInteger(row.AIRBAGLOCSIDEID),
AIRBAGLOCSIDE: row.AIRBAGLOCSIDE,
AIRBAGLOCCURTAINID: toInteger(row.AIRBAGLOCCURTAINID),
AIRBAGLOCCURTAIN: row.AIRBAGLOCCURTAIN,
AIRBAGLOCSEATCUSHIONID: toInteger(row.AIRBAGLOCSEATCUSHIONID),
AIRBAGLOCSEATCUSHION: row.AIRBAGLOCSEATCUSHION,
OTHERRESTRAINTSYSTEMINFO: row.OTHERRESTRAINTSYSTEMINFO,
FORWARDCOLLISIONWARNINGID: toInteger(row.FORWARDCOLLISIONWARNINGID),
FORWARDCOLLISIONWARNING: row.FORWARDCOLLISIONWARNING,
DYNAMICBRAKESUPPORTID: toInteger(row.DYNAMICBRAKESUPPORTID),
DYNAMICBRAKESUPPORT: row.DYNAMICBRAKESUPPORT,
CRASHIMMINENTBRAKINGID: toInteger(row.CRASHIMMINENTBRAKINGID),
CRASHIMMINENTBRAKING: row.CRASHIMMINENTBRAKING,
PEDESTRIANAUTOEMERGENCYBRAKINGID: toInteger(row.PEDESTRIANAUTOEMERGENCYBRAKINGID),
PEDESTRIANAUTOEMERGENCYBRAKING: row.PEDESTRIANAUTOEMERGENCYBRAKING,
BLINDSPOTWARNINGID: toInteger(row.BLINDSPOTWARNINGID),
BLINDSPOTWARNING: row.BLINDSPOTWARNING,
BLINDSPOTINTERVENTIONID: toInteger(row.BLINDSPOTINTERVENTIONID),
BLINDSPOTINTERVENTION: row.BLINDSPOTINTERVENTION,
LANEDEPARTUREWARNINGID: toInteger(row.LANEDEPARTUREWARNINGID),
LANEDEPARTUREWARNING: row.LANEDEPARTUREWARNING,
LANEKEEPINGASSISTANCEID: toInteger(row.LANEKEEPINGASSISTANCEID),
LANEKEEPINGASSISTANCE: row.LANEKEEPINGASSISTANCE,
LANECENTERINGASSISTANCEID: toInteger(row.LANECENTERINGASSISTANCEID),
LANECENTERINGASSISTANCE: row.LANECENTERINGASSISTANCE,
BACKUPCAMERAID: toInteger(row.BACKUPCAMERAID),
BACKUPCAMERA: row.BACKUPCAMERA,
REARCROSSTRAFFICALERTID: toInteger(row.REARCROSSTRAFFICALERTID),
REARCROSSTRAFFICALERT: row.REARCROSSTRAFFICALERT,
REARAUTOMATICEMERGENCYBRAKINGID: toInteger(row.REARAUTOMATICEMERGENCYBRAKINGID),
REARAUTOMATICEMERGENCYBRAKING: row.REARAUTOMATICEMERGENCYBRAKING,
PARKASSISTID: toInteger(row.PARKASSISTID),
PARKASSIST: row.PARKASSIST,
DAYTIMERUNNINGLIGHTID: toInteger(row.DAYTIMERUNNINGLIGHTID),
DAYTIMERUNNINGLIGHT: row.DAYTIMERUNNINGLIGHT,
HEADLAMPLIGHTSOURCEID: toInteger(row.HEADLAMPLIGHTSOURCEID),
HEADLAMPLIGHTSOURCE: row.HEADLAMPLIGHTSOURCE,
SEMIAUTOHEADLAMPBEAMSWITCHINGID: toInteger(row.SEMIAUTOHEADLAMPBEAMSWITCHINGID),
SEMIAUTOHEADLAMPBEAMSWITCHING: row.SEMIAUTOHEADLAMPBEAMSWITCHING,
ADAPTIVEDRIVINGBEAMID: toInteger(row.ADAPTIVEDRIVINGBEAMID),
ADAPTIVEDRIVINGBEAM: row.ADAPTIVEDRIVINGBEAM,
ADAPTIVECRUISECONTROLID: toInteger(row.ADAPTIVECRUISECONTROLID),
ADAPTIVECRUISECONTROL: row.ADAPTIVECRUISECONTROL,
ANTILOCKBRAKESYSTEMID: toInteger(row.ANTILOCKBRAKESYSTEMID),
ANTILOCKBRAKESYSTEM: row.ANTILOCKBRAKESYSTEM,
ELECTRONICSTABILITYCONTROLID: toInteger(row.ELECTRONICSTABILITYCONTROLID),
ELECTRONICSTABILITYCONTROL: row.ELECTRONICSTABILITYCONTROL,
TPMSID: toInteger(row.TPMSID),
TPMS: row.TPMS,
AUTOMATICCRASHNOTIFICATIONID: toInteger(row.AUTOMATICCRASHNOTIFICATIONID),
AUTOMATICCRASHNOTIFICATION: row.AUTOMATICCRASHNOTIFICATION,
EVENTDATARECORDERID: toInteger(row.EVENTDATARECORDERID),
EVENTDATARECORDER: row.EVENTDATARECORDER,
TRACTIONCONTROLID: toInteger(row.TRACTIONCONTROLID),
TRACTIONCONTROL: row.TRACTIONCONTROL,
AUTOPEDESTRIANALERTINGSOUNDID: toInteger(row.AUTOPEDESTRIANALERTINGSOUNDID),
AUTOPEDESTRIANALERTINGSOUND: row.AUTOPEDESTRIANALERTINGSOUND,
KEYLESSIGNITIONID: toInteger(row.KEYLESSIGNITIONID),
KEYLESSIGNITION: row.KEYLESSIGNITION,
SAEAUTOMATIONLEVEL_FROM: toInteger(row.SAEAUTOMATIONLEVEL_FROM),
SAEAUTOMATIONLEVEL_TO: row.SAEAUTOMATIONLEVEL_TO,
AUTOREVERSESYSTEMID: toInteger(row.AUTOREVERSESYSTEMID),
AUTOREVERSESYSTEM: row.AUTOREVERSESYSTEM,
ACTIVESAFETYSYSNOTE: row.ACTIVESAFETYSYSNOTE,
NONLANDUSEID: row.NONLANDUSEID,
NONLANDUSE: row.NONLANDUSE
})
} IN TRANSACTIONS OF 10000 ROWS;
Trailer Nodes (2.114s)
Decoded trailer VINs from vpictrailerdecode.csv. 4,742 rows, 46 properties.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/Trailer.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:Trailer {
trailer_id: row.trailer_id,
vehicle_id: row.vehicle_id,
accident_id: row.accident_id,
DATA_YEAR: toInteger(row.DATA_YEAR),
STATE: toInteger(row.STATE),
STATENAME: row.STATENAME,
ST_CASE: toInteger(row.ST_CASE),
VEH_NO: toInteger(row.VEH_NO),
TRAILER_NO: toInteger(row.TRAILER_NO),
VEHICLEDESCRIPTOR: row.VEHICLEDESCRIPTOR,
VINDECODEDON: row.VINDECODEDON,
VINDECODEERROR: row.VINDECODEERROR,
VEHICLETYPEID: toInteger(row.VEHICLETYPEID),
VEHICLETYPE: row.VEHICLETYPE,
MANUFACTURERFULLNAMEID: toInteger(row.MANUFACTURERFULLNAMEID),
MANUFACTURERFULLNAME: row.MANUFACTURERFULLNAME,
MAKEID: toInteger(row.MAKEID),
MAKE: row.MAKE,
MODELID: toInteger(row.MODELID),
MODEL: row.MODEL,
MODELYEAR: toInteger(row.MODELYEAR),
SERIES: row.SERIES,
TRIM1: row.TRIM1,
PLANTCOUNTRYID: toInteger(row.PLANTCOUNTRYID),
PLANTCOUNTRY: row.PLANTCOUNTRY,
PLANTSTATE: row.PLANTSTATE,
PLANTCITY: row.PLANTCITY,
PLANTCOMPANYNAME: row.PLANTCOMPANYNAME,
NOTE: row.NOTE,
BODYCLASSID: toInteger(row.BODYCLASSID),
BODYCLASS: row.BODYCLASS,
GROSSVEHICLEWEIGHTRATINGFROMID: toInteger(row.GROSSVEHICLEWEIGHTRATINGFROMID),
GROSSVEHICLEWEIGHTRATINGFROM: row.GROSSVEHICLEWEIGHTRATINGFROM,
GROSSVEHICLEWEIGHTRATINGTOID: toInteger(row.GROSSVEHICLEWEIGHTRATINGTOID),
GROSSVEHICLEWEIGHTRATINGTO: row.GROSSVEHICLEWEIGHTRATINGTO,
TRAILERBODYTYPEID: toInteger(row.TRAILERBODYTYPEID),
TRAILERBODYTYPE: row.TRAILERBODYTYPE,
TRAILERTYPECONNECTIONID: toInteger(row.TRAILERTYPECONNECTIONID),
TRAILERTYPECONNECTION: row.TRAILERTYPECONNECTION,
TRAILERLENGTHFT: toFloat(row.TRAILERLENGTHFT),
OTHERTRAILERINFO: row.OTHERTRAILERINFO,
AXLESCOUNT: toInteger(row.AXLESCOUNT),
AXLECONFIGURATIONID: toInteger(row.AXLECONFIGURATIONID),
AXLECONFIGURATION: row.AXLECONFIGURATION,
NONLANDUSEID: row.NONLANDUSEID,
NONLANDUSE: row.NONLANDUSE
})
} IN TRANSACTIONS OF 10000 ROWS;
DrugEvent Nodes (10.167s)
One node per drugs.csv row (one specimen and result for one person). Exact duplicate rows in the source are kept as separate events. 349,255 rows, 14 properties.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/DrugEvent.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:DrugEvent {
drug_event_id: row.drug_event_id,
person_id: row.person_id,
accident_id: row.accident_id,
DATA_YEAR: toInteger(row.DATA_YEAR),
STATE: toInteger(row.STATE),
STATENAME: row.STATENAME,
ST_CASE: toInteger(row.ST_CASE),
VEH_NO: toInteger(row.VEH_NO),
PER_NO: toInteger(row.PER_NO),
DRUGSPEC: toInteger(row.DRUGSPEC),
DRUGSPECNAME: row.DRUGSPECNAME,
DRUGRES: toInteger(row.DRUGRES),
DRUGRESNAME: row.DRUGRESNAME,
vehicle_id: row.vehicle_id
})
} IN TRANSACTIONS OF 10000 ROWS;
Code Nodes
Each code node is {id, name}, built from the code/NAME column pair of its source table.
Weather Nodes (1.793s)
13 codes.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/Weather.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:Weather {
id: toInteger(row.id),
name: row.name
})
} IN TRANSACTIONS OF 10000 ROWS;
CrashRF Nodes (1.810s)
29 codes.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/CrashRF.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:CrashRF {
id: toInteger(row.id),
name: row.name
})
} IN TRANSACTIONS OF 10000 ROWS;
Damage Nodes (1.734s)
16 codes.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/Damage.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:Damage {
id: toInteger(row.id),
name: row.name
})
} IN TRANSACTIONS OF 10000 ROWS;
Distract Nodes (1.739s)
22 codes.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/Distract.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:Distract {
id: toInteger(row.id),
name: row.name
})
} IN TRANSACTIONS OF 10000 ROWS;
DrImpair Nodes (1.725s)
15 codes.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/DrImpair.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:DrImpair {
id: toInteger(row.id),
name: row.name
})
} IN TRANSACTIONS OF 10000 ROWS;
DriverRF Nodes (1.724s)
67 codes.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/DriverRF.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:DriverRF {
id: toInteger(row.id),
name: row.name
})
} IN TRANSACTIONS OF 10000 ROWS;
Factor Nodes (1.784s)
20 codes.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/Factor.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:Factor {
id: toInteger(row.id),
name: row.name
})
} IN TRANSACTIONS OF 10000 ROWS;
Maneuver Nodes (1.843s)
10 codes.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/Maneuver.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:Maneuver {
id: toInteger(row.id),
name: row.name
})
} IN TRANSACTIONS OF 10000 ROWS;
VehicleSF Nodes (1.845s)
13 codes.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/VehicleSF.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:VehicleSF {
id: toInteger(row.id),
name: row.name
})
} IN TRANSACTIONS OF 10000 ROWS;
Violatn Nodes (1.726s)
76 codes.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/Violatn.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:Violatn {
id: toInteger(row.id),
name: row.name
})
} IN TRANSACTIONS OF 10000 ROWS;
Vision Nodes (1.722s)
19 codes.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/Vision.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:Vision {
id: toInteger(row.id),
name: row.name
})
} IN TRANSACTIONS OF 10000 ROWS;
Race Nodes (1.834s)
20 codes.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/Race.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:Race {
id: toInteger(row.id),
name: row.name
})
} IN TRANSACTIONS OF 10000 ROWS;
PersonRF Nodes (1.781s)
44 codes.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/PersonRF.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:PersonRF {
id: toInteger(row.id),
name: row.name
})
} IN TRANSACTIONS OF 10000 ROWS;
NMCrash Nodes (1.765s)
24 codes.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/NMCrash.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:NMCrash {
id: toInteger(row.id),
name: row.name
})
} IN TRANSACTIONS OF 10000 ROWS;
NMDistract Nodes (1.730s)
18 codes.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/NMDistract.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:NMDistract {
id: toInteger(row.id),
name: row.name
})
} IN TRANSACTIONS OF 10000 ROWS;
NMImpair Nodes (1.726s)
14 codes.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/NMImpair.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:NMImpair {
id: toInteger(row.id),
name: row.name
})
} IN TRANSACTIONS OF 10000 ROWS;
NMPrior Nodes (1.730s)
15 codes.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/NMPrior.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:NMPrior {
id: toInteger(row.id),
name: row.name
})
} IN TRANSACTIONS OF 10000 ROWS;
DrugTest Nodes (1.761s)
12 codes.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/DrugTest.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:DrugTest {
id: toInteger(row.id),
name: row.name
})
} IN TRANSACTIONS OF 10000 ROWS;
Drug Nodes (1.788s)
422 codes.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/nodes/Drug.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
CREATE (:Drug {
id: toInteger(row.id),
name: row.name
})
} IN TRANSACTIONS OF 10000 ROWS;
Relationships
Relationships are created from one file per (source, type, target). Endpoints are matched through the uniqueness constraints; the files are already free of dangling endpoints and duplicates, so CREATE is used instead of MERGE.
(:Accident)-[:INVOLVES]->(:Vehicle) (6.150s)
182,055 relationships from vehicle + parkwork.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/Accident_INVOLVES_Vehicle.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:Accident {accident_id: row.src})
MATCH (d:Vehicle {vehicle_id: row.dst})
CREATE (s)-[:INVOLVES]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:Accident)-[:HAS_VICTIM]->(:Person) (8.052s)
280,093 relationships from person.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/Accident_HAS_VICTIM_Person.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:Accident {accident_id: row.src})
MATCH (d:Person {person_id: row.dst})
CREATE (s)-[:HAS_VICTIM]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:Accident)-[:RESULTED_IN]->(:Event) (7.898s)
329,040 relationships from cevent.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/Accident_RESULTED_IN_Event.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:Accident {accident_id: row.src})
MATCH (d:Event {event_id: row.dst})
CREATE (s)-[:RESULTED_IN]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:Vehicle)-[:HAS_OCCUPANT]->(:Person) (6.636s)
252,980 relationships from person.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/Vehicle_HAS_OCCUPANT_Person.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:Vehicle {vehicle_id: row.src})
MATCH (d:Person {person_id: row.dst})
CREATE (s)-[:HAS_OCCUPANT]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:Vehicle)-[:SUBJECT_OF]->(:Event) (9.436s)
329,040 relationships from cevent.VNUMBER1; properties AOI, AOINAME.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/Vehicle_SUBJECT_OF_Event.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:Vehicle {vehicle_id: row.src})
MATCH (d:Event {event_id: row.dst})
CREATE (s)-[:SUBJECT_OF {AOI: toInteger(row.AOI), AOINAME: row.AOINAME}]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:Vehicle)-[:OBJECT_OF]->(:Event) (3.626s)
66,079 relationships from cevent.VNUMBER2; properties AOI, AOINAME.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/Vehicle_OBJECT_OF_Event.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:Vehicle {vehicle_id: row.src})
MATCH (d:Event {event_id: row.dst})
CREATE (s)-[:OBJECT_OF {AOI: toInteger(row.AOI), AOINAME: row.AOINAME}]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:Vehicle)-[:HAS_VEVENT]->(:Event) (11.775s)
395,119 relationships from vevent; properties VEVENTNUM, AOI, AOINAME.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/Vehicle_HAS_VEVENT_Event.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:Vehicle {vehicle_id: row.src})
MATCH (d:Event {event_id: row.dst})
CREATE (s)-[:HAS_VEVENT {VEVENTNUM: toInteger(row.VEVENTNUM), AOI: toInteger(row.AOI), AOINAME: row.AOINAME}]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:Vehicle)-[:HAS_VPIC]->(:VPICDecode) (6.186s)
173,667 relationships from vpicdecode.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/Vehicle_HAS_VPIC_VPICDecode.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:Vehicle {vehicle_id: row.src})
MATCH (d:VPICDecode {vpic_id: row.dst})
CREATE (s)-[:HAS_VPIC]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:Vehicle)-[:HAS_TRAILER]->(:Trailer) (2.014s)
4,742 relationships from vpictrailerdecode; properties TRAILER_NO.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/Vehicle_HAS_TRAILER_Trailer.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:Vehicle {vehicle_id: row.src})
MATCH (d:Trailer {trailer_id: row.dst})
CREATE (s)-[:HAS_TRAILER {TRAILER_NO: toInteger(row.TRAILER_NO)}]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:DrugEvent)-[:DRUG_EVENT_OF]->(:Person) (8.539s)
349,255 relationships from drugs.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/DrugEvent_DRUG_EVENT_OF_Person.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:DrugEvent {drug_event_id: row.src})
MATCH (d:Person {person_id: row.dst})
CREATE (s)-[:DRUG_EVENT_OF]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:DrugTest)-[:DRUG_TEST_OF]->(:DrugEvent) (7.060s)
349,255 relationships from drugs.DRUGSPEC.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/DrugTest_DRUG_TEST_OF_DrugEvent.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:DrugTest {id: toInteger(row.src)})
MATCH (d:DrugEvent {drug_event_id: row.dst})
CREATE (s)-[:DRUG_TEST_OF]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:Drug)-[:RESULT_OF]->(:DrugEvent) (7.345s)
349,255 relationships from drugs.DRUGRES.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/Drug_RESULT_OF_DrugEvent.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:Drug {id: toInteger(row.src)})
MATCH (d:DrugEvent {drug_event_id: row.dst})
CREATE (s)-[:RESULT_OF]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:Accident)-[:OCCURRED_IN]->(:Weather) (3.677s)
116,337 relationships from weather.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/Accident_OCCURRED_IN_Weather.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:Accident {accident_id: row.src})
MATCH (d:Weather {id: toInteger(row.dst)})
CREATE (s)-[:OCCURRED_IN]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:CrashRF)-[:CRASH_FACTOR_OF]->(:Accident) (3.549s)
116,019 relationships from crashrf.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/CrashRF_CRASH_FACTOR_OF_Accident.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:CrashRF {id: toInteger(row.src)})
MATCH (d:Accident {accident_id: row.dst})
CREATE (s)-[:CRASH_FACTOR_OF]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:Damage)-[:POSITION_OF]->(:Vehicle) (13.179s)
761,383 relationships from damage.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/Damage_POSITION_OF_Vehicle.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:Damage {id: toInteger(row.src)})
MATCH (d:Vehicle {vehicle_id: row.dst})
CREATE (s)-[:POSITION_OF]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:Distract)-[:DISTRACTION_OF]->(:Vehicle) (4.963s)
177,181 relationships from distract.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/Distract_DISTRACTION_OF_Vehicle.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:Distract {id: toInteger(row.src)})
MATCH (d:Vehicle {vehicle_id: row.dst})
CREATE (s)-[:DISTRACTION_OF]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:DrImpair)-[:IMPAIRMENT_OF]->(:Vehicle) (5.064s)
177,703 relationships from drimpair.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/DrImpair_IMPAIRMENT_OF_Vehicle.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:DrImpair {id: toInteger(row.src)})
MATCH (d:Vehicle {vehicle_id: row.dst})
CREATE (s)-[:IMPAIRMENT_OF]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:DriverRF)-[:DRIVER_RF_OF]->(:Vehicle) (5.588s)
195,590 relationships from driverrf.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/DriverRF_DRIVER_RF_OF_Vehicle.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:DriverRF {id: toInteger(row.src)})
MATCH (d:Vehicle {vehicle_id: row.dst})
CREATE (s)-[:DRIVER_RF_OF]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:Factor)-[:FACTOR_OF]->(:Vehicle) (4.957s)
177,351 relationships from factor.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/Factor_FACTOR_OF_Vehicle.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:Factor {id: toInteger(row.src)})
MATCH (d:Vehicle {vehicle_id: row.dst})
CREATE (s)-[:FACTOR_OF]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:Maneuver)-[:MANEUVER_OF]->(:Vehicle) (4.990s)
177,145 relationships from maneuver.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/Maneuver_MANEUVER_OF_Vehicle.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:Maneuver {id: toInteger(row.src)})
MATCH (d:Vehicle {vehicle_id: row.dst})
CREATE (s)-[:MANEUVER_OF]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:VehicleSF)-[:VEHICLE_SF_OF]->(:Vehicle) (5.032s)
182,057 relationships from vehiclesf + pvehiclesf.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/VehicleSF_VEHICLE_SF_OF_Vehicle.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:VehicleSF {id: toInteger(row.src)})
MATCH (d:Vehicle {vehicle_id: row.dst})
CREATE (s)-[:VEHICLE_SF_OF]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:Violatn)-[:COMMITTED_BY]->(:Vehicle) (5.240s)
190,012 relationships from violatn.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/Violatn_COMMITTED_BY_Vehicle.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:Violatn {id: toInteger(row.src)})
MATCH (d:Vehicle {vehicle_id: row.dst})
CREATE (s)-[:COMMITTED_BY]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:Vision)-[:VISION_OF]->(:Vehicle) (5.174s)
177,246 relationships from vision.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/Vision_VISION_OF_Vehicle.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:Vision {id: toInteger(row.src)})
MATCH (d:Vehicle {vehicle_id: row.dst})
CREATE (s)-[:VISION_OF]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:Race)-[:RACE_OF]->(:Person) (6.983s)
280,633 relationships from race; properties RACE_ORDER, MULTRACE.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/Race_RACE_OF_Person.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:Race {id: toInteger(row.src)})
MATCH (d:Person {person_id: row.dst})
CREATE (s)-[:RACE_OF {RACE_ORDER: toInteger(row.RACE_ORDER), MULTRACE: toInteger(row.MULTRACE)}]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:PersonRF)-[:PERSON_RF_OF]->(:Person) (6.737s)
280,134 relationships from personrf.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/PersonRF_PERSON_RF_OF_Person.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:PersonRF {id: toInteger(row.src)})
MATCH (d:Person {person_id: row.dst})
CREATE (s)-[:PERSON_RF_OF]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:NMCrash)-[:NMCRASH_OF]->(:Person) (2.486s)
37,908 relationships from nmcrash.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/NMCrash_NMCRASH_OF_Person.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:NMCrash {id: toInteger(row.src)})
MATCH (d:Person {person_id: row.dst})
CREATE (s)-[:NMCRASH_OF]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:NMDistract)-[:NMDISTRACT_OF]->(:Person) (2.313s)
27,125 relationships from nmdistract.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/NMDistract_NMDISTRACT_OF_Person.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:NMDistract {id: toInteger(row.src)})
MATCH (d:Person {person_id: row.dst})
CREATE (s)-[:NMDISTRACT_OF]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:NMImpair)-[:NMIMPAIR_OF]->(:Person) (2.338s)
27,182 relationships from nmimpair.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/NMImpair_NMIMPAIR_OF_Person.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:NMImpair {id: toInteger(row.src)})
MATCH (d:Person {person_id: row.dst})
CREATE (s)-[:NMIMPAIR_OF]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
(:NMPrior)-[:NMPRIOR_OF]->(:Person) (2.301s)
28,191 relationships from nmprior.
LOAD CSV WITH HEADERS FROM 'file:///fars/fars20-22/csv/edges/NMPrior_NMPRIOR_OF_Person.tsv' AS row FIELDTERMINATOR '\t'
CALL (row) {
MATCH (s:NMPrior {id: toInteger(row.src)})
MATCH (d:Person {person_id: row.dst})
CREATE (s)-[:NMPRIOR_OF]->(d)
} IN TRANSACTIONS OF 10000 ROWS;
Count Check
After loading, the counts per label and per relationship type are compared with expected-counts.tsv
written by build_csv.py. All 26 labels and 29 relationship types match.
MATCH (n) UNWIND labels(n) AS label RETURN label, count(*) AS count ORDER BY label; MATCH ()-[r]->() RETURN type(r) AS type, count(*) AS count ORDER BY type;