본문으로 건너뛰기

3.1. Semantic Annotator

시맨틱 모듈의 Semantic Annotator을 사용하기 위한 배포 및 활용 과정을 설명합니다.

3.1.1. 개념 및 동작

시맨틱 어노테이터는 시티허브의 코어 모듈에 적재되어 있는 도시 데이터들을 시맨틱 데이터로 변환하여 데이터 간의 관계와 의미를 구축하는 모듈입니다. 시맨틱 데이터의 개념 및 동작에 대해 설명합니다.

3.1.1.1. 스마트시티 데이터 수집

시맨틱 어노테이터는 가장 먼저 스마트시티의 데이터 코어 모듈로부터 데이터를 수집합니다. 아래 그림은 데이터 허브의 데이터 코어로부터 시맨틱 어노테이터가 데이터를 수집하여 변환하기까지의 데이터 흐름을 보여줍니다.

HTTP Controller는 데이터 코어 모듈의 NGSI-LD Broker API를 통해 데이터 허브의 모든 데이터를 수집합니다. 이때, 프로토콜은 HTTP 바인딩을 사용하며 데이터 모델은 NGSI-LD 포맷을 가집니다. 시맨틱 어노테이터 최초 실행시, HTTP Controller는 데이터 허브의 모든 데이터를 조회하여 수집함과 동시에 NGSI-LD Broker API에 가지고 있는 데이터 타입별로 구독을 요청합니다. NGSI-LD Broker API는 데이터 허브에 적재되어 있는 데이터가 업데이트 될 때마다 HTTP Controller에게 데이터 업데이트 통지를 전달함으로써 시맨틱 어노테이터는 업데이트되는 데이터를 실시간으로 수집할 수 있습니다.

3.1.1.2. 어노테이터 수행1 - 최초 동작

시맨틱 어노테이터가 스마트시티 데이터를 수집하고 나면, 실제 annotation 작업을 수행합니다. 시맨틱 어노테이터는 최초 동작과 상시 동작으로 시퀀스가 나누어집니다. 최초 동작 시에는 데이터 코어에 적제되어 있는 모든 entity를 조회하여 시맨틱 어노테이터(주석)를 수행하고, 이후 상시 동작 시에는 데이터 코어에 업데이트 되는 엔티티에 한해서 시맨틱 어노테이터를 수행합니다.

위 그림은 시맨틱 어노테이터가 최초 실행되어 시맨틱 주석을 수행할 때의 실행 흐름을 보여주고 있습니다. 데이터 코어에 적재되어 있는 데이터에 대한 모든 접근은 NGSI-LD Broker API를 통해 이루어집니다. 시맨틱 어노테이터 최초 실행 시에는 NGSI-LD Broker API와 HTTP 통신을 통해 데이터 코어에 적재되어 있는 모든 엔티티를 조회하고, Http Controller는 조회한 데이터 코어 데이터를 리소스에 적재합니다.

한편 ATCI를 통해 온톨로지 기준 명세에 해당하는 온톨로지 템플릿을 사전에 정의한 후 시맨틱 어노테이터의 Template에 저장하고 이를 분석하여 템플릿에 맞게 리소스 DTO를 생성합니다. Correlation Seeker는 리소스 DTO의 구조에 맞게 데이터 코어 리소스를 매핑해 주는 역할을 함으로써 반 자동 어노테이터가 수행 가능한 환경을 만들어줍니다. Annotation은 온톨로지 템플릿을 기반으로 시맨틱 주석(변환)의 기준점을 생성하고 리소스 DTO의 데이터를 활용하여 반 자동 어노테이션을 수행합니다. 위 그림은 ATCI에서 도출된 Ontology Template과 데이터 코어 간의 스키마 관계를 도출한 도식도입니다. Annotation은 정의된 주석(변환) 기준에 따라 트리플 생성 후 트리플 데이터베이스에 저장합니다.

3.1.1.3. 어노테이터 수행2 - 상시 동작

아래 그림은 시맨틱 어노테이터가 상시 실행되어 시맨틱 주석을 수행할 때의 실행 흐름을 보여주고 있다. 시맨틱 어노테이터 상시 실행은 최초 실행에서 이미 데이터 코어에 적재되어 있는 모든 엔티티를 주석화하여 트리플 데이터베이스에 저장해놓은 환경에서 시작됩니다.

