링크 유형 생성
Ontology Manager의 도우미에서 링크 유형(Link type)의 관계 방식, 키와 이름을 정합니다. 도우미를 중간에 나왔다면 상세 화면에서 관계, 키와 API 이름을 모두 완성해야 저장할 수 있습니다.
생성 도우미 열기
오른쪽 위 New의 Link type을 선택하거나, 왼쪽 Resources의 Link types에서 New link type을 선택합니다.
연결할 객체 유형(Object type)의 Overview 링크 그래프에서 Create new link type으로 시작할 수도 있습니다.
관계 방식
| 선택 | 기본 구성 |
|---|---|
| Object type foreign keys | 일대일 또는 다대일 관계의 외래 키(Foreign key)와 대상 기본 키(Primary key)를 선택합니다. |
| Join table dataset | 다대다 관계의 기본 키 쌍을 담는 데이터셋(Dataset)을 연결합니다. |
| Backing object type | 중간 객체 유형을 관계의 저장 단위로 사용하여 추가 메타데이터를 담습니다. |
카디널리티(Cardinality)는 양쪽에 한 객체 또는 여러 객체가 연결되는 형태를 나타냅니다. 일대다는 반대 방향에서 보면 다대일이며, 다대다는 양쪽 모두 여러 상대를 가질 수 있습니다. 일대일은 의도한 관계를 나타내지만 실제 일대일 유일성을 강제하지는 않습니다.
외래 키 기반 링크
가상의 Aircraft에서는 Tail Number가 기본 키이고 Flight에서는 Flight Tail Number가 배정한 항공기를 가리키는 외래 키입니다. 값이 일치하면 두 객체가 연결됩니다.
- Link resources의 오른쪽에서 기본 키를 가진 Aircraft를 선택합니다.
- 왼쪽에서 외래 키를 가진 Flight를 선택합니다. 외래 키가 대상 기본 키와 맞고 속성 자료형도 같으면 도우미가 자동 선택할 수 있습니다.
- Flight의 외래 키로 Flight Tail Number를 선택합니다. Aircraft의 기본 키 Tail Number는 자동 선택됩니다.
- Next로 진행합니다.
조인 테이블 기반 링크
다대다 관계에서는 연결할 양쪽 기본 키의 조합을 담은 조인 테이블(Join table)을 사용합니다.
- Link resources에서 왼쪽 Flight와 오른쪽 Aircraft를 선택합니다.
- 두 기본 키에 해당하는 열이 있는 데이터셋을 선택합니다.
- 각 열을 어느 유형의 기본 키에 연결할지 정합니다. 하나의 열을 양쪽 기본 키에 동시에 매핑할 수 없습니다.
- Next로 진행합니다.
Generate join table을 선택하면 선택한 두 유형의 기본 키에 맞는 스키마로 새 데이터셋을 만들 수 있습니다. 사용자 편집으로 관계를 채우거나 운영 데이터를 나중에 공급하는 경우에 사용할 수 있습니다.
조인 테이블에 독립적으로 저장하는 관계를 사용자 편집 대상으로 구성하는 경로는 이 다대다 링크를 사용합니다. 외래 키에서 계산되는 관계와 중간 객체로 표현한 관계의 편집 위치는 각각의 객체 데이터와 구분합니다.
객체 기반 링크
객체 기반 링크(Object-backed link)는 관계 자체의 메타데이터가 필요한 경우에 사용합니다. 제한 뷰(Restricted view)를 사용할 수도 있습니다.
Aircraft와 Flight 사이에 Flight Manifest라는 중간 유형을 두면 Pilot과 First Mate 같은 추가 속성(Property)을 관계에 저장할 수 있습니다.
먼저 양 끝의 Aircraft와 Flight 유형 및 중간 Flight Manifest 유형을 만듭니다. Flight Manifest 쪽에서 각 끝의 객체 하나를 가리키는 다대일 관계 두 개를 준비합니다. 그 뒤 Backing object type 경로에서 양 끝과 중간 유형을 선택합니다. 중간 객체에 연결하는 링크가 여러 개이면 사용할 링크를 각각 선택합니다.
기존 링크 변환
필요한 중간 유형과 두 연결을 먼저 만든 뒤 기존 링크를 엽니다. Configuration에서 조인 방식을 Object type으로 바꾸고 Update link type to object-backed link type에서 중간 객체와 연결 링크를 지정합니다. Update to object-backed로 변경합니다.
Object Explorer, Vertex와 Workshop에서 객체 기반 링크를 볼 수 있습니다. 링크를 선택하면 중간 객체의 속성을 확인하며 Vertex의 링크 제목은 중간 객체의 제목을 사용합니다.
양쪽 이름과 API 이름
Link type names에서 각 쪽의 표시 이름을 지정합니다. Aircraft 쪽 이름은 Flight에서 Aircraft로 향하는 관계를 뜻하므로 Assigned Aircraft가 될 수 있습니다. 같은 정의의 반대쪽 이름도 함께 구성합니다.
API 이름은 표시 이름에서 자동 생성되며 바꿀 수 있습니다. Aircraft 쪽이 assignedAircraft라면 TypeScript v1의 flight 객체에서 flight.assignedAircraft.get()으로 해당 방향을 조회하는 예가 됩니다.
링크 API 이름은 소문자로 시작하고 영숫자로 구성하며 길이는 1~100자입니다. 같은 객체 유형에 연결된 링크 유형 사이에서 고유해야 하고 NFKC 정규화를 따라야 하며 예약어를 사용할 수 없습니다.
프로젝트와 저장
프로젝트(Project) 저장 위치를 선택하고 Submit합니다. 아직 온톨로지에 최종 저장한 상태는 아닙니다.
Ontology Manager 오른쪽 위 Save에서 변경을 검토하여 저장합니다.
중복 등록 오류
Phonograph2:DatasetAndBranchAlreadyRegistered가 나타나면 선택한 데이터소스와 브랜치가 다른 링크 유형에 이미 등록되어 있는지 확인합니다. 같은 데이터소스를 다른 링크 유형의 기반으로 중복 등록할 수 없는 경우입니다.