Integrated Curation Data Model: Category Data

Digerati
이동: 둘러보기, 검색

Database Schema

※ 분류 색인 서비스를 위한 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


SQL Script

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

Data Service Tools

Category.py