ํ˜„์žฌ RDF ์ €์žฅ์†Œ์— ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

Semantic Web๊ณผ Linked Data๋Š” ์šฐ์ฃผ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๊ณณ์—๋Š” ์ƒ๋ช…์ด ์—†์Šต๋‹ˆ๋‹ค. ์–ด๋Š ์ •๋„ ์žฅ๊ธฐ๊ฐ„ ๊ฑฐ๊ธฐ์— ๊ฐ€๋ ค๋ฉดโ€ฆ "๋‚˜๋Š” ์šฐ์ฃผ ๋น„ํ–‰์‚ฌ๊ฐ€๋˜๊ณ  ์‹ถ๋‹ค"๋Š” ์–ด๋ฆฐ ์‹œ์ ˆ์— ๊ทธ๋“ค์ด ๋‹น์‹ ์—๊ฒŒ ๋ฌด์—‡์„ ๋งํ–ˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง€๊ตฌ์— ์žˆ๋Š” ๋™์•ˆ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ์ถ”์–ด ์ฒœ๋ฌธํ•™์ž ๋˜๋Š” ์ „๋ฌธ๊ฐ€๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์‰ฝ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ์‚ฌ๋Š” RDF ์Šคํ† ๋ฆฌ์ง€ ์„ธ๊ณ„์˜ ์ตœ์‹  ๋™ํ–ฅ์— ์ดˆ์ ์„ ๋งž์ถœ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋‹จ๋ฝ์˜ ์€์œ ๋Š” ์ปท ์•„๋ž˜์˜ ์„œ์‚ฌ์ ์ธ ํ™๋ณด ์ด๋ฏธ์ง€์—์„œ ์˜๊ฐ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.


์„œ์‚ฌ์‹œ ์‚ฌ์ง„

ํ˜„์žฌ RDF ์ €์žฅ์†Œ์— ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

I. RDF ์•ก์„ธ์Šค๋ฅผ ์œ„ํ•œ GraphQL

๊ทธ๋“ค์€ ๋งํ•œ๋‹ค.GraphQL์€ ๋ฒ”์šฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ก์„ธ์Šค ์–ธ์–ด๋ผ๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค. GraphQL์„ ์‚ฌ์šฉํ•˜์—ฌ RDF์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ธฐ๋Šฅ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ๊ธฐํšŒ๋Š” ๋‹ค์Œ์„ ํ†ตํ•ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

์ €์žฅ์†Œ๊ฐ€ ๊ทธ๋Ÿฌํ•œ ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ ์ ˆํ•œ "ํ•ด๊ฒฐ์ž"(ํ•ด๊ฒฐ์ž)๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ๋…๋ฆฝ์ ์œผ๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด๊ฒƒ์€ ํ”„๋ž‘์Šค ํ”„๋กœ์ ํŠธ์—์„œ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ด€๊ด‘. ์•„๋‹ˆ๋ฉด ์ด๋ฏธ ์•„๋ฌด ๊ฒƒ๋„ ์“ฐ์ง€ ์•Š๊ณ  ๊ทธ๋ƒฅ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ดํผ๊ทธ๋ž˜ํ”„QL.

Semantic Web๊ณผ Linked Data์˜ ์ •ํ†ต ์ง€์ง€์ž์˜ ๊ด€์ ์—์„œ ๋ณผ ๋•Œ, ์ด ๋ชจ๋“  ๊ฒƒ์€ ์ ํ•ฉํ•œ ํ”Œ๋žซํผ(๋ฌผ๋ก  RDF ์ €์žฅ์†Œ)์ด ์•„๋‹Œ ๋‹ค์Œ ๋ฐ์ดํ„ฐ ์‚ฌ์ผ๋กœ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ตฌ์ถ•๋œ ํ†ตํ•ฉ์„ ์œ„ํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ๋ฌผ๋ก  ์Šฌํ”ˆ ์ผ์ž…๋‹ˆ๋‹ค. .

