티스토리 뷰
SWRL(Semantic Web Rule Language)와 SPIN(SPARQL Inferencing Notation)
SWRL과 SPIN은 rule을 RDF syntax로 표현한다. 하지만 SPIN은 SWRL보다 모든 면에서 우수하다고 생각한다.
SPIN은 SPARQL을 기초로한다. SPARQL은 많은 엔진과 데이터베이스에서 사용 및 제공하고 있기 때문에 데이터베이스에 직접 실행될 수 있고, 중간에 상호작용할 엔진이 따로 필요가 없다. 또한 SPARQL이 UNION과 FILTER 표현과 같이 다양한 feature를 제공하기 때문에 SPIN은 SWRL보다 표현력이 더 좋다. 그리고 SPIN은 단순한 규칙언어를 넘어서서 constraint를 표현하고 새로운 기능과 템플릿을 정의하기 위한 방법을 제공한다.
SPIN으로 무엇을 할 수 있나?
SPIN은 개별적인 규칙 언어를 배우지 않아도 된다. SPIN은 SPARQL로 표현하기 때문이다.
SPIN은 다른 프로퍼티들을 기초로 프로퍼티의 값을 계산하는 것에 사용할 수 있다. 예를 들면, 제품의 높이와 너비를 통한 면적, 오늘 날짜와 생일 차이를 통한 사람의 나이, 성과 이름의 연결로 사람의 성명을 계산하는데 사용할 수 있다.
또한 특정 조건하에서 실행되는 규칙의 집합을 분리하는 것에 사용할 수 있다. 예를 들면, 증분 추론을 지원한다거나, 리소스가 처음 생성될 때 특정 값을 초기화한다거나, 대화형 애플리케이션으로 사용하도록 할 수 있다.
SPIN은 SPARQL의 CONSTRUCT나 UPDATE 문을 사용하여 구현된다. SPIN 템플릿은 고레벨의 도메인 특정 언어에서 이러한 규칙을 정의할 수 있도록 해 줌으로서 규칙 디자이너가 직접적으로 SPARQL로 작업할 필요가 없다.
애플리케이션의 또 다른 일반적인 요구는 데이터 유효성을 체크하는 것이다. 예를 들면, 필드 입력 또는 입력된 문자열이 해당 형식 요구 사항을 만족하도록 요구할 수 있다. SPIN은 닫힌 세계 의미(closed world semantics)로 제약사항을 체크하는 것과 현재 사용 가능한 정보가 지정된 무결성 제약 조건과 맞지 않을 때 자동적으로 불일치 표시를 나타내도록 제공한다. 제약 조건은 SPARQL의 ASK나 CONSTRUCT 쿼리를 사용하거나 해당하는 SPIN 템플릿을 사용하여 지정한다.
또한 SPIN은 명확하고 웹 친화적인 프레임워크를 통해 새로운 SPARQL function의 정의를 지원해준다.
SPIN을 이용한 추론
SPARQL의 CONSTRUCT 쿼리를 이용하여
학생이 3개 이상의 수업을 수강하고 있다면 그 학생은 바쁜 학생이라고 추론하도록
spin:rule을 사용하여 규칙을 작성하였다.
CONSTRUCT {
?s a :BusyStudent .
}
WHERE {
{
SELECT ?s ((COUNT(?s)) AS ?scount)
WHERE {
?s :registerFor ?cls .
?cls a :Credit3Course .
}
GROUP BY ?s
} .
FILTER (?scount > 2) .
}
SPIN을 이용한 초기값 설정
instance 생성시 특정한 초기값을 자동으로 생성하도록
spin:constructor를 사용하여 설정하였다.
CONSTRUCT {
?this :createdAt ?date .
}
WHERE {
BIND (afn:now() AS ?date) .
}
SPIN을 이용한 제약사항 설정
대학생이 되는 조건으로 나이가 21세 이상이라는 제약사항을
spin:constraint를 사용하여 설정하였다.
ASK WHERE {
?this :age ?age .
FILTER (?age < 20) .
}
TopBraid Composer에서 SPIN 사용법
http://spinrdf.org/
'J:::SemanticWeb' 카테고리의 다른 글
J_7. TOPBRAID COMPOSER에서 제공하는 INFERENCE ENGINES (0) | 2012.12.27 |
---|---|
J_6. 문화정보 관련 Ontology & Vocabulary (0) | 2012.05.16 |
J_4. OWL2 세미나 자료 (0) | 2012.04.30 |
J_3. RDF (0) | 2012.04.26 |
J_2. 온톨로지 (4) | 2012.04.26 |
- Total
- Today
- Yesterday
- 타임리프
- RDF 변환
- property graph
- Neo4j
- Knowledge Graph
- stardog
- Ontology
- Thymeleaf
- 스프링부트
- Linked Data
- 트리플
- TopBraid Composer
- 그래프 데이터베이스
- sparql
- rdfox
- 지식그래프
- neosemantics
- TDB
- TBC
- 온톨로지
- LOD
- 장고
- networkx
- pyvis
- RDF
- 트리플 변환
- 사이퍼
- 지식 그래프
- cypher
- django
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |