아래 코드는 Turtle(터틀)이라는 표기법입니다.
RDF 트리플(주어·술어·목적어)을 사람이 읽기 쉽게 줄여 쓴 포맷이고, 다음 4가지만 알면 흐름이 잡힙니다.
RDF 트리플(주어·술어·목적어)을 사람이 읽기 쉽게 줄여 쓴 포맷이고, 다음 4가지만 알면 흐름이 잡힙니다.
@prefix : <...> .— "이 문서에서:는 저 URL의 줄임말로 쓴다"는 약속 (네임스페이스).:WTG03 a :Turbine—a는 "~의 인스턴스다 (rdf:type)"의 줄임말.;세미콜론 — "같은 주어를 또 쓰지 않고 다음 속성을 이어 쓴다"는 약속."3"^^xsd:int— 따옴표 안 값의 데이터 타입을 명시 (여기선 정수).owl:Class— OWL(Web Ontology Language)은 W3C 표준 온톨로지 언어. ":Turbine은 클래스다"를 선언하는 표준 표기. 자세한 OWL 문법은 Topic 16에서 다룹니다 — 지금은 "클래스를 선언하는 공식 방식" 정도로만 알고 가면 충분합니다.
@prefix : <http://pp.com/wtg/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
# ① Class 선언 — "이런 종류가 있다"
:Turbine a owl:Class .
:Gearbox a owl:Class .
:Sensor a owl:Class .
# ② Instance — "구체적인 한 사례"
:WTG03 a :Turbine ;
:ratedPower "3"^^xsd:int ; # ④ Datatype: 정격출력(MW)
:installedDate "2021-05-20" ; # ④ Datatype: 설치일
:hasPart :Gearbox_03 . # ③ Object: 기어박스와 연결
:Gearbox_03 a :Gearbox ;
:monitoredBy :VibSensor_03 . # ③ Object: 진동센서와 연결
:VibSensor_03 a :Sensor ;
:vibrationLevel "4.2" . # ④ Datatype: 진동 측정값
그래서 — 위 Turtle은 무엇을 말한 건가요?
현장에서 나오는 한 문장을 4가지 빌딩블록으로 쪼개 올린 것입니다. 줄마다 자연어 ↔ 코드 대응을 따라가 보세요.
🗣️ 원문 (자연어)
「3호기 WTG03 터빈은 기어박스를 부품으로 갖고, 그 기어박스는 진동센서가 감시합니다. 센서가 측정한 진동값은 4.2입니다.」
자연어에서 뽑은 말
Turtle 한 줄
① Class터빈·기어박스·센서라는 종류가 있다
:Turbine a owl:Class .
:Gearbox a owl:Class .
:Sensor a owl:Class .
:Gearbox a owl:Class .
:Sensor a owl:Class .
② Instance3호기 WTG03은 터빈이다
:WTG03 a :Turbine ;
④ Datatype정격출력이 3MW다
:ratedPower "3"^^xsd:int ;
④ Datatype설치일이 2021-05-20이다
:installedDate "2021-05-20" ;
③ Object기어박스를 부품으로 갖는다
:hasPart :Gearbox_03 .
② InstanceGearbox_03은 기어박스이다
:Gearbox_03 a :Gearbox ;
③ Object진동센서가 감시한다
:monitoredBy :VibSensor_03 .
② InstanceVibSensor_03은 센서이다
:VibSensor_03 a :Sensor ;
④ Datatype측정한 진동값이 4.2다
:vibrationLevel "4.2" .
자연어 한 문장 → 빌딩블록으로 쪼개기 → Turtle 줄로 옮기기. 이 흐름이 온톨로지 모델링의 기본 동작입니다.