GraphQL๊ณผ SPARQL์„ ๋น„๊ตํ–ˆ์„ ๋•Œ์˜ ์ธ์ƒ์€ ๋‘ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

  • ํ•œํŽธ์œผ๋กœ GraphQL์€ SPARQL์˜ ๋จผ ์นœ์ฒ™์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. REST์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์žฌ์„ ํƒ ๋ฐ ๋‹ค์ค‘ ์ฟผ๋ฆฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ์–ธ์–ด, ์ ์–ด๋„ ์›น์˜ ๊ฒฝ์šฐ;
  • ๋ฐ˜๋ฉด์— GraphQL์˜ ๊ฒฝ์ง๋œ ์ฒด๊ณ„๋Š” ๋’ค์ง‘ํž™๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ทธ "์„ฑ์ฐฐ์„ฑ"์€ RDF์˜ ์™„์ „ํ•œ ์„ฑ์ฐฐ์„ฑ์— ๋น„ํ•ด ๋งค์šฐ ์ œํ•œ์ ์ธ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์†์„ฑ ๊ฒฝ๋กœ์˜ ์•„๋‚ ๋กœ๊ทธ๊ฐ€ ์—†์œผ๋ฏ€๋กœ "๊ทธ๋ž˜ํ”„-"์ธ ์ด์œ ๋„ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

II. MongoDB์šฉ ์–ด๋Œ‘ํ„ฐ

์ด์ „ ํŠธ๋ Œ๋“œ๋ฅผ ๋ณด์™„ํ•˜๋Š” ํŠธ๋ Œ๋“œ.

  • ์ง€๊ธˆ ์Šคํƒ€๋…์—์„œ ์–ด์ฉŒ๋ฉด - ํŠนํžˆ, ๋ชจ๋‘ ๋™์ผํ•œ GraphQL์—์„œ - MongoDB ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ƒ RDF ๊ทธ๋ž˜ํ”„๋กœ ํ‘œ์‹œํ•˜๋„๋ก ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • Ontotext GraphDB ์ตœ๊ทผ ๊ทธ๊ฒƒ์€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค MongoDB ์ฟผ๋ฆฌ์—์„œ SPARQL ์กฐ๊ฐ์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

์ข€ ๋” ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ๋งํ•˜์ž๋ฉด, ์ด๋Ÿฌํ•œ ์†Œ์Šค์— ์ €์žฅ๋œ JSON์„ RDF๋กœ ์–ด๋Š ์ •๋„ "์ฆ‰์„์—์„œ" ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” JSON ์†Œ์Šค์— ๋Œ€ํ•œ ์–ด๋Œ‘ํ„ฐ์— ๋Œ€ํ•ด ๋งํ•˜๋ฉด ๊ฝค ์˜ค๋žซ๋™์•ˆ ๊ธฐ์กด ์†Œ์Šค๋ฅผ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SPARQL ์ƒ์„ฑ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ์˜ˆ๋ฅผ ๋“ค๋ฉด, Apache Jena์—๊ฒŒ.

