RDFLib 라이브러리를 사용하여 Graph 생성

codeblue·2024년 2월 1일
0

Ontology

목록 보기
3/3
post-thumbnail

1. RDFLib

RDFlib : RDF 작업을 위한 python 라이브러리

💡 RDFlib 에는 RDF/XML, Turtle, N-Triples 및 JSON-LD와 같은 RDF 직렬화에 대한 구문 분석기/직렬 변환기가 포함되어 있음

이 작업을 할 때가 한창 엘리멘탈 영화가 인기많던 시절이라, 4가지 원소에 대해서 그래프를 생성했었다.

자세한 설명은 아래 내용을 참고


2. python code로 Graph 생성

전체 code

## 라이브러리
from rdflib import Graph
from rdflib.namespace import RDF, RDFS, Namespace, OWL

## Graph 타입의 g 객체 생성
g=Graph()

## IRI를 원하는 키워드로 쓸 수 있도록 bind를 사용, g에 저장 
g.bind("disney", Namespace("http://disney_elemental.com/"))

## 기본이 되는 IRI를 리턴하는 함수
def get_namespace() -> Namespace:
    return Namespace("http://disney_elemental.com/")

## class 타입의 객체 5가지를 생성 ex) 원소, 불, 물, 공기, 흙
g.add((get_namespace().elemental, RDF.type, OWL.Class))
g.add((get_namespace().fire, RDF.type, OWL.Class))
g.add((get_namespace().water, RDF.type, OWL.Class))
g.add((get_namespace().air, RDF.type, OWL.Class))
g.add((get_namespace().earth, RDF.type, OWL.Class))

## class 객체 간의 관계 설정 (include)
g.add((get_namespace().include, RDF.type, OWL.ObjectProperty))
g.add((get_namespace().include, RDFS.domain, get_namespace().elemental))
g.add((get_namespace().include, RDFS.range, get_namespace().fire))
g.add((get_namespace().include, RDFS.range, get_namespace().water))
g.add((get_namespace().include, RDFS.range, get_namespace().air))
g.add((get_namespace().include, RDFS.range, get_namespace().earth))

## owl 형식으로 g 그래프 저장
g.serialize("./elemental.owl")

code 설명

  1. python에서 Triple 생성
  1. 아래의 그림은 생성한 class를 그림으로 표현한 것
  • Class 5개가 생성되었다.
  • 각 Class를 식별하는 IRI는 고유한 것이므로 모두 다르다.
  1. Class 객체 간의 관계 설정 후 그래프 저장

  2. 아래의 그림은 relation을 포함해 생성한 그래프를 그림으로 표현한 것

  1. Open with Protégé
  • 디렉토리를 열어 생성된 파일을 Protege에서 실행해보면 다음과 같이 그래프가 생성된 것을 확인 가능하다.

🚩 참고하면 좋은 사이트 🚩

  1. RDF 개념 정리
  1. RDFLib 그래프 생성 참고
  1. python에서 protégé owl 파일 수정
  1. RDFLib 사용해 데이터 다루기

0개의 댓글

관련 채용 정보