"Integrated Curation Data Model"의 두 판 사이의 차이

Digerati
이동: 둘러보기, 검색
(Category.py)
(시맨틱 데이터베이스 관리 도구 (Python Program))
219번째 줄: 219번째 줄:
 
====Story01.py====
 
====Story01.py====
  
* URL: http://dh.aks.ac.kr/cgi-bin/encyves/Story01.py
+
* URL: <nowiki>http://dh.aks.ac.kr/cgi-bin/encyves/Story01.py</nowiki>
 
* 매개 변수: db = Database Name, project = Data Table Prefix, key = Factual Data Node Identifier  
 
* 매개 변수: db = Database Name, project = Data Table Prefix, key = Factual Data Node Identifier  
 
* 기능: Core Node를 중심으로 하는 1 Hop 네트워크 그래프 반환
 
* 기능: Core Node를 중심으로 하는 1 Hop 네트워크 그래프 반환
 +
* 예시: http://dh.aks.ac.kr/cgi-bin/encyves/Story01.py?db=concert&project=concert&key=Handel
  
 
====Story02.py====
 
====Story02.py====
228번째 줄: 229번째 줄:
 
* 매개 변수: db = Database Name, project = Data Table Prefix, key = Factual Data Node Identifier  
 
* 매개 변수: db = Database Name, project = Data Table Prefix, key = Factual Data Node Identifier  
 
* 기능: Core Node를 중심으로 하는 2 Hop 네트워크 그래프 반환
 
* 기능: Core Node를 중심으로 하는 2 Hop 네트워크 그래프 반환
 +
* 예시: http://dh.aks.ac.kr/cgi-bin/encyves/Story02.py?db=concert&project=concert&key=Handel
  
 
====Query.py====
 
====Query.py====
234번째 줄: 236번째 줄:
 
* 매개 변수: db = Database Name, project = Data Table Prefix, key = String
 
* 매개 변수: db = Database Name, project = Data Table Prefix, key = String
 
* 기능: 주어진 문자열을 포함하는 데이터의 노드 리스트 반환
 
* 기능: 주어진 문자열을 포함하는 데이터의 노드 리스트 반환
 +
* 예시: http://dh.aks.ac.kr/cgi-bin/encyves/Query.py?db=concert&project=concert&key=Paganini
  
 
===Catelog Data 서비스===
 
===Catelog Data 서비스===
251번째 줄: 254번째 줄:
 
* 매개 변수: db = Database Name, project = Storyline Table Prefix
 
* 매개 변수: db = Database Name, project = Storyline Table Prefix
 
* 기능: 스토리텔링 데이터 풀에 등록된 이야기외 최상위 노드 목록 반환
 
* 기능: 스토리텔링 데이터 풀에 등록된 이야기외 최상위 노드 목록 반환
 
+
* 예시: http://dh.aks.ac.kr/cgi-bin/encyves/StoryMenu.py?db=tutor&project=narrative
 
====Storyline.py====
 
====Storyline.py====
  
257번째 줄: 260번째 줄:
 
* 매개 변수: db = Database Name, project = Storyline Table Prefix, key =  Storyline Node Identifier
 
* 매개 변수: db = Database Name, project = Storyline Table Prefix, key =  Storyline Node Identifier
 
* 기능: 지정 노드를 중심으로 상, 하, 전, 후의 이야기 문맥 노드 반환
 
* 기능: 지정 노드를 중심으로 상, 하, 전, 후의 이야기 문맥 노드 반환
 +
* 예시: http://dh.aks.ac.kr/cgi-bin/encyves/StoryLine.py?db=tutor&project=narrative&key=T190429K-D

2019년 5월 20일 (월) 14:59 판

Database Schema

Factual Data

Node Tabel Schema: xxxData

create table concertData (
	id nvarchar(40) not null,
	class nvarchar(16) null,
	groupName nvarchar(16) null,
	partName nvarchar(40) null,
	label nvarchar(80) null,
	infoUrl nvarchar(256) null,
	iconUrl nvarchar(256) null,
	primary key(id)
)

Edge Table Schema: xxxLinks

create table concertLinks (
	source  nvarchar(40)  not null,
	target  nvarchar(40) not null,
	relation nvarchar(40) not null,
	attribute nvarchar(40) null,
	primary key (source, target, relation )
)

Category Data

※ 분류 색인 서비스를 위한 Category Data는 Factual Data Node의 속성 정보에서 기계적으로 추출합니다.

Node Table Schema: xxxSchema

create table xxxSchema (
	id nvarchar(40) not null,
	class nvarchar(16) null,
	groupName nvarchar(16) null,
	partName nvarchar(40) null,
	label nvarchar(80) null,
	infoUrl nvarchar(256) null,
	iconUrl nvarchar(256) null,
	primary key(id)
)