์ฒ˜์Œ ๋‘ ๊ฐ€์ง€ ์ถ”์„ธ๋ฅผ ์š”์•ฝํ•˜๋ฉด RDF ์ €์žฅ์†Œ๊ฐ€ "๋‹ค์ค‘ ์ €์žฅ"(๋‹ค์ค‘ ์–ธ์–ด ์ง€์†์„ฑ) ์กฐ๊ฑด์—์„œ ํ†ตํ•ฉ ๋ฐ ๊ธฐ๋Šฅ์„ ์œ„ํ•œ ์™„์ „ํ•œ ์ค€๋น„ ์ƒํƒœ๋ฅผ ์ž…์ฆํ•œ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜์ด ํ›„์ž๋Š” ์˜ค๋žซ๋™์•ˆ ์œ ํ–‰ํ•˜์ง€ ์•Š์•˜์œผ๋ฉฐ ๊ทธ๊ฒƒ์„ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๊ณ ์žˆ๋‹ค ๋‹ค์ค‘ ๋ชจ๋ธ๋ง. ๊ทธ๋ฆฌ๊ณ  RDF ์Šคํ† ๋ฆฌ์ง€ ์„ธ๊ณ„์—์„œ ๋‹ค์ค‘ ๋ชจ๋ธ๋ง์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์š”์ปจ๋Œ€, ์•ˆ๋ผ. ๋‹ค์ค‘ ๋ชจ๋ธ DBMS ์ฃผ์ œ์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ๊ธฐ์‚ฌ๋ฅผ ํ• ์• ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ์ง€๊ธˆ์€ ๊ทธ๋ž˜ํ”„ ๋ชจ๋ธ(RDF๋Š” ๊ทธ ๋ณ€ํ˜•์œผ๋กœ ๊ฐ„์ฃผ๋  ์ˆ˜ ์žˆ์Œ)์— "๊ธฐ๋ฐ˜"์ธ ๋‹ค์ค‘ ๋ชจ๋ธ DBMS๊ฐ€ ์—†์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์ฒด LPG ๊ทธ๋ž˜ํ”„ ๋ชจ๋ธ์˜ RDF ์ €์žฅ์†Œ์— ์˜ํ•œ ์ผ๋ถ€ ์†Œ๊ทœ๋ชจ ๋‹ค์ค‘ ๋ชจ๋ธ๋ง์€ ๋‹ค์Œ์—์„œ ๋…ผ์˜๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„น์…˜ V.

III. OLTP ๋Œ€ ์˜ฌ๋žฉ

๊ทธ๋Ÿฌ๋‚˜ ๋™์ผํ•œ Gartner ๊ธฐ๋ก๋‹ค์ค‘ ๋ชจ๋ธ๋ง์€ ์ฃผ๋กœ ๋‹ค์Œ์— ๋Œ€ํ•œ ์‚ฌ์ธ ํ•„์ˆ˜ ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค. ์ˆ˜์ˆ ์‹ค DBMS. ์ด๊ฒƒ์€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "๋‹ค์ค‘ ์Šคํ† ๋ฆฌ์ง€" ์ƒํ™ฉ์—์„œ ํŠธ๋žœ์žญ์…˜๊ณผ ๊ด€๋ จ๋œ ์ฃผ์š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ OLTP-OLAP ๊ทœ๋ชจ์—์„œ RDF ์ €์žฅ์†Œ๋Š” ์–ด๋””์— ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ์ด๋ ‡๊ฒŒ ๋Œ€๋‹ตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ๋„ ์—ฌ๊ธฐ๋„ ์•„๋‹™๋‹ˆ๋‹ค. ์˜๋„ํ•œ ๋ฐ”๋ฅผ ๋‚˜ํƒ€๋‚ด๋ ค๋ฉด ์„ธ ๋ฒˆ์งธ ์•ฝ์–ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ œ์•ˆํ•˜๊ณ  ์‹ถ์€ ์˜ต์…˜์œผ๋กœ ์˜ฌ๋ฆฝ โ€” ์˜จ๋ผ์ธ ์ง€์  ์ฒ˜๋ฆฌ.

๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ:

  • MongoDB์™€ ํ•จ๊ป˜ GraphDB์—์„œ ๊ตฌํ˜„๋œ ํ†ตํ•ฉ ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์ตœ์†Œํ•œ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์˜ˆ์ •๋œ ์“ฐ๊ธฐ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด
  • Stardog์€ ๋” ๋‚˜์•„๊ฐ€ ์™„๋ฒฝํ•˜๊ฒŒ ๋‚˜์•„๊ฐ‘๋‹ˆ๋‹ค. ์žฌ์ž‘์„ฑํ•˜๋‹ค ๋‹ค์‹œ ์“ฐ๊ธฐ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๋ชฉํ‘œ๋กœ ์—”์ง„.

