소시오그램
소시오그램이란
**소시오그램(sociogram)**은 집단 내부의 선택, 거부, 동맹 관계의 망을 시각화합니다. 누가 누구를 좋아하는지, 누가 고립되어 있는지, 어디서 파벌이 형성되는지를 보여줍니다. Jacob Moreno가 1934년 집단 치료의 임상 도구로 이 방법을 소개한 이후, 교실 교사(배제와 따돌림 감지), HR 팀(비공식 영향력 매핑), 조직 연구자들이 이를 채택하였습니다. 한 사람의 외부 환경을 중심으로 하는 에코맵과 달리, 소시오그램은 집단의 모든 구성원을 대칭적으로 취급합니다.
Schematex는 노드 역할과 엣지 유형에 대해 **모레노(1934) 소시오메트리 표기 방식**을 따르며, 감정가(valence), 방향, 가중치에 대한 현대 사회 네트워크 분석 표기법으로 확장됩니다. 이 페이지는 현재 파서가 허용하는 내용을 설명합니다.
1. 첫 번째 소시오그램
가장 작은 유용한 소시오그램: 네 사람, 세 가지 관계 유형.
사용법의 80%를 커버하는 네 가지 규칙:
sociogram키워드로 시작하고, 선택적으로 따옴표로 묶인 제목을 사용합니다.- 각 사람은 노드입니다.
id [label: "…"]로 명시적으로 선언하거나, 엣지에 처음 등장할 때 자동으로 생성됩니다. - 엣지 연산자로 두 노드를 연결합니다.
<->(상호),->(일방향),-x>(거부),-.-(중립). §3을 참조하십시오. - 선택적으로 groups 및 config 줄을 선언하여 레이아웃과 색상을 제어합니다.
주석은 해당 줄의 맨 앞
#으로 시작해야 합니다.
2. 노드
노드 줄의 형식은 id [attr: value, …]입니다. 엣지에서 처음 참조될 때도 노드가 암묵적으로 생성되지만, 명시적 선언을 통해 레이블, 그룹, 역할을 설정할 수 있습니다.
ID 규칙. [a-zA-Z][a-zA-Z0-9_-]* 형식을 따라야 합니다. ID는 내부적으로 사용되며, label: 속성으로 표시 이름을 설정합니다.
노드 속성:
| 속성 | 값 | 효과 |
|---|---|---|
label: "…" | 따옴표 문자열 | 표시 이름 (기본값은 ID) |
group: id | 그룹 ID | 색상 적용을 위해 노드를 그룹에 연결 |
role: … | star, isolate, bridge, neglectee, rejected | 명시적 소시오메트리 역할 주석 |
size: … | small, medium, large | 노드 크기 재정의 |
3. 엣지
엣지 줄의 형식은 leftId OP rightId이며, 선택적으로 [label: "…", weight: N]을 추가합니다. 두 ID는 아직 선언되지 않은 경우 자동으로 노드로 등록됩니다.
3.1 방향 및 감정가
| 연산자 | 방향 | 감정가 | 의미 |
|---|---|---|---|
A -> B | 일방향 | 긍정 | A가 B를 선택 |
A <- B | 일방향 | 긍정 | B가 A를 선택 (B -> A와 동일) |
A <-> B | 상호 | 긍정 | 서로 선택 |
A -- B | 비방향성 | 긍정 | 관계가 있으나 방향 미기록 |
A -x> B | 일방향 | 부정 | A가 B를 거부 |
A <x- B | 일방향 | 부정 | B가 A를 거부 |
A <x-> B | 상호 | 부정 | 상호 거부 |
A -x- B | 비방향성 | 부정 | 갈등, 방향 미상 |
A -.> B | 일방향 | 중립 | A가 B에 무관심 |
A <.-> B | 상호 | 중립 | 상호 무관심 |
A -.- B | 비방향성 | 중립 | 중립적 관계 |
3.2 가중치 / 강도
가중치가 높을수록 선이 굵어집니다. 약식 연산자를 사용하거나 [weight: N]으로 명시적으로 재정의합니다.
| 가중치 | 약식 | 방향 | 의미 |
|---|---|---|---|
| 2 (기본값) | -> <-> -- -x> -.- | 모두 | 표준 연결 |
| 3 | ==> <== <==> === | 일방향 / 상호 / 비방향성 | 강함 |
| 4 | ===> <=== <===> | 일방향 / 상호 | 매우 강함 |
| 사용자 정의 | [weight: N] | — | 임의의 정수 |
3.3 엣지 레이블
A -> B [label: "best friend"] — 레이블이 연결선에 표시됩니다.
4. 그룹
group 블록은 노드를 색상 및 레이아웃 클러스터링을 위한 명명된 하위 그룹으로 수집합니다.
그룹 문법:
group id [label: "…", color: "#hex"]— 그룹 헤더 줄.- 구성원 줄은 그 아래에 최소 4칸 들여쓰기, 줄당 하나의 노드.
- 들여쓰기가 없는 줄(또는 다음
group)이 현재 그룹을 닫습니다. - 구성원에 자체 속성 지정 가능:
anna [label: "Anna K.", size: large].
인라인으로도 할당할 수 있습니다: alice [group: girls].
5. 설정
config: 줄로 레이아웃 및 시각적 인코딩을 조정합니다. 각 항목은 독립된 줄입니다.
| 설정 키 | 값 | 기본값 | 효과 |
|---|---|---|---|
layout | circular, force-directed, concentric | circular | 배치 알고리즘 |
sizing | uniform, in-degree, betweenness | uniform | 지표 기반 노드 크기 |
coloring | default, group, role | default | 노드 색상 방식 |
highlight | 쉼표 목록: stars, isolates, cliques | stars,isolates | 강조 표시할 패턴 |
레이아웃 참고:
circular— 노드를 원 위에 균등 배치. 소규모 집단(≤15명)에 적합.force-directed— 스프링 모델; 클러스터가 자동으로 형성됨. 뚜렷한 하위 집단이 있는 중간 규모 집단에 적합.concentric— 내부 링에 인-디그리(in-degree)가 높은 노드 배치. 핵심-주변부 구조 표현에 적합.
Circular — 균일한 링 배치; 모든 노드가 동등하게 표시됨. 소규모 긴밀한 집단에 적합.
Force-directed — 스프링 물리 시뮬레이션이 연결된 노드를 가깝게, 연결되지 않은 노드를 멀리 밀어냅니다. 하위 집단이 자연스럽게 클러스터를 형성합니다.
Concentric — 인-디그리(in-degree) 순으로 정렬; 중심성이 높은 노드는 내부 링에, 주변부 노드는 외부 링에 배치됩니다.
6. 소시오메트리 역할
파서는 노드에 역할 주석을 저장합니다. 렌더러는 이를 사용하여 시각적 배지를 적용합니다. star는 별 마커, isolate는 점선 테두리 등입니다.
| 역할 | 의미 |
|---|---|
star | 많은 사람에게 선택받는 중심 인물 (높은 인-디그리) |
isolate | 연결이 전혀 없음 |
neglectee | 타인에게 다가가지만 선택받지 못함 |
rejected | 여러 구성원에게 거부 엣지를 받음 |
bridge | 별개의 두 클러스터를 연결 |
7. 레이블 및 주석
- 제목:
sociogram "Study group"— 첫 번째 줄에만. - 노드 레이블:
alice [label: "Alice K."]. - 그룹 레이블:
group boys [label: "Boys"]. - 엣지 레이블:
alice -> bob [label: "lab partners"]. - 주석: 줄의 앞부분(선행 공백 이후)
#.
8. 예약어 및 이스케이프
줄 시작 예약어: sociogram (헤더), group, config:.
예약 연산자 토큰 — ID 내에 다음 시퀀스 사용을 피하십시오: ->, <-, <->, --, ===, ==>, <==, <===>, -x>, <x-, -x-, <x->, -.>, <.->, -.-.
공백이 포함된 문자열은 label: 및 color: 값에서 큰따옴표로 묶어야 합니다.
9. 흔한 실수
| 작성한 내용 | 파서 메시지 | 수정 방법 |
|---|---|---|
한 그룹 줄에 tom; jack; mike | tom;이 ID 정규식에 실패 — 조용히 무시됨 | 줄당 하나의 노드, 각각 ≥4칸 들여쓰기 |
| 그룹 구성원 2칸 들여쓰기 | 그룹 구성원으로 처리되지 않음 (파서는 ≥4칸 요구) | 4칸 이상 들여쓰기 사용 |
alice <> bob | 일치하는 연산자 없음 — 엣지로 파싱되지 않음 | 상호 긍정에 <-> 사용 |
config: layout = grid | 알 수 없는 값이 조용히 무시됨; 레이아웃이 circular로 유지 | circular, force-directed, concentric 중 하나 사용 |
ID에 공백이 있는 노드: dr park | 파서가 dr을 ID로, park를 독립 토큰으로 처리 | 밑줄 사용: dr_park [label: "Dr. Park"] |
10. 문법 (EBNF)
document = header (blank | comment | config | group-block | edge | node)*
header = "sociogram" ( WS quoted-string )? NEWLINE
quoted-string = '"' any-char-but-quote* '"'
config = "config:" WS key WS "=" WS value NEWLINE
key = "layout" | "sizing" | "coloring" | "highlight"
group-block = "group" WS id ( "[" group-attrs "]" )? NEWLINE
( INDENT≥4 member-line )*
member-line = id ( "[" node-attrs "]" )? NEWLINE
group-attrs = group-attr ("," group-attr)*
group-attr = "label:" quoted-string | "color:" quoted-string
node = id ( "[" node-attrs "]" )? NEWLINE
node-attrs = node-attr ("," node-attr)*
node-attr = "label:" quoted-string
| "group:" id
| "role:" role
| "size:" ("small" | "medium" | "large")
edge = id WS op WS id ( "[" edge-attrs "]" )? NEWLINE
edge-attrs = edge-attr ("," edge-attr)*
edge-attr = "label:" quoted-string | "weight:" number
op = // positive
"<===>" | "===>" | "<==="
| "<==>"|"==>"|"<=="
| "===" | "<->" | "->" | "<-" | "--"
// negative
| "<x->" | "-x>" | "<x-" | "-x-"
// neutral
| "<.->" | "-\.>" | "-.-"
role = "star" | "isolate" | "bridge" | "neglectee" | "rejected"
id = [a-zA-Z] [a-zA-Z0-9_-]*
comment = "#" any NEWLINE공식 소스: src/diagrams/sociogram/parser.ts. 이 내용이 파서와 다를 경우 파서가 기준입니다. 이슈를 열어 주십시오.
11. 표준 준수
Schematex 소시오그램은 노드 역할(star, isolate, neglectee) 및 방향적 선택 시맨틱에 대해 모레노(1934) 소시오메트리 표기 방식을 따릅니다. 엣지 연산자 세트는 현대 사회 네트워크 분석 관행(Hanneman & Riddle, 2005)에 따라 감정가(긍정/부정/중립) 및 가중치 레벨로 확장됩니다.
현재 구현된 사항:
- ✅ 방향성, 상호, 비방향성 엣지
- ✅ 긍정, 부정, 중립 감정가 연산자
- ✅ 4단계 가중치 (1–4), 약식 연산자 및
[weight: N] - ✅ 색상이 있는 그룹
- ✅ 노드 역할 선언 (
star,isolate,bridge,neglectee,rejected) - ✅ 세 가지 레이아웃: circular, force-directed, concentric
- ✅ 세 가지 크기 모드: uniform, in-degree, betweenness
- ⏳ 자동 감지 클리크 강조 표시 — 음영 처리된 볼록 껍질 (§13 참조)
- ⏳ 소셜 아톰 뷰 (자아 중심 레이아웃)
참고 문헌:
- Moreno, J.L. (1934). Who Shall Survive? Foundations of Sociometry, Group Psychotherapy and Sociodrama. Beacon House.
- Hanneman, R.A. & Riddle, M. (2005). Introduction to Social Network Methods. UC Riverside.
12. 관련 예제
13. 로드맵
계획 중 — 아직 파싱 불가. 오늘 생성된 DSL에서는 사용하지 마십시오. 파서가 거부하거나 무시합니다.
- 자동 감지 클리크 강조 표시 — 3명 이상의 상호 선택 하위 집단 주변에 음영 처리된 볼록 껍질.
- 브리지 자동 감지 — 명시적 선언 없이 매개 중심성(betweenness centrality)에서
role: bridge를 추론. - 소셜 아톰 뷰 — 지명된 하나의 노드가 중심에 위치하는 자아 중심 레이아웃.
- 상호성 행렬 내보내기 — 다이어그램과 함께 구조화된 표 출력.
더 빠른 구현이 필요하시면 GitHub 이슈에서 추적하십시오.
Found this useful?
Schematex is free, fully open source, and zero-dependency. A star helps other developers discover it.