Http Controller는 먼저 데이터 코어에 저장되어 있는 모든 종류의 엔티티 타입에 대해 업데이트되는 데이터에 대한 알람을 구독받을 수 있도록 NGSI-LD Broker API에 Subscription을 생성합니다. 데이터 코어에 적재되어 있는 데이터가 업데이트될 때 마다 NGSI-LD Broker API는 시맨틱 어노터이터로 구독을 전송하고 Http Controller는 이를 전달받아 리소스에 데이터를 적재합니다. 그 다음은 시맨틱 어노테이터 최초 실행 시와 동일하게 Correlation Seeker가 리소스 DTO 구조에 맞게 리소스를 매핑합니다. 시맨틱 쿼리문인 SPARQL로는 업데이트가 불가능하기 떄문에 Annotation은 트리플 데이터베이스에 업데이트할 트리플 데이터를 먼저 삭제하고, 시맨틱 주석화 작업을 수행한다. Validation은 업데이트 할 시맨틱 데이터를 검증하여 통과 시 트리플데이터베이스에 적재합니다.

3.1.2. 시스템 활용

시맨틱 어노테이터 설계 시, 상황에 따른 활용 방안 및 시퀀스에 대해 서술합니다.

3.1.2.1. 새로운 온톨로지 템플릿 활용

시맨틱 어노테이터 설계 및 활용 시, 기존에 사용중인 온톨로지 템플릿 외 새로운 온톨로지 템플릿을 생성하여 동작하는 환경에 대해 설명합니다. 아래 그림은 새로운 온톨로지 템플릿 작성 후에 변경이 이루어져야 하는 시맨틱 어노테이터 요소들을 보여주고 있습니다.

새로운 온톨로지 템플릿 작성은 ATCI를 통해 이루어집니다 (ATCI 사용 가이드 참조). 먼저, ATCI에서 도출된 template.json 파일들을 Template에 적재합니다. 다음으로 적재된 Template의 온톨로지 템플릿을 참조하여 Resource DTO를 작성합니다. 이 때, Resource DTO는 온톨로지 템플릿의 Data-Property에 포함되어 있는 트리플 데이터 구조와 같이 작성되어야 하며, setter들도 포함되어야 합니다. 마지막으로 Correlation Seeker에서 데이터 코어에 적재된 데이터 구조를 가진 Resource를 Resource DTO로 매핑합니다. 이 때, 매핑 필드의 두 번째 요소가 Resource DTO를 가집니다.

3.1.2.2. 새로운 시티데이터 활용

데이터코어에 적재되는 스마트시티 데이터가 기존과 다른 리소스 구조를 가지는 환경에서 시맨틱 어노테이터의 동작에 대해 설명합니다. 다음 그림은 새로운 시티데이터 활용 시 변경이 이루어져야 하는 시맨틱 어노테이터 요소들을 보여주고 있습니다.

먼저, 데이터코어에 적재되어 있는 시티데이터의 구조에 맞게 Resource를 작성합니다. 이 때, Resource에는 getter들도 포함되어야 합니다. 다음으로 Correlation Seeker에서 작성한 Resource 구조를 온톨로지 템플릿 구조에 맞게 작성된 Resource DTO에 매핑합니다. 이 때, 매핑 필드의 첫 번째 요소가 Resource를 가집니다.

3.1.3. 배포

Semantic Annotator는 Eclipse나 IntelliJ와 같은 Java IDE에서 실행할 수 있는 Java Maven 프로젝트입니다. 프로젝트 배포는 아래 가이드 되어 있는 설정을 따릅다.

