// 0. 데이터베이스 초기화 MATCH (n) DETACH DELETE n; // 1. 노드 생성 // JobType 노드 CREATE (:JobType {type_id: 'JT01', name: '터널 입구 굴착'}); CREATE (:JobType {type_id: 'JT02', name: '숏크리트 타설'}); CREATE (:JobType {type_id: 'JT03', name: '강지보 설치'}); CREATE (:JobType {type_id: 'JT04', name: '방수 및 배수시설 설치'}); CREATE (:JobType {type_id: 'JT05', name: '철근 조립'}); CREATE (:JobType {type_id: 'JT06', name: '내부 라이닝 콘크리트 타설'}); CREATE (:JobType {type_id: 'JT07', name: '조명 및 환기시설 설치'}); CREATE (:JobType {type_id: 'JT08', name: '안전시설물 설치'}); CREATE (:JobType {type_id: 'JT09', name: '포장 및 차선 도색'}); CREATE (:JobType {type_id: 'JT10', name: 'TBM 준비'}); CREATE (:JobType {type_id: 'JT11', name: 'TBM 굴진'}); CREATE (:JobType {type_id: 'JT12', name: '세그먼트 조립'}); CREATE (:JobType {type_id: 'JT13', name: '그라우팅'}); CREATE (:JobType {type_id: 'JT14', name: 'TBM 해체 및 반출'}); CREATE (:JobType {type_id: 'JT15', name: '전기/통신 케이블 설치'}); CREATE (:JobType {type_id: 'JT16', name: 'CCTV 및 VMS 설치'}); CREATE (:JobType {type_id: 'JT17', name: '소방시설 설치'}); CREATE (:JobType {type_id: 'JT18', name: '최종 점검'}); CREATE (:JobType {type_id: 'JT19', name: '개통 준비'}); // Job 노드 CREATE (:Job {id: '1', name: '터널 입구 굴착', duration: 10, cost: 150}); CREATE (:Job {id: '2', name: '1차 숏크리트 타설', duration: 5, cost: 80}); CREATE (:Job {id: '3', name: '강지보 설치', duration: 7, cost: 120}); CREATE (:Job {id: '4', name: '2차 숏크리트 타설', duration: 5, cost: 80}); CREATE (:Job {id: '5', name: '방수 및 배수시설 설치', duration: 8, cost: 100}); CREATE (:Job {id: '6', name: '철근 조립', duration: 6, cost: 90}); CREATE (:Job {id: '7', name: '내부 라이닝 콘크리트 타설', duration: 12, cost: 200}); CREATE (:Job {id: '8', name: '조명 및 환기시설 설치', duration: 9, cost: 110}); CREATE (:Job {id: '9', name: '안전시설물 설치', duration: 4, cost: 60}); CREATE (:Job {id: '10', name: '포장 및 차선 도색', duration: 7, cost: 95}); CREATE (:Job {id: '11', name: 'TBM 준비', duration: 15, cost: 500}); CREATE (:Job {id: '12', name: 'TBM 굴진', duration: 30, cost: 1200}); CREATE (:Job {id: '13', name: '세그먼트 조립', duration: 25, cost: 800}); CREATE (:Job {id: '14', name: '그라우팅', duration: 10, cost: 150}); CREATE (:Job {id: '15', name: 'TBM 해체 및 반출', duration: 12, cost: 300}); CREATE (:Job {id: '16', name: '전기/통신 케이블 설치', duration: 8, cost: 130}); CREATE (:Job {id: '17', name: 'CCTV 및 VMS 설치', duration: 5, cost: 70}); CREATE (:Job {id: '18', name: '소방시설 설치', duration: 6, cost: 85}); CREATE (:Job {id: '19', name: '최종 점검', duration: 3, cost: 50}); CREATE (:Job {id: '20', name: '개통 준비', duration: 2, cost: 30}); // ObjectType 노드 CREATE (:ObjectType {type_id: 'OT01', name: '굴착기'}); CREATE (:ObjectType {type_id: 'OT02', name: '숏크리트 펌프'}); CREATE (:ObjectType {type_id: 'OT03', name: '강지보재'}); CREATE (:ObjectType {type_id: 'OT04', name: '방수시트'}); CREATE (:ObjectType {type_id: 'OT05', name: '콘크리트 믹서'}); CREATE (:ObjectType {type_id: 'OT06', name: '철근'}); CREATE (:ObjectType {type_id: 'OT07', name: '조명등'}); CREATE (:ObjectType {type_id: 'OT08', name: '환풍기'}); CREATE (:ObjectType {type_id: 'OT09', name: 'TBM'}); CREATE (:ObjectType {type_id: 'OT10', name: '세그먼트'}); CREATE (:ObjectType {type_id: 'OT11', name: '그라우트 믹서'}); CREATE (:ObjectType {type_id: 'OT12', name: '케이블'}); CREATE (:ObjectType {type_id: 'OT13', name: 'CCTV'}); CREATE (:ObjectType {type_id: 'OT14', name: '소화기'}); CREATE (:ObjectType {type_id: 'OT15', name: '차선도색기'}); CREATE (:ObjectType {type_id: 'OT16', name: '숏크리트'}); // Object 노드 CREATE (:Object {id: 'OBJ01', name: '굴착기-A01'}); CREATE (:Object {id: 'OBJ02', name: '숏크리트 펌프-A'}); CREATE (:Object {id: 'OBJ03', name: '강지보재-L100'}); CREATE (:Object {id: 'OBJ04', name: '방수시트-S20'}); CREATE (:Object {id: 'OBJ05', name: '콘크리트 믹서-T1'}); CREATE (:Object {id: 'OBJ06', name: '철근-D16'}); CREATE (:Object {id: 'OBJ07', name: '조명등-LED-1'}); CREATE (:Object {id: 'OBJ08', name: '환풍기-F1'}); CREATE (:Object {id: 'OBJ09', name: 'TBM-Shield-1'}); CREATE (:Object {id: 'OBJ10', name: '세그먼트-A타입'}); CREATE (:Object {id: 'OBJ11', name: '그라우트 믹서-G1'}); CREATE (:Object {id: 'OBJ12', name: '전원 케이블-HV-1'}); CREATE (:Object {id: 'OBJ13', name: 'CCTV-001'}); CREATE (:Object {id: 'OBJ14', name: '소화기-P1'}); CREATE (:Object {id: 'OBJ15', name: '차선도색기-Y1'}); CREATE (:Object {id: 'OBJ16', name: '숏크리트-Batch1'}); CREATE (:Object {id: 'OBJ17', name: '숏크리트-Batch2'}); // Status 노드 CREATE (:Status {status_id: 'CS_APP', name: 'APPROVED'}); CREATE (:Status {status_id: 'CS_CON', name: 'CONFIRMED'}); CREATE (:Status {status_id: 'CS_PLN', name: 'PLANNING'}); CREATE (:Status {status_id: 'PS_EXE', name: 'EXECUTING'}); CREATE (:Status {status_id: 'PS_PLN', name: 'PLANNING'}); CREATE (:Status {status_id: 'PM_PAID', name: 'PAID'}); CREATE (:Status {status_id: 'PM_APL', name: 'APPLIED'}); CREATE (:Status {status_id: 'PM_NON', name: 'NONE'}); CREATE (:Status {status_id: 'QS_APP', name: 'APPROVED'}); CREATE (:Status {status_id: 'QS_CON', name: 'CONFIRMED'}); CREATE (:Status {status_id: 'QS_PLN', name: 'PLANNING'}); CREATE (:Status {status_id: 'SS_APP', name: 'APPROVED'}); CREATE (:Status {status_id: 'SS_CON', name: 'CONFIRMED'}); CREATE (:Status {status_id: 'SS_PLN', name: 'PLANNING'}); // Activity 노드 CREATE (:Activity {id: 'ACT01', name: '굴착 작업', description: '터널 입구 지반 굴착'}); CREATE (:Activity {id: 'ACT02', name: '숏크리트 타설 작업', description: '굴착면에 숏크리트 타설하여 안정화'}); CREATE (:Activity {id: 'ACT03', name: '강지보 설치 작업', description: '강재 지보를 설치하여 터널 구조 강화'}); CREATE (:Activity {id: 'ACT04', name: '방수/배수 작업', description: '방수시트 및 배수시설 설치'}); CREATE (:Activity {id: 'ACT05', name: '철근 조립 작업', description: '내부 라이닝을 위한 철근 조립'}); // Scenario 노드 CREATE (:Scenario {id: 'SCN01', name: '기본 시나리오', description: '가장 기본적인 순서의 작업 흐름'}); CREATE (:Scenario {id: 'SCN02', name: 'TBM 공법 적용 시나리오', description: 'TBM 장비를 활용한 대체 작업 흐름'}); CREATE (:Scenario {id: 'SCN03', name: 'SCN02 증분 시나리오', description: 'SCN02 시나리오에서 일부 작업 순서 변경'}); // 2. 관계 생성 // Job IS_A JobType MATCH (j:Job {id: '1'}), (jt:JobType {type_id: 'JT01'}) CREATE (j)-[:IS_A]->(jt); MATCH (j:Job {id: '2'}), (jt:JobType {type_id: 'JT02'}) CREATE (j)-[:IS_A]->(jt); MATCH (j:Job {id: '3'}), (jt:JobType {type_id: 'JT03'}) CREATE (j)-[:IS_A]->(jt); MATCH (j:Job {id: '4'}), (jt:JobType {type_id: 'JT02'}) CREATE (j)-[:IS_A]->(jt); MATCH (j:Job {id: '5'}), (jt:JobType {type_id: 'JT04'}) CREATE (j)-[:IS_A]->(jt); // Object IS_A ObjectType MATCH (o:Object {id: 'OBJ01'}), (ot:ObjectType {type_id: 'OT01'}) CREATE (o)-[:IS_A]->(ot); MATCH (o:Object {id: 'OBJ02'}), (ot:ObjectType {type_id: 'OT02'}) CREATE (o)-[:IS_A]->(ot); MATCH (o:Object {id: 'OBJ16'}), (ot:ObjectType {type_id: 'OT16'}) CREATE (o)-[:IS_A]->(ot); MATCH (o:Object {id: 'OBJ17'}), (ot:ObjectType {type_id: 'OT16'}) CREATE (o)-[:IS_A]->(ot); // Job PRECEDES Job MATCH (j1:Job {id: '1'}), (j2:Job {id: '2'}) CREATE (j1)-[:PRECEDES]->(j2); MATCH (j1:Job {id: '2'}), (j2:Job {id: '3'}) CREATE (j1)-[:PRECEDES]->(j2); MATCH (j1:Job {id: '3'}), (j2:Job {id: '4'}) CREATE (j1)-[:PRECEDES]->(j2); MATCH (j1:Job {id: '4'}), (j2:Job {id: '5'}) CREATE (j1)-[:PRECEDES]->(j2); // Job HAS_STATUS Status MATCH (j:Job {id: '1'}), (s:Status {status_id: 'CS_APP'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '1'}), (s:Status {status_id: 'PS_EXE'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '1'}), (s:Status {status_id: 'PM_PAID'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '1'}), (s:Status {status_id: 'QS_APP'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '1'}), (s:Status {status_id: 'SS_APP'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '2'}), (s:Status {status_id: 'CS_APP'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '2'}), (s:Status {status_id: 'PS_EXE'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '2'}), (s:Status {status_id: 'PM_PAID'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '2'}), (s:Status {status_id: 'QS_APP'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '2'}), (s:Status {status_id: 'SS_APP'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '3'}), (s:Status {status_id: 'CS_CON'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '3'}), (s:Status {status_id: 'PS_EXE'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '3'}), (s:Status {status_id: 'PM_APL'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '3'}), (s:Status {status_id: 'QS_CON'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '3'}), (s:Status {status_id: 'SS_CON'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '4'}), (s:Status {status_id: 'CS_PLN'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '4'}), (s:Status {status_id: 'PS_PLN'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '4'}), (s:Status {status_id: 'PM_NON'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '4'}), (s:Status {status_id: 'QS_PLN'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '4'}), (s:Status {status_id: 'SS_PLN'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '5'}), (s:Status {status_id: 'CS_PLN'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '5'}), (s:Status {status_id: 'PS_PLN'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '5'}), (s:Status {status_id: 'PM_NON'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '5'}), (s:Status {status_id: 'QS_PLN'}) CREATE (j)-[:HAS_STATUS]->(s); MATCH (j:Job {id: '5'}), (s:Status {status_id: 'SS_PLN'}) CREATE (j)-[:HAS_STATUS]->(s); // Scenario INCLUDES Job MATCH (s:Scenario {id: 'SCN01'}), (j:Job {id: '1'}) CREATE (s)-[:INCLUDES]->(j); MATCH (s:Scenario {id: 'SCN01'}), (j:Job {id: '2'}) CREATE (s)-[:INCLUDES]->(j); MATCH (s:Scenario {id: 'SCN01'}), (j:Job {id: '3'}) CREATE (s)-[:INCLUDES]->(j); MATCH (s:Scenario {id: 'SCN01'}), (j:Job {id: '4'}) CREATE (s)-[:INCLUDES]->(j); MATCH (s:Scenario {id: 'SCN01'}), (j:Job {id: '5'}) CREATE (s)-[:INCLUDES]->(j); MATCH (s:Scenario {id: 'SCN02'}), (j:Job {id: '11'}) CREATE (s)-[:INCLUDES]->(j); MATCH (s:Scenario {id: 'SCN02'}), (j:Job {id: '12'}) CREATE (s)-[:INCLUDES]->(j); MATCH (s:Scenario {id: 'SCN02'}), (j:Job {id: '13'}) CREATE (s)-[:INCLUDES]->(j); MATCH (s:Scenario {id: 'SCN02'}), (j:Job {id: '14'}) CREATE (s)-[:INCLUDES]->(j); MATCH (s:Scenario {id: 'SCN02'}), (j:Job {id: '15'}) CREATE (s)-[:INCLUDES]->(j); MATCH (s:Scenario {id: 'SCN03'}), (j:Job {id: '11'}) CREATE (s)-[:INCLUDES]->(j); MATCH (s:Scenario {id: 'SCN03'}), (j:Job {id: '13'}) CREATE (s)-[:INCLUDES]->(j); MATCH (s:Scenario {id: 'SCN03'}), (j:Job {id: '12'}) CREATE (s)-[:INCLUDES]->(j); MATCH (s:Scenario {id: 'SCN03'}), (j:Job {id: '14'}) CREATE (s)-[:INCLUDES]->(j); MATCH (s:Scenario {id: 'SCN03'}), (j:Job {id: '15'}) CREATE (s)-[:INCLUDES]->(j); // Scenario DELTA_FROM Scenario MATCH (s1:Scenario {id: 'SCN03'}), (s2:Scenario {id: 'SCN02'}) CREATE (s1)-[:DELTA_FROM]->(s2); // Job PERFORMS Activity MATCH (j:Job {id: '1'}), (a:Activity {id: 'ACT01'}) CREATE (j)-[:PERFORMS]->(a); MATCH (j:Job {id: '2'}), (a:Activity {id: 'ACT02'}) CREATE (j)-[:PERFORMS]->(a); MATCH (j:Job {id: '3'}), (a:Activity {id: 'ACT03'}) CREATE (j)-[:PERFORMS]->(a); MATCH (j:Job {id: '4'}), (a:Activity {id: 'ACT02'}) CREATE (j)-[:PERFORMS]->(a); MATCH (j:Job {id: '5'}), (a:Activity {id: 'ACT04'}) CREATE (j)-[:PERFORMS]->(a); MATCH (j:Job {id: '6'}), (a:Activity {id: 'ACT05'}) CREATE (j)-[:PERFORMS]->(a); // Activity ACTS_ON Object MATCH (a:Activity {id: 'ACT01'}), (o:Object {id: 'OBJ01'}) CREATE (a)-[:ACTS_ON]->(o); MATCH (a:Activity {id: 'ACT02'}), (o:Object {id: 'OBJ02'}) CREATE (a)-[:ACTS_ON]->(o); MATCH (a:Activity {id: 'ACT02'}), (o:Object {id: 'OBJ16'}) CREATE (a)-[:ACTS_ON]->(o); MATCH (a:Activity {id: 'ACT03'}), (o:Object {id: 'OBJ03'}) CREATE (a)-[:ACTS_ON]->(o); MATCH (a:Activity {id: 'ACT04'}), (o:Object {id: 'OBJ04'}) CREATE (a)-[:ACTS_ON]->(o); MATCH (a:Activity {id: 'ACT05'}), (o:Object {id: 'OBJ06'}) CREATE (a)-[:ACTS_ON]->(o); RETURN "All data imported successfully!";