์ด์ œ ์ƒˆ๋กœ์šด ํ”Œ๋ ˆ์ด์–ด๋ฅผ ์‹œ์žฅ์— ์†Œ๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. IBM Netezza ๋ฐ Amazon Redshift ์ œ์ž‘์ž - ์•ˆ์กฐ๊ทธ๋ž˜ํ”„โ„ข. ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์ œํ’ˆ ๊ด‘๊ณ ์˜ ์‚ฌ์ง„์ด ๊ธฐ์‚ฌ ์‹œ์ž‘ ๋ถ€๋ถ„์— ๋ฐฐ์น˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. AnzoGraph๋Š” ์Šค์Šค๋กœ๋ฅผ GOLAP ์†”๋ฃจ์…˜์œผ๋กœ ํฌ์ง€์…”๋‹ํ•ฉ๋‹ˆ๋‹ค. ์ฐฝ ๊ธฐ๋Šฅ์ด ์žˆ๋Š” SPARQL์ด ๋งˆ์Œ์— ๋“œ์‹ญ๋‹ˆ๊นŒ? โ€”

SELECT ?month (COUNT(?event) OVER (PARTITION BY ?month) AS ?events) WHERE {  โ€ฆ  }

IV. RocksDB

์œ„์— ์ด๋ฏธ ๋งํฌ๊ฐ€ ์žˆ์—ˆ๋‹ค Stardog์ด RocksDB๋ฅผ ๊ธฐ๋ณธ ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ์œผ๋กœ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•œ Stardog 7 ๋ฒ ํƒ€ ๋ฐœํ‘œ์— ๋Œ€ํ•ด โ€“ ํ‚ค-๊ฐ’ ์Šคํ† ๋ฆฌ์ง€, Facebook์˜ Google LevelDB ํฌํฌ. ํŠน์ • ์ถ”์„ธ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋จผ์ € ํŒ๋‹จํ•ด๋ณด๋ฉด ์œ„ํ‚คํ”ผ๋””์•„ ๊ธฐ์‚ฌ, RDF ์ €์žฅ์†Œ๋งŒ์ด RocksDB๋กœ "์ด์‹"๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ArangoDB, MongoDB, MySQL, MariaDB, Cassandra์—์„œ RocksDB๋ฅผ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘˜์งธ, ํ•ด๋‹น ์ฃผ์ œ์˜ ํ”„๋กœ์ ํŠธ(์ฆ‰, ์ œํ’ˆ์ด ์•„๋‹Œ)๊ฐ€ RocksDB์—์„œ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด eBay๋Š” ๋‹ค์Œ์—์„œ RocksDB๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋žซํผ ๋‹น์‹ ์˜ "์ง€์‹ ๊ทธ๋ž˜ํ”„"๋ฅผ ์œ„ํ•ด. ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ์ฝ๋Š” ๊ฒƒ์€ ์žฌ๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ์–ธ์–ด๋Š” ์ž์ฒด ๊ฐœ๋ฐœ ํ˜•์‹์œผ๋กœ ์‹œ์ž‘ํ–ˆ์ง€๋งŒ ์ตœ๊ทผ์—๋Š” SPARQL๊ณผ ํ›จ์”ฌ ๋” ์œ ์‚ฌํ•˜๊ฒŒ ์ „ํ™˜๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.. ๋†๋‹ด์ฒ˜๋Ÿผ: ์ง€์‹ ๊ทธ๋ž˜ํ”„๋ฅผ ์•„๋ฌด๋ฆฌ ๋งŽ์ด ์ž‘์„ฑํ•ด๋„ ์—ฌ์ „ํžˆ RDF๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ์˜ˆ - ๋ช‡ ๋‹ฌ ์ „์— ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. Wikidata ๊ธฐ๋ก ์ฟผ๋ฆฌ ์„œ๋น„์Šค. ์†Œ๊ฐœ๋˜๊ธฐ ์ „์— Wikidata์˜ ์—ญ์‚ฌ์  ์ •๋ณด๋Š” ๋‹ค์Œ์„ ํ†ตํ•ด ์•ก์„ธ์Šคํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. MWAPI ํ‘œ์ค€ Mediawiki API๋กœ. ์ด์ œ ์ˆœ์ˆ˜ํ•œ SPARQL์—์„œ ๋งŽ์€ ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. "๋‚ด๋ถ€"์—๋Š” RocksDB๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , WDHQS๊ฐ€ ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Freebase๋ฅผ Google Knowledge Graph๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ๊ด€์—ฌํ•œ ์‚ฌ๋žŒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

V. LPG ์ง€์›

LPG ๊ทธ๋ž˜ํ”„์™€ RDF ๊ทธ๋ž˜ํ”„์˜ ์ฃผ์š” ์ฐจ์ด์ ์„ ์ƒ๊ธฐ์‹œ์ผœ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

LPG์—์„œ ์Šค์นผ๋ผ ์†์„ฑ์€ ์—์ง€ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋Š” ๋ฐ˜๋ฉด RDF์—์„œ๋Š” ์—์ง€ "์œ ํ˜•"์—๋งŒ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์Šค์นผ๋ผ ์†์„ฑ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ผ๋ฐ˜ ๋งํฌ๋„ ํฌํ•จ). LPG์— ๋น„ํ•ด RDF์˜ ์ด๋Ÿฌํ•œ ํ•œ๊ณ„ ๊ทน๋ณตํ•˜๋‹ค ์ผ์ข…์˜ ๋ชจ๋ธ๋ง ๊ธฐ๋ฒ•. RDF์— ๋น„ํ•ด LPG์˜ ํ•œ๊ณ„๋Š” ๊ทน๋ณตํ•˜๊ธฐ ์–ด๋ ต์ง€๋งŒ LPG ๊ทธ๋ž˜ํ”„๋Š” RDF ๊ทธ๋ž˜ํ”„๋ณด๋‹ค ํ•˜๋ผ๋ฆฌ์˜ ๊ต๊ณผ์„œ์— ๋‚˜์˜ค๋Š” ๊ทธ๋ฆผ์— ๊ฐ€๊น๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ๋žŒ๋“ค์ด ์›ํ•œ๋‹ค.

๋ถ„๋ช…ํžˆ "LPG ์ง€์›" ์ž‘์—…์€ ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

  1. LPG ๊ตฌ์กฐ๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ๋„๋ก RDF ๋ชจ๋ธ์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
  2. ์ด ์ˆ˜์ •๋œ ๋ชจ๋ธ์˜ ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก RDF ์ฟผ๋ฆฌ ์–ธ์–ด๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” LPG ์ฟผ๋ฆฌ ์–ธ์–ด์—์„œ ์ด ๋ชจ๋ธ์„ ์ฟผ๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

V.1. ๋ฐ์ดํ„ฐ ๋ชจ๋ธ

์—ฌ๊ธฐ์—๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ฐ€๋Šฅํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค.

V.1.1. ์‹ฑ๊ธ€ํ†ค ์†์„ฑ

