40

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: 파일에서 그래프 로드

에디터 로딩 중...

실습 과제

위 코드를 단계별로 실행하면서:

  1. 자신의 정보로 트리플 5개 이상 추가하세요
  2. 친구 2명을 추가하고 foaf:knows로 연결하세요
  3. 좋아하는 도시를 BNode 주소로 추가하세요
  4. Turtle과 JSON-LD로 직렬화하여 비교하세요
  5. 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 파라미터로 파일 저장 가능
정답 보기
에디터 로딩 중...