Knowledge Graph 25 Classes
Neptune (openCypher) 기반 25 클래스 KG. 추정 ~500K edges. 3 BU(Beauty + HDB + Refreshment) 통합 + 외부 4종 시그널 반영.
1. 25 클래스 개요
2. 그룹별 명세
2.1 고객/회원 (5)
| 클래스 | 핵심 속성 | 주요 관계 |
|---|---|---|
| Customer | customer_id · gender · age_band · region · signup_date · cohort_tag(real/synth) | -[BELONGS_TO]→ Household · -[HAS_MEMBERSHIP]→ Membership |
| Membership (LG 멤버스) | grade(일반/실버/골드/VIP) · points · joined_at · opted_in_marketing | -[ON_BEHALF_OF]→ Customer |
| Household | household_id · household_size · household_type(1인/2인/4인+/기타) | -[CONTAINS]→ Customer |
| Persona | persona_id · name(키즈맘/골드미스/1인가구/시니어/트렌드세터) · traits | -[CLASSIFIES]→ Customer |
| Segment | segment_id · definition · dynamic_query · snapshot_date | -[INCLUDES]→ Customer |
2.2 상품/카탈로그 (5)
| 클래스 | 핵심 속성 | 주요 관계 |
|---|---|---|
| Product (SKU) | sku · name · price · attributes(JSON) | -[IN_CATEGORY]→ Category · -[OF_BRAND]→ Brand |
| Category | category_id · name · parent_id · depth | -[CHILD_OF]→ Category |
| Brand | brand_id · name(후·숨37·오휘·엘라스틴·페리오·코카콜라·환타·...) · launched_at | -[OWNS]→ Product · -[BELONGS_TO_BU]→ BU |
| BU | bu_id · name(Beauty/HDB/Refreshment) | -[GROUPS]→ Brand |
| Bundle | bundle_id · theme · season(설/추석/여름/겨울 등) | -[INCLUDES_SKU]→ Product |
2.3 거래/행동 (5)
| 클래스 | 핵심 속성 | 주요 관계 |
|---|---|---|
| OrderTransaction (자사몰) | order_id · total_amount · channel(web/app) · order_at | -[BY]→ Customer · -[CONTAINS]→ Product |
| ChannelSellThrough (외부 채널 추정) | channel_id · sku · units · period · estimated_at | -[OF]→ Product · -[AT]→ Channel |
| CartEvent | cart_event_id · action(add/remove/abandon) · at | -[BY] → Customer · -[ON]→ Product |
| SearchEvent | search_event_id · query_text · click_sku · at | -[BY]→ Customer |
| ReviewRating | review_id · rating(1-5) · text · source(자사몰/네이버/올리브영/X) · at | -[ABOUT]→ Product · -[BY]→ Customer |
2.4 채널/캠페인 (5)
| 클래스 | 핵심 속성 | 주요 관계 |
|---|---|---|
| Channel | channel_id · name(자사몰·이마트·롯데마트·올리브영·CU·GS25·QSR) · type | -[HOSTS]→ Transaction |
| Campaign | campaign_id · name · start_at · end_at · budget · target_bu | -[USES]→ Touchpoint · -[OFFERS]→ Promotion |
| Promotion | promotion_id · type(할인/1+1/적립) · conditions | -[APPLIES_TO]→ Product |
| Touchpoint | touchpoint_id · channel(SMS/카톡/푸시/SNS광고) · template | -[REACHES]→ Customer |
| Coupon | coupon_id · value · expires_at · redeemed_at | -[ISSUED_TO]→ Customer · -[FROM]→ Campaign |
2.5 운영/외부 (5)
| 클래스 | 핵심 속성 | 주요 관계 |
|---|---|---|
| SocialSignal | date · keyword · source(네이버/구글/X/인스타/올영) · volume · sentiment | (외부) |
| WeatherSignal | date · region · temp_c · precipitation_mm · pm10 | (외부, KMA·대기질) |
| EconomicSignal | date · indicator(환율·물가·고용) · value | (외부, 통계청·한국은행) |
| CompetitorSignal | date · competitor(아모레/아이모/유한킴벌리) · event_type · text | (외부) |
| Compliance | rule_id · topic(약관/마케팅동의/PII/연령/미성년화장품) · enforced_by | -[GOVERNS]→ Customer |
3. 핵심 관계 (예상 ~500K edges)
엣지 추정:
- Customer × OrderTransaction (~50K)
- Customer × CartEvent / SearchEvent / ReviewRating (~150K)
- ChannelSellThrough × Product × Channel (~80K)
- OrderTransaction × Product (~150K, 평균 4 SKU/주문)
- Product × Category × Brand × BU (~10K)
- 외부 시그널 (~50K daily snapshots)
- 기타 (~10K)
→ 약 500K edges
4. openCypher 예시 쿼리
4.1 S1 시맨틱 검색 — Beauty BU 신상 + 회원 매칭
MATCH (b:Brand {name: '숨37'})-[:OWNS]->(p:Product)
WHERE p.attributes.is_new = true
MATCH (c:Customer)-[:PLACED]->(o:OrderTransaction)-[:CONTAINS]->(p2:Product)
-[:OF_BRAND]->(b2:Brand)-[:BELONGS_TO_BU]->(bu:BU {name: 'Beauty'})
WHERE o.order_at > datetime() - duration('P90D')
RETURN p.sku, p.name, count(DISTINCT c) AS potential_buyers
ORDER BY potential_buyers DESC LIMIT 20