← Back to FARS Dataset

Neo4j Implementation (FARS 2020–2022)

Data loading for Neo4j Enterprise 2026.05.0, covering the 2020–2022 FARS releases only.

Schema Diagram and Graph Statistics

FARS Neo4j Schema

Node Statistics

Node LabelCount
Accident115,142
Vehicle182,055
Person280,093
Event329,040
VPICDecode173,667
Trailer4,742
DrugEvent349,255
Weather13
CrashRF29
Damage16
Distract22
DrImpair15
DriverRF67
Factor20
Maneuver10
VehicleSF13
Violatn76
Vision19
Race20
PersonRF44
NMCrash24
NMDistract18
NMImpair14
NMPrior15
DrugTest12
Drug422

Edge Statistics

RelationshipCount
(: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.

Preparation
Core Entities
Code Nodes
Relationships
Verification

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, \x1a and en/em dashes become -, curly quotes become straight quotes, and tabs and newlines inside values become spaces.
  • Columns: names are upper-cased (2020 vpicdecode is camel-cased) and the three years are merged by column union; a column missing in a year is left empty. ORDER and TRIM are renamed to RACE_ORDER and TRIM1 because 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 into Vehicle: their P-prefixed columns are mapped to the matching vehicle columns (for example PMAKE → MAKE, PVEH_SEV → DEFORMED; all 113 map), and source_table records vehicle or parkwork. Both tables share the VEH_NO numbering and never overlap; pvehiclesf is merged into vehiclesf the same way.
  • 1:1 tables are folded into their parent node; vsoe is fully derivable from vevent (checked row by row) and is stored as the AOI property of HAS_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 as 126" 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:

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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.

cypher
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;