diff --git a/financial_crime/application_fraud/schema/create_schema.gsql b/financial_crime/application_fraud/schema/create_schema.gsql index 6df55ac..693fd29 100644 --- a/financial_crime/application_fraud/schema/create_schema.gsql +++ b/financial_crime/application_fraud/schema/create_schema.gsql @@ -1,2 +1,164 @@ -CREATE GRAPH Application_Fraud(Phone, Email, Address, IP, Device, City, Country, State, Full_Name, Zipcode, County, ID, Party, Connected_Component, DOB, Application, Product, Account, Card, Has_Address, Has_ID, Has_IP, Has_Device, Has_Phone, Has_Email, Located_In, Assigned_To_County, Located_In_State, Located_In_Country, Same_As, Entity_In_Ring, Has_DOB, Has_Full_Name, Application_Has_Full_Name, Application_Has_Phone, Application_Has_Email, Application_Has_DOB, Application_Has_ID, Application_Has_Device, Application_Has_IP, Same_Application, Application_Has_Address, Application_In_Ring, Application_Has_Product, Application_Has_Account, Application_Has_Party, Assigned_To, Application_Has_Card) -set exit_on_error = "false" +CREATE GRAPH Application_Fraud() + +CREATE SCHEMA_CHANGE JOB add_application_fraud_to_graph FOR GRAPH Application_Fraud() { + // (PII) + CREATE VERTEX Phone ( + PRIMARY_ID phone_number STRING + ) WITH primary_id_as_attribute="true" + + CREATE VERTEX Device ( + PRIMARY_ID id STRING, + is_blocked BOOL + ) WITH primary_id_as_attribute="true" + + CREATE VERTEX Full_Name ( + PRIMARY_ID name STRING + ) WITH primary_id_as_attribute="true" + + CREATE VERTEX Card ( + PRIMARY_ID card_number INT, + is_fraud INT, + pagerank FLOAT, + c_id INT, + c_size INT, + occupation STRING + ) WITH primary_id_as_attribute="true" + + CREATE VERTEX DOB ( + PRIMARY_ID dob STRING + ) WITH primary_id_as_attribute="true" + + // Products (cards, loans, etc.) + CREATE VERTEX Product ( + PRIMARY_ID id STRING, + name STRING, + description STRING, + type_of STRING + ) WITH primary_id_as_attribute="true" + + // Connected component / fraud ring ID + CREATE VERTEX Connected_Component ( + PRIMARY_ID id INT + ) WITH primary_id_as_attribute="true" + + // Account entity + CREATE VERTEX Account ( + PRIMARY_ID id STRING, + create_Time DATETIME, + is_fraud INT, + account_type STRING, + account_level STRING, + com_size INT, + pagerank FLOAT, + shortest_path_length INT, + ip_collision INT, + fraud_ip INT, + device_collision INT, + fraud_device INT, + trans_in_mule_ratio FLOAT, + trans_out_mule_ratio FLOAT, + mule_cnt INT, + com_id INT + ) WITH primary_id_as_attribute="true" + + CREATE VERTEX State ( + PRIMARY_ID id STRING + ) WITH primary_id_as_attribute="true" + + CREATE VERTEX IP ( + PRIMARY_ID id STRING, + is_blocked BOOL + ) WITH primary_id_as_attribute="true" + + CREATE VERTEX Address ( + PRIMARY_ID address STRING + ) WITH primary_id_as_attribute="true" + + CREATE VERTEX Email ( + PRIMARY_ID email STRING + ) WITH primary_id_as_attribute="true" + + CREATE VERTEX Country ( + PRIMARY_ID country STRING + ) WITH primary_id_as_attribute="true" + + CREATE VERTEX City ( + PRIMARY_ID id STRING, + city STRING, + population INT + ) WITH primary_id_as_attribute="true" + + CREATE VERTEX County ( + PRIMARY_ID id STRING + ) WITH primary_id_as_attribute="true" + + CREATE VERTEX Zipcode ( + PRIMARY_ID id STRING + ) WITH primary_id_as_attribute="true" + + // Party (person / organization) + CREATE VERTEX Party ( + PRIMARY_ID id STRING, + is_fraud INT, + gender STRING, + dob DATETIME, + party_type STRING, + name STRING, + created_at DATETIME + ) WITH primary_id_as_attribute="true" + + CREATE VERTEX ID ( + PRIMARY_ID id STRING, + id_type STRING + ) WITH primary_id_as_attribute="true" + + // Credit application + CREATE VERTEX Application ( + PRIMARY_ID id STRING, + created_at DATETIME, + status STRING, + line_of_credit FLOAT, + annual_percentage_rate FLOAT, + is_fraud BOOL + ) WITH primary_id_as_attribute="true" + + + CREATE UNDIRECTED EDGE Has_Address (FROM Party, TO Address) + CREATE UNDIRECTED EDGE Has_ID (FROM Party, TO ID) + CREATE UNDIRECTED EDGE Has_IP (FROM Party, TO IP) + CREATE UNDIRECTED EDGE Has_Device (FROM Party, TO Device) + CREATE UNDIRECTED EDGE Has_Phone (FROM Party, TO Phone) + CREATE UNDIRECTED EDGE Has_Email (FROM Party, TO Email) + CREATE UNDIRECTED EDGE Has_DOB (FROM Party, TO DOB) + CREATE UNDIRECTED EDGE Has_Full_Name (FROM Party, TO Full_Name) + + CREATE UNDIRECTED EDGE Application_Has_Full_Name (FROM Application, TO Full_Name) + CREATE UNDIRECTED EDGE Application_Has_Phone (FROM Application, TO Phone) + CREATE UNDIRECTED EDGE Application_Has_Email (FROM Application, TO Email) + CREATE UNDIRECTED EDGE Application_Has_DOB (FROM Application, TO DOB) + CREATE UNDIRECTED EDGE Application_Has_ID (FROM Application, TO ID) + CREATE UNDIRECTED EDGE Application_Has_Device (FROM Application, TO Device) + CREATE UNDIRECTED EDGE Application_Has_IP (FROM Application, TO IP) + CREATE UNDIRECTED EDGE Application_Has_Address (FROM Application, TO Address) + CREATE UNDIRECTED EDGE Application_Has_Product (FROM Application, TO Product) + CREATE UNDIRECTED EDGE Application_Has_Account (FROM Application, TO Account) + CREATE UNDIRECTED EDGE Application_Has_Party (FROM Party, TO Application) + CREATE UNDIRECTED EDGE Application_Has_Card (FROM Application, TO Card) + + + CREATE UNDIRECTED EDGE Assigned_To (FROM Address|Zipcode, TO Zipcode|City) + CREATE UNDIRECTED EDGE Assigned_To_County (FROM Zipcode, TO County) + CREATE UNDIRECTED EDGE Located_In (FROM Address|City, TO City|State) + CREATE UNDIRECTED EDGE Located_In_State (FROM County, TO State) + CREATE UNDIRECTED EDGE Located_In_Country (FROM State, TO Country) + + + CREATE UNDIRECTED EDGE Application_In_Ring (FROM Application, TO Connected_Component) + CREATE UNDIRECTED EDGE Entity_In_Ring (FROM Connected_Component, TO Party) + CREATE UNDIRECTED EDGE Same_As (FROM Party, TO Party, score DOUBLE) + CREATE UNDIRECTED EDGE Same_Application (FROM Application, TO Application, score DOUBLE) +} + +RUN SCHEMA_CHANGE JOB add_application_fraud_to_graph + +DROP JOB add_application_fraud_to_graph \ No newline at end of file diff --git a/financial_crime/application_fraud/schema/local_schema.txt b/financial_crime/application_fraud/schema/local_schema.txt deleted file mode 100644 index 11cb39c..0000000 --- a/financial_crime/application_fraud/schema/local_schema.txt +++ /dev/null @@ -1,171 +0,0 @@ -USE GLOBAL - -// (PII) -CREATE VERTEX Phone ( - PRIMARY_ID phone_number STRING -) WITH primary_id_as_attribute="true" - -CREATE VERTEX Device ( - PRIMARY_ID id STRING, - is_blocked BOOL -) WITH primary_id_as_attribute="true" - -CREATE VERTEX Full_Name ( - PRIMARY_ID name STRING -) WITH primary_id_as_attribute="true" - -CREATE VERTEX Card ( - PRIMARY_ID card_number INT, - is_fraud INT, - pagerank FLOAT, - c_id INT, - c_size INT, - occupation STRING -) WITH primary_id_as_attribute="true" - -CREATE VERTEX DOB ( - PRIMARY_ID dob STRING -) WITH primary_id_as_attribute="true" - -// Products (cards, loans, etc.) -CREATE VERTEX Product ( - PRIMARY_ID id STRING, - name STRING, - description STRING, - type_of STRING -) WITH primary_id_as_attribute="true" - -// Connected component / fraud ring ID -CREATE VERTEX Connected_Component ( - PRIMARY_ID id INT -) WITH primary_id_as_attribute="true" - -// Account entity -CREATE VERTEX Account ( - PRIMARY_ID id STRING, - create_Time DATETIME, - is_fraud INT, - account_type STRING, - account_level STRING, - com_size INT, - pagerank FLOAT, - shortest_path_length INT, - ip_collision INT, - fraud_ip INT, - device_collision INT, - fraud_device INT, - trans_in_mule_ratio FLOAT, - trans_out_mule_ratio FLOAT, - mule_cnt INT, - com_id INT, -) WITH primary_id_as_attribute="true" - -CREATE VERTEX State ( - PRIMARY_ID id STRING -) WITH primary_id_as_attribute="true" - -CREATE VERTEX IP ( - PRIMARY_ID id STRING, - is_blocked BOOL -) WITH primary_id_as_attribute="true" - -CREATE VERTEX Address ( - PRIMARY_ID address STRING -) WITH primary_id_as_attribute="true" - -CREATE VERTEX Email ( - PRIMARY_ID email STRING -) WITH primary_id_as_attribute="true" - -CREATE VERTEX Country ( - PRIMARY_ID country STRING -) WITH primary_id_as_attribute="true" - -CREATE VERTEX City ( - PRIMARY_ID id STRING, - city STRING, - population INT -) WITH primary_id_as_attribute="true" - -CREATE VERTEX County ( - PRIMARY_ID id STRING -) WITH primary_id_as_attribute="true" - -CREATE VERTEX Zipcode ( - PRIMARY_ID id STRING -) WITH primary_id_as_attribute="true" - -// Party (person / organization) -CREATE VERTEX Party ( - PRIMARY_ID id STRING, - is_fraud INT, - gender STRING, - dob DATETIME, - party_type STRING, - name STRING, - created_at DATETIME -) WITH primary_id_as_attribute="true" - -CREATE VERTEX ID ( - PRIMARY_ID id STRING, - id_type STRING -) WITH primary_id_as_attribute="true" - -// Credit application -CREATE VERTEX Application ( - PRIMARY_ID id STRING, - created_at DATETIME, - status STRING, - line_of_credit FLOAT, - annual_percentage_rate FLOAT, - is_fraud BOOL -) WITH primary_id_as_attribute="true" - - -CREATE UNDIRECTED EDGE Has_Address (FROM Party, TO Address) -CREATE UNDIRECTED EDGE Has_ID (FROM Party, TO ID) -CREATE UNDIRECTED EDGE Has_IP (FROM Party, TO IP) -CREATE UNDIRECTED EDGE Has_Device (FROM Party, TO Device) -CREATE UNDIRECTED EDGE Has_Phone (FROM Party, TO Phone) -CREATE UNDIRECTED EDGE Has_Email (FROM Party, TO Email) -CREATE UNDIRECTED EDGE Has_DOB (FROM Party, TO DOB) -CREATE UNDIRECTED EDGE Has_Full_Name (FROM Party, TO Full_Name) - -CREATE UNDIRECTED EDGE Application_Has_Full_Name (FROM Application, TO Full_Name) -CREATE UNDIRECTED EDGE Application_Has_Phone (FROM Application, TO Phone) -CREATE UNDIRECTED EDGE Application_Has_Email (FROM Application, TO Email) -CREATE UNDIRECTED EDGE Application_Has_DOB (FROM Application, TO DOB) -CREATE UNDIRECTED EDGE Application_Has_ID (FROM Application, TO ID) -CREATE UNDIRECTED EDGE Application_Has_Device (FROM Application, TO Device) -CREATE UNDIRECTED EDGE Application_Has_IP (FROM Application, TO IP) -CREATE UNDIRECTED EDGE Application_Has_Address (FROM Application, TO Address) -CREATE UNDIRECTED EDGE Application_Has_Product (FROM Application, TO Product) -CREATE UNDIRECTED EDGE Application_Has_Account (FROM Application, TO Account) -CREATE UNDIRECTED EDGE Application_Has_Party (FROM Party, TO Application) -CREATE UNDIRECTED EDGE Application_Has_Card (FROM Application, TO Card) - - -CREATE UNDIRECTED EDGE Assigned_To (FROM Address|Zipcode, TO Zipcode|City) -CREATE UNDIRECTED EDGE Assigned_To_County (FROM Zipcode, TO County) -CREATE UNDIRECTED EDGE Located_In (FROM Address|City, TO City|State) -CREATE UNDIRECTED EDGE Located_In_State (FROM County, TO State) -CREATE UNDIRECTED EDGE Located_In_Country (FROM State, TO Country) - - -CREATE UNDIRECTED EDGE Application_In_Ring (FROM Application, TO Connected_Component) -CREATE UNDIRECTED EDGE Entity_In_Ring (FROM Connected_Component, TO Party) -CREATE UNDIRECTED EDGE Same_As (FROM Party, TO Party, score DOUBLE) -CREATE UNDIRECTED EDGE Same_Application (FROM Application, TO Application, score DOUBLE) - - -CREATE GRAPH Application_Fraud(Phone, Email, Address, IP, Device, City, -Country,State, Full_Name, Zipcode, County, ID, Party, Connected_Component, DOB, -Application, Product, Account, Card, Has_Address, Has_ID, Has_IP, Has_Device, -Has_Phone, Has_Email, Located_In, Assigned_To_County, Located_In_State, -Located_In_Country, Same_As, Entity_In_Ring, Has_DOB, Has_Full_Name, -Application_Has_Full_Name, Application_Has_Phone, Application_Has_Email, -Application_Has_DOB, Application_Has_ID, Application_Has_Device, -Application_Has_IP, Same_Application, Application_Has_Address, -Application_In_Ring, Application_Has_Product, Application_Has_Account, -Application_Has_Party, Assigned_To, Application_Has_Card) -set exit_on_error = "false"