RDF์™€ LPG๋ฅผ ์กฐํ™”์‹œํ‚ค๋Š” ๊ฐ€์žฅ ๋ฌธ์ž ๊ทธ๋Œ€๋กœ์˜ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์•„๋งˆ๋„ ์‹ฑ๊ธ€ํ†ค ์†์„ฑ:

  • ์˜ˆ๋ฅผ ๋“ค์–ด ์ˆ ์–ด ๋Œ€์‹  :isMarriedTo ์ˆ ์–ด๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค :isMarriedTo1, :isMarriedTo2 ๊ทธ๋ฆฌ๊ณ  t. ๋ผ.
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด๋Ÿฌํ•œ ์ˆ ์–ด๋Š” ์ƒˆ๋กœ์šด ์‚ผ์ค‘ํ•ญ์˜ ์ฃผ์ œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. :isMarriedTo1 :since "2013-09-13"^^xsd:date ๊ธฐํƒ€
  • ์ด๋Ÿฌํ•œ ์ˆ ์–ด ์ธ์Šคํ„ด์Šค์™€ ๊ณตํ†ต ์ˆ ์–ด์˜ ์—ฐ๊ฒฐ์€ ๋‹ค์Œ ํ˜•์‹์˜ ์‚ผ์ค‘ ํ•ญ์— ์˜ํ•ด ์„ค์ •๋ฉ๋‹ˆ๋‹ค. :isMarriedTo1 rdf:singletonPropertyOf :isMarriedTo.
  • ๋ฌผ๋ก , rdf:singletonPropertyOf rdfs:subPropertyOf rdf:type, ํ•˜์ง€๋งŒ ๊ทธ๋ƒฅ ์“ฐ๋ฉด ์•ˆ ๋˜๋Š” ์ด์œ ๋ฅผ ์ƒ๊ฐํ•ด ๋ณด์‹ญ์‹œ์˜ค. :isMarriedTo1 rdf:type :isMarriedTo.

"LPG ์ง€์›" ์ž‘์—…์€ ์—ฌ๊ธฐ์—์„œ RDFS ์ˆ˜์ค€์—์„œ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌํ•œ ๊ฒฐ์ •์€ ๊ด€๋ จ ๋ฌธ์„œ์— ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ‘œ์ค€. ์ฒจ๋ถ€ ๊ฒฐ๊ณผ๋ฅผ ์ง€์›ํ•˜๋Š” RDF ์ €์žฅ์†Œ์—์„œ ์ผ๋ถ€ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” Singleton Property๋ฅผ ๋˜ ๋‹ค๋ฅธ ๋ชจ๋ธ๋ง ๊ธฐ์ˆ ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

V.1.2. ์ œ๋Œ€๋กœ ๋œ ๊ตฌ์ฒดํ™”

์ˆœ์ง„ํ•˜์ง€ ์•Š์€ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์†์„ฑ ์ธ์Šคํ„ด์Šค๊ฐ€ ์„ธ ์Œ์œผ๋กœ ์™„๋ฒฝํ•˜๊ฒŒ ์ธ์Šคํ„ด์Šคํ™”๋œ๋‹ค๋Š” ์ธ์‹์—์„œ ๋น„๋กฏ๋ฉ๋‹ˆ๋‹ค. ์„ธ ์Œ๋‘ฅ์ด์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์†์„ฑ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด์„œ๋„ ์ด์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ ‘๊ทผ ๋ฐฉ์‹ ์ค‘ ๊ฐ€์žฅ ํ™•์‹คํ•œ ๊ฒƒ์€ RDF*์ผ๋ช… RDR, ํƒœ์–ด๋‚˜๋‹ค Blazegraph์˜ ์ฐฝ์ž์—์„œ. ์‹œ์ž‘๋ถ€ํ„ฐ ์ž…๋‹ˆ๋‹ค ์„ ์ถœ ๋‚˜์™€ AnzoGraph๋ฅผ ์œ„ํ•ด. ์ ‘๊ทผ ๋ฐฉ์‹์˜ ๊ฒฌ๊ณ ์„ฑ์€ ํ”„๋ ˆ์ž„์›Œํฌ ๋‚ด์—์„œ ์ œ๊ณต ์˜ ํ•ด๋‹น ๋ณ€๊ฒฝ ์‚ฌํ•ญ RDF ์‹œ๋งจํ‹ฑ์Šค. ๊ทธ๋Ÿฌ๋‚˜ ์š”์ ์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. RDF Turtle ์ง๋ ฌํ™”์—์„œ ์ด์ œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<<:bob :isMarriedTo :alice>> :since "2013-09-13"^^xsd:date .