/* Virtual View: xxxNodes */

create view xxxNodes as
select * from concertData
union
select * from concertSchema

Edge Table Schema: xxxCategory

create table xxxCategory (
	source  nvarchar(40)  not null,
	target  nvarchar(40) not null,
	relation nvarchar(40) not null,
	attribute nvarchar(40) null,
	primary key (source, target, relation )
)

Object Properties

* hasCategory
* hasMember

Storyline Data

※ Storyline Data는 Factcual Data와 다른 이름을 갖는 독립적 Data Set입니다. Storyline Data의 Edge Table은 Node Table로부터 자동 변환합니다.

Node Table Schema

create table yyyData (
	id nvarchar(40) not null,
	class nvarchar(16) null,
	upperNode nvarchar(40) null,
	nextNode nvarchar(40) null,
	label nvarchar(80) null,
	infoUrl nvarchar(256) null,
	iconUrl nvarchar(256) null,
	primary key(id)
)

Edge Table Schema

create table yyyLinks (
	source  nvarchar(40)  not null,
	target  nvarchar(40) not null,
	relation nvarchar(40) not null,
	attribute nvarchar(40) null,
	primary key (source, target, relation )
)

Object Properties

* hasTopic
* hasEpisode
* hasFactualComponent
* isPreviousInSequence
* isNextInSequence

SQL Script

Factual Data 처리

/* insert node data */

insert into xxxData (id, class, groupName, partName, label, infoUrl, iconUrl )
select id, class, groupName, partName, label, infoUrl, iconUrl  
	from xxxData$

/* insert link data */

insert into xxxLinks (source, target, relation)
select source, target, relation from xxxLinks$

Category Data 처리

/* xxxSchema 데이터 처리 자동화 Script */

insert into xxxSchema (id, class, groupName, label)
values ('Thing', 'Category', 'Top', 'Thing' )

insert into xxxSchema (id, class, groupName, label)
select class as id, 'Category' as class, 'Thing' groupName, class as label
from concertData
group by class

insert into xxxSchema (id, class, groupName, label)
select groupName as id, 'Category' as class, class as groupName, groupName as label
from concertData
where groupName is not NULL
group by class, groupName

insert into xxxSchema (id, class, groupName, label)
select partName as id, 'Category' as class, groupName, partName as label
from concertData
where partName is not NULL
group by groupName, partName

/* xxxCategory 데이터 처리 자동화 Script */

-- hasCategory (top->1st)
insert into concertCategory (source, target, relation )
select 'Thing' as source, class as target, 'hasCategory' as 'relation' from concertData
group by class

-- hasCategory (1st->2nd)
insert into concertCategory (source, target, relation )
select class as source, groupName as target, 'hasCategory' as 'relation' from concertData
where groupName is not NULL
group by class, groupName

-- hasCategory (2nd->3rd)
insert into concertCategory (source, target, relation )
select groupName as source, partName as target, 'hasCategory' as 'relation' from concertData
where partName is not NULL
group by class, groupName, partName

-- hasMember (Major Category)
insert into concertCategory (source, target, relation )
select class as source, id as target, 'hasMember' as 'relation' from concertData
where groupName is NULL
order by class, id

-- hasMember  (2nd Category)
insert into concertCategory (source, target, relation )
select groupName as source, id as target, 'hasMember' as 'relation' from concertData
where groupName is not NULL and partName is NULL
order by groupName, id

-- hasMember  (3rd Category)
insert into concertCategory (source, target, relation )
select partName as source, id as target, 'hasMember' as 'relation' from concertData
where partName is not NULL
order by partName, id

Storyline Data 처리

/* insert storyline node data */

insert into yyyData (id, class, upperNode, nextNode, label, infoUrl, iconUrl )
select id, class, upperNode, nextNode, label, infoUrl, iconUrl from yyyData$

/* generate storyline link data */

-- hasTopic
insert into yyyLinks (source, target, relation )
select upperNode, id, 'hasTopic' from yyyData$
where class='Topic' and upperNode is Not Null 

-- hasEpisode
insert into yyyLinks (source, target, relation )
select upperNode, id, 'hasEpisode' from yyyData$
where class='Episode' and upperNode is Not Null

-- isPeviousInSequence
insert into yyyLinks (source, target, relation )
select id, nextNode, 'isPreviousInSequence' from yyyData$
where nextNode is Not Null

시맨틱 데이터베이스 관리 도구 (Python Program)

Factual Data 서비스

Story01.py

Story02.py

Query.py

Catelog Data 서비스

Category.py

Storyline Data 서비스

StoryMenu.py

Storyline.py