Java/RDF&Jena
[RDF4J] 설치 및 사용법
1. RDF4J 설치 방법 https://rdf4j.org/download/#rdf4j-35 링크 접속 1) RDF4J 3.6.3 SDK를 다운로드 2) 압축 파일 해제 3) .war 파일 Eclipse로 Import 2. Tomcat Server 8.0 설치 현재 테스트한 톰캣 버전은 8.0.36 버전이다. # 톰캣 서버에 꼭 rdf4j-server와 rdf4j-workbench 2개의 .war 파일이 동작해야 정상적으로 동작한다. 3. RDF4J 서버와 워크벤치 가동 http://localhost:8080/rdf4j-workbench/ 링크를 통해 워크벤치 웹페이지에 접속해본다. 위 워크벤치에서 Repository를 자유롭게 생성할 수 있고, Repository에 RDF와 같은 Triple을 업로드하..
[Ontology] 온톨로지란? 시맨틱 웹의 기초
온톨로지(Ontology)란? 온톨로지(Ontology)란 사람들이 세상에 대하여 보고 듣고 느끼고 생각하는 것에 대하여 서로 간의 토론을 통하여 합의를 이룬 바를, 개념적이고 컴퓨터에서 다룰 수 있는 형태로 표현한 모델로, 개념의 타입이나 사용상의 제약조건들을 명시적으로 정의한 기술이다. 온톨로지는 일종의 지식표현(knowledge representation)으로, 컴퓨터는 온톨로지로 표현된 개념을 이해하고 지식처리를 할 수 있게 된다. 프로그램과 인간이 지식을 공유하는데 도움을 주기 위한 온톨로지는, 정보시스템의 대상이 되는 자원의 개념을 명확하게 정의하고 상세하게 기술하여 보다 정확한 정보를 찾을 수 있도록 하는데 목적이 있다. 온톨로지는 시맨틱 웹을 구현할 수 있는 도구로서, 지식개념을 의미적으로..
Jena TDB CRUD 사용
Jena TDB CRUD 사용 Maven Dependency 추가 org.apache.jena jena-fuseki 1.1.1 org.apache.jena apache-jena-libs pom 2.13.0 Jena용 라이브러리를 pom.xml에 추가해준다. TDB Controller 클래스 생성 public class TDBControll { private Dataset ds; // TDB용 데이터셋을 생성한다. public void TDBConnection(String path) { ds = TDBFactory.createDataset(path); } // TDB에서 온톨로지 또는 모델을 읽어온다. public void loadModel(String modelName, String path) { Mod..
[Jena] Apache Jena TDB란?
TDB란? TDB는 RDF 저장 및 쿼리를 위한 Jena의 구성 요소이며 모든 Jena의 API를 지원함. TDB는 단일 머신에서 고성능 RDF 저장소로 사용될 수 있음. 제공된 명령 줄 스크립트와 Jena API를 통해 TDB 저장소에 액세스하고 관리 할 수 있음. TDB는 트랜잭션을 사용하여 액세스하면 TDB 데이터 세트가 손상되거나 예기치 않은 프로세스 종료나 시스템 충돌로부터 보호된다. TDB 데이터 세트는 한번에 하나의 JVM에서만 직접 액세스 해야함. 그렇지 않으면 데이터가 손상될 수 있음. 여러 애플리케이션 간에 TDB 데이터 세트를 공유하려면 영구 스토리지에 TDB를 사용할 수 있는 SPARQL 서버를 제공하고, http를 통한 쿼리, 업데이트 및 REST 업데이트를 위한 SPARQL 프로..
[RDF] Parse error: Bad character in IRI(space) 해결 방법
Parse error: Bad character in IRI(space) 발생시 Apache Jena Fueski 웹 서버에 Dataset을 생성하고 파일을 업로드할 경우 triple을 계산해서 서버에 반영해야 하는데 위와 같은 에러가 발생할 경우가 있다. 직역하면 IRI에서 (공백)문자가 잘못되었다는 건데, RDF 문서를 보고 뭐가 이상하지 싶었다. 공백은 당연히 있는거 아닌가? 검색도 해봤는데 답이 나오질 않아서 문서를 열고 어디가 잘못된건지 한참 고민하다가 마침내 발견. Prefix를 정의하는 링크 사이에 공백이 들어가 있던 것! 원래대로 공백을 없애주면 해결 됨.
[Jena] Apache Jena Fuseki 리눅스 설치 방법
Apache Jena Fuseki 리눅스 설치 1. SSH access to virtual host VirtualBox (or similar) VM environment와 같은 가상환경에서 설치한다는 가정입니다. $ sudo apt install openssh-server VM은 NAT 네트워크를 사용하기 때문에 VM Environment에서 환경설정->네트워크->NAT->포트포워딩을 선택하고, Rule의 이름을 ssh, 프로토콜=TCP, Host Port=2222, Guest Port=22로 설정한다음 위의 명령어를 터미널에서 실행하면 됩니다. 2. Install Java 8 And Apache Jena Fuseki 아래의 명령어를 터미널에서 실행. $ sudo apt update $ sudo apt ..
Jena SPARQL 사용 방법 및 소스 코드
SPARQL이란? RDF기반 Jena에서 사용하는 쿼리입니다. 기본적으로 이 SPARQL을 사용하기 위해선 RDF의 트리플에 대해서 알고 있어야 합니다. 잘 모르겠다면 아래 두 링크를 확인해주시길 바랍니다. https://narup.tistory.com/2?category=880408 RDF(Resource Description Framework)란 - RDF(Resource Description Framework)는 웹상의 자원의 정보를 표현하기 위한 XML 규격으로 상이한 메타데이터 간의 어의, 구문 및 구조에 대한 공통적인 규칙을 지원하는 기법을 통해 웹상에 존재하는 기계 해.. narup.tistory.com https://narup.tistory.com/3?category=880408 RDF -..
Jena SDB 사용 예제
Jena SDB란? SDB는 다양한 관계형 데이터베이스를 백엔드로 하는 Non-Native 방식의 레파지토리로 Jena의 다양한 제품군 중 하나이다. Jena는 HP Lab에서 개발한 시맨틱웹 어플리케이션 구축을 위한 자바 프레임워크로 RDFS, OWL과 SPARQL을 위한 프로그램 환경을 제공할 뿐만 아니라 규칙 기반의 추론엔진을 포함하고 있다. Jena를 구성하는 프로그래밍을 위한 다양한 API와 SPARQL 쿼리 엔진 외에 중요한 제품으로 레파지토리가 있는데, Jena API를 통한 In-Memory 방식 뿐만 아니라 영속 스토리지 방식의 Non-Native 및 Native 방식의 트리플 레파지토리 모두를 지원한다. Non-Native 방식의 스토리지가 SDB로 Jena API를 통해 여러 관계형 ..
RDF - Jena 예제 및 주로 사용하는 함수 정리
RDF 파일과 Jena를 사용하며 헷갈리는 부분과 Read할때 주로 사용하는 함수를 정리해보았다. RDF용어 정리 RDF:ID = SUBJECT에서 사용되는 URI. 문서 내에서만 사용 가능하고 , 한번 밖에 사용 할 수 없음. HTML의 ID와 유사 RDF:ABOUT = 절대적인 경로. http://base.com/와 같은 기본적인 링크처럼 사용함. Html의 href와 유사 RDF:RESOURCE = Object에서 사용되는 URI. ID로 지정된 곳을 가리킨다. RDF문서 형식 6.408 6.500000125052228E-5 false 0.432 N1X3 0.0 0.0 35.0 0.0 RDF 문서 해석 * cim의 링크가 현재 http://iec.ch/TC57/2013/CIM-schema-cim16..
RDF - Eclipse Apache Jena Xml 파일 읽어오기
Apache Jena를 사용하여 RDF형식으로 작성된 XML파일을 읽는 코드다 Jena Model Reading 기능이다. public static final String xmlPath로 파일 경로를 지정해준다. "file:"이 들어가야 하는 점 유의할 것. Model model = ModelFactory.createDefaultModel(); 기본 모델 객체를 선언하고, model.read()를 통해 xml 파일을 읽는다. package org.rcp_dbview.util; import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.ModelFactory; import com.hp.hpl.jena.rdf.model.Property;..