3.1.3.2. 종속성

  • Java 버전: 1.8
  • Maven Dependencies: “pom.xml”의 <dependencies>에 반드시 포함되어야 하는 종속성 목록
    • apache-jena-libs (version: 3.15.0)
    • org.semanticweb.hermit (version: 1.3.8.4)
      • NOTE: Semantic Validator와 함께 구동 시 필요
  • 외부 Jar Files: 본 파일은 maven repository에서 사용될 수 없으며 빌드 경로에 수동으로 추가해주어야 합니다. 본 파일은 "project/lib/"에서 찾거나 다음 링크에서 다운로드 가능합니다. ([http://vos.openlinksw.com/owiki/wiki/VOS/VOSDownload#Jena%20Provider](http://vos.openlinksw.com/owiki/wiki/VOS/VOSDownload%23Jena Provider))
    • virt_jena3.jar
    • virtjdbc4.jar
  • NGSI-LD Broker API와 연결: 데이터 허브의 데이터 코어에 저장되어 있는 데이터에 접근하려면 NGSI-LD Broker API를 통해 조회, 업데이트된 데이터 통지가 가능합니다. NGSI-LD Broker API와는 HTTP 통신을 통해 연결이 가능하며, Annotator 동작을 위해서는 반드시 NGSI-LD Broker API가 가동되고 있어야 합니다. HTTP 통신을 위해 NGSI-LD Broker API가 가동되는 Server IP와 개방포트가 필요합니다.
  • Virtuoso Triple Store와 연결: 본 프로젝트에서는 Annotator가 생성한 triple data를 저장하기 위해 Virtuoso Triple Store를 사용한다. Virtuoso와 연결을 위해서는 설치 및 가동중인 Virtuoso Triple Store의 호스트 URL, 사용자 이름 및 패스워드가 필요하다.

3.1.3.3. 설정

  • NGSI-LD Broker API와 연결을 위한 NGSI-LD Broker API 가동 Server IP 및 개방포트 설정은 project/src/main/java/com/semantic/annotator/configuration/Configuration.java에서 한다.
Property 설정값 sample설명
DATA_CORE_URLhttp://172.20.0.144:8080NGSI-LD Broker API IP, Port
SEMANTIC_API_URLhttp://172.20.0.119:8080/semantic/api/v1semantic API URL
  • Virtuoso Triple Store와 연결을 위한 호스트 URL, 사용자 이름 및 패스워드 설정은 project/src/main/java/com/semantic/annotator/annotation/Annotator.java에서 한다.

    Property 설정값 sample설명
    urljdbc:virtuoso://172.20.0.119:1111호스트 URL
    dbUserdba기본 사용자 이름
    dbPassdba기본 사용자 패스워드

3.1.3.4. 배포

  • NOTE: 본 배포 가이드는 Window에서 Eclipse IDE를 대상으로 작성되었으므로, 다른 환경 및 플랫폼과 다를 수 있음

3.1.3.4.1. 프로젝트 import

  • File>Import>Maven>Existing Maven Projects
  • 2.2 참조하여 citydatahub_semantics 다운로드 후 semantic annotator 폴더 import

3.1.3.4.2. 외부 jar 종속성 추가

  • project/lib 내부의 jar 파일 혹은 수동 다운로드를 통해 jar 파일 추가 (3.1.1.2 종속성 참조)
  • Eclipse에서 프로젝트에 마우스 오른쪽 버튼으로 클릭하고 Build Path>Configure Build Path>Java Build Path로 이동
  • 라이브러리 탭에서 빌드 경로에 현재 추가되어 있는 jar 표시
  • 오른쪽에서 “Add External Jars” 클릭 후 lib 디렉토리를 찾아 안에 있는 jar 파일 선택
  • “Apply and Close” 클릭

3.1.3.4.3. 어플리케이션 실행

  • 프로젝트의 AnnotatorApplication.java파일을 오른쪽 클릭을 통해 Run As>Java Application으로 Semantic Annotator 사용 및 실행이 가능합니다.
  • HttpController를 통해 두가지 기능을 수행합니다.
    • createSubscription(): 새로 생성 혹은 업데이트되는 entity가 생기면 notification을 받을 수 있도록 모든 entity 타입에 대해 subscription을 생성합니다.
    • getEntities(): 데이터 코어에 저장되어 있는 모든 entity와 새로 생성 혹은 업데이트되는 entity를 모두 조회하여 Semantic Annotation을 수행합니다.

3.1.4. 코드 구성

Semantic Annotator 프로젝트의 project/src/main/java/com/semantic/annotator 내부에 있는 패키지 및 파일들에 대해 설명합니다.

template

반 자동 어노테이터 수행이 가능하도록 ATCI를 통해 생성된 ontology template을 해당 폴더에 위치

resource

데이터 코어에 저장되어 있는 데이터에 대한 스마트시티 데이터 스키마를 resource화 하여 해당 폴더에 위치

resourceDTO

ontology template의 data-properties에 맞게 구조 및 이름 등을 맞춘 resource들ㄹ을 해당 폴더에 위치

correlationSeeker

ATCI가 생성한 template을 사용하여 인덱스 순으로 반 자동 어노테이터를 수행하기 위하여, resource에 맞게 저장된 데이터들을 resourceDTO에 매핑하는 코드 파일들

controller

  • HttpController: NGSI-LD Broker API를 통해 데이터 코어로부터 데이터 조회, 새로 생성 혹은 업데이트되는 데이터 통지를 통해 Annotation으로 데이터 전달 및 subscription 생성
  • SubscriptionList: 새로 생성 혹은 업데이트 되는 데이터들을 통지받기 위한 entity 타입별 subscription 리스트

annotation

  • Annotator: template에 맞게 반자동 어노테이터를 수행하고 validator를 거친 후 virtuoso에 triple 데이터 저장
  • XSDTypeMaker: data property의 타입을 XSD 데이터 타입으로 매핑함
  • 그외 ****Annotation 파일들**: Annotator에서 각각의 타입별 수행을 위해 해당하는 template을 불러와 그래프 이름을 추출하고, resourceDTO와 함께 Annotator로 전달
  • validation: validator 가이드 참조