V.1.3. ๊ธฐํƒ€ ์ ‘๊ทผ๋ฒ•

๊ณต์‹์ ์ธ ์˜๋ฏธ๋ก ์— ์‹ ๊ฒฝ์„ ์“ธ ์ˆ˜๋Š” ์—†์ง€๋งŒ ๋‹จ์ˆœํžˆ ์„ธ ์Œ์ด URI์ธ ์ผ๋ถ€ ์‹๋ณ„์ž๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์ด๋Ÿฌํ•œ URI๋กœ ์ƒˆ ์„ธ ์Œ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋‚จ์€ ๊ฒƒ์€ SPARQL์—์„œ ์ด๋Ÿฌํ•œ URI์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋„์ฐฉํ•˜๋‹ค stardog.

์•Œ๋ ˆ๊ทธ๋กœ๊ทธ๋ž˜ํ”„์—์„œ ๊ฐ€์ž ์ค‘๊ฐ„ ๋ฐฉ๋ฒ•์œผ๋กœ. Allegrograph์—์„œ ์‚ผ์ค‘ ํ•ญ์˜ ์‹๋ณ„์ž๋Š” ์ดํ•˜์ง€๋งŒ ํŠธ๋ฆฌํ”Œ ์†์„ฑ์„ ๊ตฌํ˜„ํ•˜๋ฉด ๋ˆˆ์— ๋„์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ˜•์‹์  ์˜๋ฏธ์กฐ์ฐจ๋„ ๋งค์šฐ ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ triplet ์†์„ฑ์€ URI๊ฐ€ ์•„๋‹ˆ๋ฉฐ ์ด๋Ÿฌํ•œ ์†์„ฑ์˜ ๊ฐ’๋„ ๋ฆฌํ„ฐ๋Ÿด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. LPG ์ง€์ง€์ž๋“ค์€ ์›ํ•˜๋Š” ๊ฒƒ์„ ์ •ํ™•ํžˆ ์–ป์Šต๋‹ˆ๋‹ค. ํŠน๋ณ„ํžˆ ๊ณ ์•ˆ๋œ NQX ํ˜•์‹์—์„œ RDF*์— ๋Œ€ํ•œ ์œ„์˜ ๊ฒƒ๊ณผ ์œ ์‚ฌํ•œ ์˜ˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

:bob :marriedTo :alice {"since" : "2013-09-13"}

V.2. ์ฟผ๋ฆฌ ์–ธ์–ด

๋ชจ๋ธ ์ˆ˜์ค€์—์„œ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  LPG๋ฅผ ์ง€์›ํ–ˆ๋‹ค๋ฉด ์ด๋Ÿฌํ•œ ๋ชจ๋ธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฟผ๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 SELECT * { <<:bob :isMarriedTo ?wife>> :since ?since }

  • Anzograph๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ŠคํŒŒํด* ๊ทธ๋ฆฌ๊ณ  ์ง€์›ํ•  ์˜ˆ์ •์ด๋‹ค. , Neo4j์˜ ์ฟผ๋ฆฌ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.
  • Stardog์€ ์ž์ฒด์ ์œผ๋กœ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ํ™•๋Œ€ SPARQL ๋ฐ ๋‹ค์‹œ ๊ทธ๋ ˜๋ฆฐ. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ SPARQL์—์„œ triplet์˜ URI์™€ "๋ฉ”ํƒ€ ์ •๋ณด"๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SELECT * {
    BIND (stardog:identifier(:bob, :isMarriedTo, ?wife) AS ?id)
    ?id :since ?since
}

  • Allegrograph๋„ ์ž์ฒด ์ง€์› ํ™•๋Œ€ ์ŠคํŒŒํด:

 SELECT * { ("since" ?since)  franz:attributesNameValue  ( :bob :marriedTo ?wife ) }

