40분
RDF 트리플 만들기 (Python rdflib)
RDF & 트리플의 세계
RDF 트리플 만들기 (Python rdflib)
온톨로지 & 시맨틱웹 > RDF & 트리플의 세계
학습 목표
rdflib으로 RDF 트리플을 프로그래밍 방식으로 생성할 수 있다 URIRef, Literal, BNode을 적절히 사용할 수 있다
Python rdflib으로 RDF 그래프 생성 실습
학습 목표
- Python rdflib 라이브러리를 사용하여 RDF 그래프를 생성할 수 있다
- URIRef, Literal, BNode을 구분하여 사용할 수 있다
- Turtle, JSON-LD, N-Triples 등 다양한 포맷으로 직렬화할 수 있다
- RDFS 어휘를 사용하여 스키마를 정의할 수 있다
사전 준비
에디터 로딩 중...
Step 1: 기본 트리플 생성
에디터 로딩 중...
Step 2: Blank Node 사용
에디터 로딩 중...
Step 3: RDFS 스키마 정의
에디터 로딩 중...
Step 4: 다양한 포맷으로 직렬화
에디터 로딩 중...
Step 5: 그래프 쿼리 (기본)
에디터 로딩 중...
Step 6: 파일에서 그래프 로드
에디터 로딩 중...
실습 과제
위 코드를 단계별로 실행하면서:
- 자신의 정보로 트리플 5개 이상 추가하세요
- 친구 2명을 추가하고 foaf:knows로 연결하세요
- 좋아하는 도시를 BNode 주소로 추가하세요
- Turtle과 JSON-LD로 직렬화하여 비교하세요
- g.triples()로 "Person 타입인 모든 노드"를 조회하세요
rdflib 핵심 API 정리
| API | 설명 |
|---|---|
Graph() | 빈 RDF 그래프 생성 |
g.add((s, p, o)) | 트리플 추가 |
g.remove((s, p, o)) | 트리플 삭제 |
g.triples((s, p, o)) | 패턴 매칭 (None=와일드카드) |
g.value(s, p) | 특정 속성의 값 1개 반환 |
g.subjects(p, o) | 조건에 맞는 Subject 반환 |
g.objects(s, p) | 조건에 맞는 Object 반환 |
g.serialize(format=) | 직렬화 (turtle, json-ld, nt, xml) |
g.parse(source, format=) | 파일/URL에서 로드 |
URIRef("...") | URI 리소스 |
Literal(val, datatype=) | 리터럴 값 |
Literal(val, lang=) | 언어 태그 리터럴 |
BNode() | 빈 노드 |
Namespace("...") | 네임스페이스 |
g.bind("prefix", ns) | 접두어 등록 |
에디터 로딩 중...
힌트 보기
- • Literal(27, datatype=XSD.integer)로 정수 타입 지정
- • Literal('서울', lang='ko')로 언어 태그 추가
- • g.value(subject, predicate)는 값 1개만 반환 (없으면 None)
- • g.subjects(predicate, object)는 제너레이터 반환
- • g.serialize()에 destination 파라미터로 파일 저장 가능
정답 보기
에디터 로딩 중...