๊ทธ๋Ÿฐ๋ฐ GraphDB๋Š” ํ•œ๋•Œ Tinkerpop/Gremlin์„ ์ง€์›ํ•˜๋ฉด์„œ LPG๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ 8.0์ด๋‚˜ 8.1 ๋ฒ„์ „์—์„œ ์ด๊ฒŒ ๋ฉˆ์ท„๋‹ค.

VI. ๋ผ์ด์„ ์Šค ๊ฐ•ํ™”

"triplestore of choice"์™€ "open source triplestore" ์„ธํŠธ์˜ ๊ต์ฐจ์ ์— ์ตœ๊ทผ ์ถ”๊ฐ€๋œ ํ•ญ๋ชฉ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์˜คํ”ˆ ์†Œ์Šค RDF ์Šคํ† ์–ด๋Š” ์ผ์ƒ์ ์ธ ์‚ฌ์šฉ์„ ์œ„ํ•œ ์ข‹์€ ์„ ํƒ๊ณผ๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ๋ฉ€๊ณ , ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ์ƒˆ๋กœ์šด ํŠธ๋ฆฌํ”Œ ์Šคํ† ์–ด(์˜ˆ: AnzoGraph)์˜ ์†Œ์Šค ์ฝ”๋“œ๋Š” ๋‹ซํ˜€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜คํžˆ๋ ค ๊ฐ์†Œ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ...

๋ฌผ๋ก  ์ด์ „์˜ ์˜คํ”ˆ ์†Œ์Šค๋Š” ๋‹ซํžˆ์ง€ ์•Š์ง€๋งŒ ์ผ๋ถ€ ์˜คํ”ˆ ์†Œ์Šค ์ €์žฅ์†Œ๋Š” ์ ์ฐจ ๋” ์ด์ƒ ์„ ํƒํ•  ๊ฐ€์น˜๊ฐ€ ์—†๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ๋‚ด ์ƒ๊ฐ์— ์˜คํ”ˆ ์†Œ์Šค ๋ฒ„์ „์ด ์žˆ๋Š” Virtuoso๋Š” ๋ฒ„๊ทธ์— ๋น ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. Blazegraph๋Š” AWS์—์„œ ์ธ์ˆ˜ํ•˜์—ฌ Amazon Neptune์˜ ๊ธฐ๋ฐ˜์„ ํ˜•์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ ์–ด๋„ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋Š” ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ œ๋‚˜๋งŒ ๋‚จ์•˜๋‹ค...

์˜คํ”ˆ ์†Œ์Šค๊ฐ€ ๊ทธ๋‹ค์ง€ ์ค‘์š”ํ•˜์ง€ ์•Š์ง€๋งŒ ์‹œ๋„ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ด์ „๋ณด๋‹ค ๋œ ์žฅ๋ฐ‹๋น›์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

  • ์Šคํƒ€ ๋… ์ •์ง€ ๋ฌด๋ฃŒ ๋ฒ„์ „ ๋ฐฐํฌ(๋‹จ, ์ผ๋ฐ˜ ๋ฒ„์ „์˜ ํ‰๊ฐ€ ๊ธฐ๊ฐ„์€ ๋‘ ๋ฐฐ๊ฐ€ ๋จ)
  • ะฒ ๊ทธ๋ž˜ํ”„DB ํด๋ผ์šฐ๋“œ, ์ด์ „์— ๋ฌด๋ฃŒ ๊ธฐ๋ณธ ์š”๊ธˆ์ œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒฝ์šฐ ์‹ ๊ทœ ์‚ฌ์šฉ์ž ๋“ฑ๋ก์ด ์ผ์‹œ ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์ผ๋ฐ˜ IT ํ‰์‹ ๋„๊ฐ€ ๊ณต๊ฐ„์— ์ ‘๊ทผํ•˜๊ธฐ ์ ์  ๋” ์–ด๋ ค์›Œ์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๊ทธ ๊ฐœ๋ฐœ์€ ๋งŽ์€ ๊ธฐ์—…์ด๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€