9
БпСцификация ΠΈ рСализация Ρ€Π°Π·Π½ΠΎΠΌΠΎΠ΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Β© Π‘. А. Π‘Ρ‚ΡƒΠΏΠ½ΠΈΠΊΠΎΠ² Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠΈ ЀИЦ ИУ РАН, Москва [email protected] Аннотация. Π’ Ρ€Π°Π±ΠΎΡ‚Π΅ рассматриваСтся ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ спСцификации ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… с использованиСм Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ W3C - логичСского Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π° RIF-BLD. Π­Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π΅ сущности ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, прСдставлСнных Π² Ρ€Π°Π·Π½Ρ‹Ρ… модСлях Π΄Π°Π½Π½Ρ‹Ρ…. ЛогичСская сСмантика RIF-BLD Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ спСцификации рассматриваСмых ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€Π°Π²ΠΈΠ» RIF- BLD Π² языкС HIL: это позволяСт ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ MapReduce ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΡ… Π² распрСдСлСнных инфраструктурах, основанных Π½Π° Hadoop. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова: интСграция Π΄Π°Π½Π½Ρ‹Ρ…, ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, логичСскиС ΠΏΡ€Π°Π²ΠΈΠ»Π°, рСализация ΠΏΡ€Π°Π²ΠΈΠ» Specification and Implementation of Multimodel Data Integration Rules Β© Sergey Stupnikov Institute of Informatics Problems, Federal Research Center β€œComputer Science and Control” of the Russian Academy of Sciences, Moscow [email protected] Abstract. The paper considers an approach for specification of data integration rules using RIF-BLD logic dialect that is a recommendation of W3C. This allows us to reference entities defined in different collections represented using different data models in the same rule. Logical semantics of RIF-BLD provides also unambiguous interpretation of data integration rules. The paper proposes an approach for implementation of RIF-BLD rules using HIL language. Thus data integration rules are compiled into MapReduce programs and can be executed over Hadoop-based distributed infrastructures. Keywords: data integration, data models, logic rules, rule implementation 1 Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² настоящСС врСмя ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· основных ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… инфраструктур ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ систСм бизнСс-Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ. Π”Π°Π½Π½Ρ‹Π΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‚ΡΡ ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ ΠΊ схСмС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Над Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ выстраиваСтся слой ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰ΠΈΡ… Π°Π½Π°Π»ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² матСматичСской статистики, машинного обучСния ΠΈ Π΄Ρ€.) ΠΈ Π²Ρ‹Π΄Π°ΡŽΡ‰ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅. Π’Π²ΠΈΠ΄Ρƒ роста нСоднородности источников Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡ… количСства ΠΈ объСмов Π΄Π°Π½Π½Ρ‹Ρ…, Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ вопросы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² спСцификации ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… инфраструктурах распрСдСлСнного хранСния ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Apache Hadoop [1]. Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, IBM InfoSphere Information Server [2]) ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ срСдства проСктирования ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Ρ€Π°Π±ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅, прСимущСствСнно, понятиями ΠΈ опСрациями рСляционной ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ трансформации ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° языкС SQL. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ срСдства сопоставлСния схСм исходных ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ схСмы Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° (Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π’Ρ€ΡƒΠ΄Ρ‹ XIX ΠœΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ «Аналитика ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² областях с интСнсивным использованиСм Π΄Π°Π½Π½Ρ‹Ρ…Β» (DAMDID/RCDL’2017), Москва, Россия, 10-13 октября 2017 197

Specification and Implementation of Multimodel Data

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Specification and Implementation of Multimodel Data

БпСцификация ΠΈ рСализация Ρ€Π°Π·Π½ΠΎΠΌΠΎΠ΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…

Β© Π‘. А. Π‘Ρ‚ΡƒΠΏΠ½ΠΈΠΊΠΎΠ² Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠΈ ЀИЦ ИУ РАН,

Москва [email protected]

Аннотация. Π’ Ρ€Π°Π±ΠΎΡ‚Π΅ рассматриваСтся ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ спСцификации ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… с использованиСм Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ W3C - логичСского Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π° RIF-BLD. Π­Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π΅ сущности ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, прСдставлСнных Π² Ρ€Π°Π·Π½Ρ‹Ρ… модСлях Π΄Π°Π½Π½Ρ‹Ρ…. ЛогичСская сСмантика RIF-BLD Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ спСцификации рассматриваСмых ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€Π°Π²ΠΈΠ» RIF-BLD Π² языкС HIL: это позволяСт ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ MapReduce ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΡ… Π² распрСдСлСнных инфраструктурах, основанных Π½Π° Hadoop.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова: интСграция Π΄Π°Π½Π½Ρ‹Ρ…, ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, логичСскиС ΠΏΡ€Π°Π²ΠΈΠ»Π°, рСализация ΠΏΡ€Π°Π²ΠΈΠ»

Specification and Implementation of Multimodel Data Integration Rules

Β© Sergey Stupnikov Institute of Informatics Problems, Federal Research Center β€œComputer Science and Control” of

the Russian Academy of Sciences, Moscow

[email protected] Abstract. The paper considers an approach for specification of data integration rules using RIF-BLD

logic dialect that is a recommendation of W3C. This allows us to reference entities defined in different collections represented using different data models in the same rule. Logical semantics of RIF-BLD provides also unambiguous interpretation of data integration rules. The paper proposes an approach for implementation of RIF-BLD rules using HIL language. Thus data integration rules are compiled into MapReduce programs and can be executed over Hadoop-based distributed infrastructures.

Keywords: data integration, data models, logic rules, rule implementation

1 Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² настоящСС врСмя ΡΠ²Π»ΡΡŽΡ‚ΡΡ

ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· основных ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… инфраструктур ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ систСм бизнСс-Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ. Π”Π°Π½Π½Ρ‹Π΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‚ΡΡ ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ ΠΊ схСмС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Над Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ выстраиваСтся слой ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰ΠΈΡ… Π°Π½Π°Π»ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² матСматичСской статистики, машинного обучСния ΠΈ Π΄Ρ€.) ΠΈ Π²Ρ‹Π΄Π°ΡŽΡ‰ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅.

Π’Π²ΠΈΠ΄Ρƒ роста нСоднородности источников Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡ… количСства ΠΈ объСмов Π΄Π°Π½Π½Ρ‹Ρ…, Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ вопросы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² спСцификации ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… инфраструктурах распрСдСлСнного хранСния ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Apache Hadoop [1].

Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, IBM InfoSphere Information Server [2]) ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ срСдства проСктирования ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Ρ€Π°Π±ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅, прСимущСствСнно, понятиями ΠΈ опСрациями рСляционной ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ трансформации ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° языкС SQL. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ срСдства сопоставлСния схСм исходных ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ схСмы Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° (Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,

Π’Ρ€ΡƒΠ΄Ρ‹ XIX ΠœΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ «Аналитика ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² областях с интСнсивным использованиСм Π΄Π°Π½Π½Ρ‹Ρ…Β» (DAMDID/RCDL’2017), Москва, Россия, 10-13 октября 2017

197

Page 2: Specification and Implementation of Multimodel Data

InfoSphere FastTrack [2], ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ автоматичСски ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Ρ‚ΡŒ части ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Ρ€Π°Π±ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Для обСспСчСния ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, прСдставлСнных Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… модСлях Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠ΅ срСдства ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ исходныС Π΄Π°Π½Π½Ρ‹Π΅ ΠΊ рСляционной ΠΌΠΎΠ΄Π΅Π»ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ прСобразования XML Π² IBM InfoSphere DataStage [3]).

ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌ, проводятся исслСдования ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ спСцификации ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Π΄Π°Π½Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ являСтся ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ [9]. ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ… рСляционной ΠΌΠΎΠ΄Π΅Π»ΠΈ с использованиСм логичСских ΠΏΡ€Π°Π²ΠΈΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ сообщаСтся Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ сСмантика Π² Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ порядка.

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассматриваСтся ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ спСцификации ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… с использованиСм Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ W3C - логичСского Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π° RIF-BLD [6]. RIF-BLD являСтся Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚ΠΎΠΌ каркаса логичСских Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚ΠΎΠ² RIF-FLD Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΎΠ±ΠΌΠ΅Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ RIF [5], Π½Π°Ρ†Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ синтаксиса ΠΈ сСмантики языков логичСских ΠΏΡ€Π°Π²ΠΈΠ». RIF-BLD Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ достаточно ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ спСктр возмоТностСй спСцификации, Π² частности, ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ‚Π΅Ρ€ΠΌΡ‹ ΠΈ Ρ‚Π΅Ρ€ΠΌΡ‹ с ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ (ΠΎΠ±ΠΎΠ±Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ понятиС Ρ‚Π΅Ρ€ΠΌΠ° Π² Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ порядка), Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ²Ρ‹Π΅ Ρ‚Π΅Ρ€ΠΌΡ‹ (Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠ΅ утвСрТдСния ΠΎ структурС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²), классификационныС Ρ‚Π΅Ρ€ΠΌΡ‹, Ρ‚Π΅Ρ€ΠΌΡ‹ равСнства, внСшниС Ρ‚Π΅Ρ€ΠΌΡ‹ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ для ссылок Π½Π° сущности, рассматриваСмыС ΠΊΠ°ΠΊ Β«Ρ‡Π΅Ρ€Π½Ρ‹Π΅ ящики» Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… спСцификации). Π­Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π΅ сущностСй ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, прСдставлСнных Π² Ρ€Π°Π·Π½Ρ‹Ρ… модСлях Π΄Π°Π½Π½Ρ‹Ρ…. Π Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²ΠΈΠ»Π°, Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ лишь ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ сущностям Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы, Π° Π² Ρ‚Π΅Π»Π΅ – ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ сущностям исходных схСм.

ЛогичСская сСмантика RIF-BLD позволяСт ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ спСцификации рассматриваСмых ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ допускаСт ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ с использованиСм Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языков – ΠΎΡ‚ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, SQL) Π΄ΠΎ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Java). Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ рассматриваСтся ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ логичСских ΠΏΡ€Π°Π²ΠΈΠ» RIF-BLD Π² языкС высокого уровня HIL [10][7], Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ IBM, ΠΈ поставляСмого Π² составС Hadoop-Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ BigInsights 3.0 [11], Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ InfoSphere Big Match for Hadoop [12]. РаспрСдСлСнноС исполнСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° HIL Π² срСдС Hadoop достигаСтся ΠΏΡƒΡ‚Π΅ΠΌ ΠΈΡ… компиляции Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Java, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ с использованиСм срСдств ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² Hadoop Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ MapReduce [14].

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ спСцификации ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…

ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ АрктичСской Π·ΠΎΠ½Π΅ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½Π°Ρ†Π΅Π»Π΅Π½Π½ΠΎΠΉ Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ поисково-ΡΠΏΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π‘Ρ‹Π»ΠΈ Π²Ρ‹Π±Ρ€Π°Π½Ρ‹ Π½Π΅ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ [16] ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° Сдиная схСма Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° [20]. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, прСдставлСнныС Π² рСляционной ΠΌΠΎΠ΄Π΅Π»ΠΈ, XML, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ MongoDB, Π³Ρ€Π°Ρ„ΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Neo4j. Π‘Ρ…Π΅ΠΌΠ° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° прСдставлСна Π² рСляционной ΠΌΠΎΠ΄Π΅Π»ΠΈ. Π’ дальнСйшСм прСдполагаСтся использованиС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ….

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΡΡ‚Π°Ρ‚ΡŒΠΈ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π’ Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… 2-4 ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ спСцификации ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, прСдставлСнных Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… модСлях (Ρ€Π°Π·Π΄Π΅Π» 2 – XML ΠΈ рСляционная модСль, Ρ€Π°Π·Π΄Π΅Π» 3 – докумСнтная модСль, Ρ€Π°Π·Π΄Π΅Π» 4 – графовая модСль) с использованиСм Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π° RIF-BLD ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€Π°Π²ΠΈΠ» Π² языкС HIL. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ 5 ΠΎΠ±ΠΎΠ±Ρ‰Π°ΡŽΡ‚ΡΡ примСняСмыС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ спСцификации ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ.

2 БпСцификация ΠΈ рСализация ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… XML ΠΈ рСляционной ΠΌΠΎΠ΄Π΅Π»ΠΈ с Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²

Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… сущностями XML ΠΈ рСляционной ΠΌΠΎΠ΄Π΅Π»ΠΈ.

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ рассматриваСтся ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ прСобразования Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· XML ΠΊ рСляционной схСмС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° (Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмС) с Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ структурных ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ², ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΈΠΌΠ΅Π½ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ рассматриваСтся ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ прСобразования Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· соСдинСния Π΄Π²ΡƒΡ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, ΠΎΠ΄Π½Π° ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… прСдставлСна Π² XML, другая – Π² рСляционной ΠΌΠΎΠ΄Π΅Π»ΠΈ.

2.1 Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

Π’ Π»Π΅Π²ΠΎΠΌ столбцС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ 1 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ XML ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΠ· систСмы ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°, ΡƒΡ‡Π΅Ρ‚Π° ΠΈ классификации судов КИИБ «МоРС» [18]. ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚ (элСмСнт ISSKOI_Track) состоит ΠΈΠ· ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ (ISSKOI_TrackPoint). Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ Π·Π°Π΄Π°Π½Ρ‹ значСния ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ (pos), Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (Time) ΠΈ высоты (BarAltitude). Π”Π°Π½Π½Ρ‹Π΅ ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°Ρ… ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Ρƒ ΠΆΠ΅ структуру элСмСнтов ΠΈ отличатся значСниями элСмСнтов ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ².

Π’ ΠΏΡ€Π°Π²ΠΎΠΌ столбцС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ элСмСнты Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ исходным Π΄Π°Π½Π½Ρ‹ΠΌ. Π’Π°ΠΊ, элСмСнт ISSKOI_Track соотвСтствуСт ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы Track, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ элСмСнт Id соотвСтствуСт ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ (PK) Track.trackId, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ элСмСнт TrackName – Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ Track.name. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ ISSKOI_TrackPoint соотвСтствуСт ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы

198

Page 3: Specification and Implementation of Multimodel Data

TrackPoint, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ элСмСнта id соотвСтствуСт ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ TrackPoint.pointId, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ элСмСнты Time ΠΈ BarAltitude – Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ TrackPoint.time ΠΈ TrackPoint.height соотвСтствСнно, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ элСмСнт pos – Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ TrackPoint.logtitude ΠΈ TrackPoint.latitude.

Π’Π°Π±Π»ΠΈΡ†Π° 1 Π”Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… Π² исходной ΠΌΠΎΠ΄Π΅Π»ΠΈ (XML)

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы

(рСляционная модСль)

<ISSKOI_Track> <Id>56473</Id> <TrackName>copter-1</TrackName> <ISSKOI_TrackPoints> <ISSKOI_TrackPoint id="uuid-2b7ca14"> <Position> <Point id="uuid-859bef91"> <pos>33.8957 246.37</pos> </gml:Point> </Position> <Time>2016-12-12 T13:33:11</Time> <BarAltitude>533.89 </BarAltitude> <HSpeed>108.1</HSpeed> <VSpeed>2</VSpeed> </TrackPoint> </TrackPoints> </Track>

Track( PK trackId, name) TrackPoint( PK pointId, FK path, time, height, latitude, longitude)

Π’ рассмотрСнном ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΊΠ°ΠΊ ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ…

ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π½ΠΈΠΆΠ΅, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° лишь Ρ‡Π°ΡΡ‚ΡŒ элСмСнтов, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… исходныС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Ρ†Π΅Π»Π΅Π²ΡƒΡŽ схСму.

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ спСцификации ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΈΠΌΠ΅Π½ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, элСмСнт BarAltitude ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ height ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ сСмантику, Π½ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°), структурныС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (элСмСнт pos, содСрТащий ΡˆΠΈΡ€ΠΎΡ‚Ρƒ ΠΈ Π΄ΠΎΠ»Π³ΠΎΡ‚Ρƒ, соотвСтствуСт Π΄Π²ΡƒΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ logtitude, latitude).

Π‘ использованиСм Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π° RIF-BLD Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ описываСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Forall ?Track ?Id ?TrackName ?TrackPoints ?TrackPoint ?Position ?Time ?Height ?Point ?pos ( AND( Track(trackId->?Id name->?TrackName) TrackPoint(pointId->?pid path->?Id time->?Time height->?Height latitude->External(get_latitude(?pos)) longitude->External(get_longitude(?pos)) )) :- AND(?Track#ISSKOI_Track ?Track[Id->?Id TrackName->?TrackName TrackPoints->?TrackPoint] ?TPoint#ISSKOI_TrackPoint ?TPoint[id->?pid Position->?Position Time->?Time BarAltitude->?Height] ?Position#Position ?Position[Point->?Point] ?Point#Point ?Point[pos->?pos]))

Forall Π² ΠΏΡ€Π°Π²ΠΈΠ»Π΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΊΠ²Π°Π½Ρ‚ΠΎΡ€ всСобщности, Π·Π½Π°ΠΊ Β«:-Β» ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΈΠΌΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ – логичСскоС слСдованиС Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹-Π³ΠΎΠ»ΠΎΠ²Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈΠ· Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹-Ρ‚Π΅Π»Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°, опСрация AND ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΊΠΎΠ½ΡŠΡŽΠ½ΠΊΡ†ΠΈΡŽ. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π²ΠΈΠ΄Π° ?X ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

Π’ ΠΏΡ€Π°Π²ΠΈΠ»Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Ρ€ΠΈ Π²ΠΈΠ΄Π° ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ². Π’ Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹ с ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ [6] Track ΠΈ TrackPoint, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы.

Π’ Ρ‚Π΅Π»Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹ члСнства [6] (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ ?Track#ISSKOI_Track, ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉΡΡ Π² истину, ΠΊΠΎΠ³Π΄Π° пСрСмСнная ?Track ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ элСмСнта ISSKOI_Track) ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ²Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹ [6], ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠ΅ структуру XML-элСмСнтов исходных Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊ, ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ ?Point[pos->?pos] обращаСтся Π² истину Π½Π° Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ°Ρ€Π°Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ?Point ΠΈ ?pos, Ρ‡Ρ‚ΠΎ элСмСнт – Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ?Point ΠΈΠΌΠ΅Π΅Ρ‚ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ элСмСнт pos ΠΈ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΅ΡΡ‚ΡŒ ?pos. ΠšΠΎΠ½ΡŠΡŽΠ½ΠΊΡ†ΠΈΡ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² Π² Ρ‚Π΅Π»Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°Π΄Π°Π΅Ρ‚ структуру Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… элСмСнтов ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ элСмСнта ISSKOI_Track.

Бвязь Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ элСмСнтов ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Π² Ρ‚Π΅Π»Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° задаСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΈΠΌΠ΅Π½ ΠΈ структурныС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹.

ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Ρ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, get_latitude), прСдставляСмых Π² RIF-FLD ΠΊΠ°ΠΊ внСшниС Ρ‚Π΅Ρ€ΠΌΡ‹ (External). Π˜Ρ… сСмантика Π² Ρ€Π°ΠΌΠΊΠ°Ρ… RIF-FLD Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π½Π΅ опрСдСляСтся ΠΈ уточняСтся ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сСмантика Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ get_latitude состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ число, входящСС Π² ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ строку).

РассмотрСнноС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Π΅ΡΡ‚Π΅ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ сСмантику: для всСх Π½Π°Π±ΠΎΡ€ΠΎΠ² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ΠΊΠ²Π°Π½Ρ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΡ… Π² истину всС ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹ Ρ‚Π΅Π»Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π° исходной ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π°ΠΌ Π³ΠΎΠ»ΠΎΠ²Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»Π° с Ρ‚Π΅ΠΌ ΠΆΠ΅ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Для рассмотрСнного ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ Track(trackId: 56473, name: β€œcopter-1”), TrackPoint(pointId: β€œuuid-2b7ca14”, path: 56473, time: β€œ2016-12-12T13:33:11”, height: 533.89, latitude: 33.8957, longitude: 246.37).

Π’Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² языкС HIL ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ: declare ISSKOI_Track: ?; declare Track: ?; declare TrackPoint: ?; declare get_latitude: function string to double; declare get_longitude: function string to double; @jaql{ get_latitude = fn($s) convert(substring( $s, 0, strPos($s, ' ')-1), schema double);

199

Page 4: Specification and Implementation of Multimodel Data

get_longitude = fn($s) convert(substring( $s, strPos($s, ' ')+1, strLen($s)), schema double); } insert into Track select [ trackId: t."Id",name: t."TrackName"] from ISSKOI_Track t; insert into TrackPoint select [ path: t."Id", time: p."Time", height: tpt."BarAltitude", hSpeed: tpt."HSpeed", vSpeed: tpt."VSpeed", course: tpt."Course", latitute: get_latitude(pt."pos"), longitude: get_longitude(pt."pos") ] from ISSKOI_Track t, t."TrackPoints" tpt, tpt."Position" ps, ps."Point" pt;

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ (declare) исходная ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ (внСшний элСмСнт ISSKOI_Track) ΠΈ Ρ†Π΅Π»Π΅Π²Ρ‹Π΅ сущности, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌ (Track, TrackPoint). Π—Π½Π°ΠΊ Β«?Β» Π² объявлСнии ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ структура сущностСй Π½Π΅ Π·Π°Π΄Π°Π½Π° ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ, Π° выводится ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠžΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² (get_latitude, get_longitude) ΠΈ ΠΈΡ… сигнатуры. РСализация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ производится с использованиСм языка Jaql [4] (Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° @jaql) ΠΈ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками substring, strPos.

Для Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ Track, TrackPoint ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ insert, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ этих ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ. Π’ сСкции from ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² insert ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ исходныС сущности, ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρƒ члСнства Π² Ρ‚Π΅Π»Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° RIF-BLD (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ?Track#ISSKOI_Track) соотвСтствуСт объявлСниС с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ISSKOI_Track t).

Атрибуты Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΈ выраТСния пороТдСния ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π² сСкции select Π² соотвСтствии с ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π°ΠΌΠΈ Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π°ΠΌΠΈ Π² Ρ‚Π΅Π»Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°. НапримСр, ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρƒ Π³ΠΎΠ»ΠΎΠ²Ρ‹ Track(trackId->?Id) ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ²ΠΎΠΌΡƒ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρƒ Ρ‚Π΅Π»Π° ?Track[Id->?Id] соотвСтствуСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ trackId: t."Id" Π² сСкции select ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° insert into Track.

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ язык HIL ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON [13], поэтому для примСнСния рассмотрСнного ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π° языкС HIL для прСобразования Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°Ρ… Π² Ρ†Π΅Π»Π΅Π²ΡƒΡŽ схСму Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ исходныС XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² JSON ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ xmlToJson языка Jaql [4]. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ HIL-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ JSON-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π·Π°Ρ‚Π΅ΠΌ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ Π² рСляционноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π°Π΄ Hadoop (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Hive [15]).

2.2 Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ судах

Π’ Π»Π΅Π²ΠΎΠΌ столбцС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ 2 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ судах Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ XML, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ· систСмы «Поиск-ΠœΠΎΡ€Π΅Β» (ERRTableShips) [19]; Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ судах Π² рСляционной ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ· систСмы Π•Π‘Π˜ΠœΠž [17] (Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ CSV ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ Π² JSON). Π’ ΠΎΠ±Π΅ΠΈΡ… исходных коллСкциях ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ

Π½Π°ΠΉΠ΄Π΅Π½Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ± ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ судах (судно идСнтифицируСтся ΠΏΠΎ названию ΠΈ ΠΏΠΎΠ·Ρ‹Π²Π½ΠΎΠΌΡƒ). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ содСрТат Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ судах.

Π’Π°Π±Π»ΠΈΡ†Π° 2 Π”Π°Π½Π½Ρ‹Π΅ ΠΎ судах ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… Π² исходных модСлях (XML, рСляционная)

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы

(рСляционная модСль)

<ERRTableShips> <Id>64694571</Id> <Name>мвс Ростов Π’Π΅Π»ΠΈΠΊΠΈΠΉ</Name> <Callsing>UBZG5</Callsing> <Dates> <StartDate>2017-01-08 </StartDate> <EndDate>2017-01-09</EndDate> <Dates> </ERRTableShips> [{ "Platforma_nazvanie": "мвс Ростов Π’Π΅Π»ΠΊΠΈΠΉ", "Strana_naimenovanie": "Россия", "Organizaciya_nazvanie": "Π€Π“Π£ΠŸ БалтийскоС БАБУ – Бахалинский Ρ„ΠΈΠ»ΠΈΠ°Π»", "Pozyvnoj": "UBZG5", "nomer_IMO": "9586796" }]

SARUnit( beginDuty, endDuty, vehicle) Vessel( PK vehicleId, name, call, country, FK owner, imoNumber) LegalEntity( PK entityId, name)

Π’ ΠΏΡ€Π°Π²ΠΎΠΌ столбцС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ элСмСнты

Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ исходным Π΄Π°Π½Π½Ρ‹ΠΌ. Π”Π°Π½Π½Ρ‹Π΅, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ судну, ΠΊΠ°ΠΊ транспортному срСдству, сосрСдоточСны Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Vessel; ΠΊΠ°ΠΊ ΡΠΏΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ – Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ SARUnit; ΠΊΠ°ΠΊ ΡŽΡ€ΠΈΠ΄ΠΈΡ‡Π΅ΡΠΊΠΎΠΉ сущности - Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ LegalEntity.

Π‘ использованиСм Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π° RIF-BLD Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ описываСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Forall ?Id ?name ?call ?beginDuty ?endDuty ?country ?ownerName ?imoNumber ( Exists ?owner ( AND( SARUnit(beginDuty->?beginDuty endDuty->?endDuty vehicle->?Id ) Vessel(vehicleId->?Id name->External(normalize(?nazv)) call->?call Country->?country owner->?owner imoNumber->?imoNumber) ) LegalEntity(entityId->?owner name->?ownerName) )) :- AND( ?ERRTableShips#ERRTableShips ?ERRTableShips[Id->?Id Name->?name Callsing->?call Dates->?Dates] ?Dates#Dates ?Dates[StartDate->?beginDuty EndDate->?endDuty] Ship("Platforma_nazvanie"->?nazv "Pozyvnoj"->?call "Strana_naimenovanie"->?country "Organizaciya_nazvanie"->?ownerName "nomer_IMO"->?imoNumber) External(compareShipName(?name, ?nazv)) ))

200

Page 5: Specification and Implementation of Multimodel Data

Аналогично ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, описанному Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅, Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΊΠΎΠ½ΡŠΡŽΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ½ΡŠΡŽΠ½ΠΊΡ†ΠΈΡ Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎΠ΄ ΠΊΠ²Π°Π½Ρ‚ΠΎΡ€ сущСствования (Exists) ΠΏΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ?owner1, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ (Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π² исходных Π΄Π°Π½Π½Ρ‹Ρ…) являСтся ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ entityId Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ LegalEntity ΠΈ внСшним ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Vessel.

Π’ Ρ‚Π΅Π»Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΊΠΎΠ½ΡŠΡŽΠ½ΠΊΡ†ΠΈΠ΅ΠΉ соСдиняСтся ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ Ship, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΈΠ· систСмы Π•Π‘Π˜ΠœΠž, ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹ члСнства ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ²Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ структурС XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠ· систСмы «Поиск-ΠœΠΎΡ€Π΅Β».

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€Π°Π²ΠΈΠ»Π° являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ соСдинСнии сущностСй ΠΈΠ· исходных ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ происходит ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° соотвСтствиС ΠΈΠΌΠ΅Π½ судов с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ записСй ΠΈ ошибки) ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ compareShipName.

Π’Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ

Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² языкС HIL ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ (объявлСния сущностСй ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠΏΡƒΡ‰Π΅Π½Ρ‹): create link ShipLink as select [ Callsing_Name: [Callsing: es.Callsing, Name: es.Name], "Pozyvnoj_Platforma_nazvanie": ["Pozyvnoj": s."Pozyvnoj", "Platforma_nazvanie": s."Platforma_nazvanie"]] from ERRTableShips es, Ship s match using rule1: es.Callsing = s."Pozyvnoj" and compareShipName(es.Name, s."Platforma_nazvanie"); insert into SARUnit select [ vehicle: s.Id, beginDuty: d.StartDate, endDuty: d.EndDate ] from ShipLink sl, ERRTableShips s, s.Dates d where sl.Callsing_Name.Name = s.Name and sl.Callsing_Name.Callsing = s.Callsing; insert into Vessel select [ vehicleId: s.Id, name: normalize(s."Platforma_nazvanie"), call: s."Pozyvnoj", country: s."Strana_naimenovanie", owner: get_id(s."Organizaciya_nazvanie"), imoNumber: s."nomer_IMO"] from ShipLink sl, Ship s where sl.Callsing_Name.Callsing = s."Pozyvnoj" and sl.Callsing_Name.Name = s."Platforma_nazvanie"; insert into LegalEntity select [ entityId: get_id(s."Organizaciya_nazvanie"), name: s."Organizaciya_nazvanie"] from ShipLink sl, Ship s where sl.Callsing_Name.Name =

1 Π‘Ρ‚Ρ€ΠΎΠ³ΠΎ говоря, ΠΊΠ²Π°Π½Ρ‚ΠΎΡ€ всСобщности Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π° RIF-BLD, ΠΎΠ΄Π½Π°ΠΊΠΎ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² каркас RIF-FLD.

s."Platforma_nazvanie" and sl.Callsing_Name.Callsing = s."Pozyvnoj";

Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ сущностСй исходных ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ производится с использованиСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ сущностСй create link. Π’ сСкции from ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ соСдиняСмыС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ (ERRTableShips, Ship), Π² сСкции select – составныС ΠΊΠ»ΡŽΡ‡ΠΈ (Callsing_Name, Pozyvnoj_Platforma_nazvanie), ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ исходныС сущности, ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ сопоставлСния сущностСй rule1 (совпадСниС ΠΏΠΎΠ·Ρ‹Π²Π½Ρ‹Ρ… ΠΈ соотвСтствиС ΠΈΠΌΠ΅Π½ с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ compareShipName).

Как ΠΈ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, описанном Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅, для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ insert. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ†Π΅Π»Π΅Π²Ρ‹Π΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π° основании Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅Ρ… сущностСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ связаны ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ create link.

ΠšΠ²Π°Π½Ρ‚ΠΎΡ€ всСобщности рСализуСтся с использованиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ get_id, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰Π΅ΠΉ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΈ, Ρ‚Π΅ΠΌ самым, ΠΎΠ·Π½Π°Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠ΄ΠΊΠ²Π°Π½Ρ‚ΠΎΡ€Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ?owner. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° присваиваСтся ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ LegalEntity.entityId ΠΈ Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ Vessel.owner.

3 БпСцификация ΠΈ рСализация ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ

Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ рассматриваСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ сущностями Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ. Π˜ΡΡ…ΠΎΠ΄Π½Π°Ρ коллСкция содСрТит сообщСния ΠΎ ΠΏΡ€ΠΎΠΈΡΡˆΠ΅ΡΡ‚Π²ΠΈΡΡ… Π² АрктичСской Π·ΠΎΠ½Π΅ ΠΈΠ· ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтСй ΠΈ сущности (пСрсоны, суда, гСографичСскиС Π»ΠΎΠΊΠ°Ρ†ΠΈΠΈ ΠΈ Ρ‚.Π΄.), ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π½Ρ‹Π΅ срСдствами Π°Π½Π°Π»ΠΈΠ·Π° тСкстов ΠΈΠ· сообщСний [8]. Π”Π°Π½Π½Ρ‹Π΅ хранятся Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π½ΠΎΠΉ Π‘Π£Π‘Π” MongoDB ΠΈ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ для дальнСйшСй ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π² Ρ„Π°ΠΉΠ»Π°Ρ… Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON.

Π’ Π»Π΅Π²ΠΎΠΌ столбцС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ 3 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ сообщСнии (Messages) ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ сущностях, ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΠ· сообщСния (Entites). Бвязь сообщСний ΠΈ сущностСй, ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΠ· Π½ΠΈΡ…, устанавливаСтся Π½Π° основании значСния составного ΠΊΠ»ΡŽΡ‡Π° id. Π’ ΠΏΡ€Π°Π²ΠΎΠΌ столбцС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ элСмСнты Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ исходным Π΄Π°Π½Π½Ρ‹ΠΌ.

Π’Π°Π±Π»ΠΈΡ†Π° 3 Π”Π°Π½Π½Ρ‹Π΅ ΠΎ сообщСниях ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… Π² исходной ΠΌΠΎΠ΄Π΅Π»ΠΈ (докумСнтная)

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы (рСляционная

модСль) {"Messages": [{ "id": {"coll_id": "8002", "res_id": { "site_id": "9b290c9f3bda", "doc_id": "3649a5559a62"}}, "annotation": "Chinese seismic vessel aimed for

Document( documentId, collection, source, content, time, language,

201

Page 6: Specification and Implementation of Multimodel Data

Russian #Barents Sea oil at logistics port #Kirkenes", "metafields": { "mf203": "2016-4-30", "mf205": "eng", "mf200": "iceblogger"} }]} {"Entities": [{ "id": {"coll_id": "8002", "res_id": { "site_id": "9b290c9f3bda", "doc_id": "3649a5559a62"}}, "entities": [ { "s_token": "Barents Sea", "s_tag": "I-ALOC", "s_end": 53, "s_begin": 42}, { "s_token": "Kirkenes", "s_tag": "I-ALOC", "s_end": 85, "s_begin": 77} ]}] }

author) ExtractedEntity( entityId, document, token, tag, begin end)

Π‘ использованиСм Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π° RIF-BLD ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ

ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ сообщСниях описываСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Forall ?m ?ext ?doc ?coll ?src ?cont ?time ?lang ?auth ?mid ?mres ?mf ?eid ?eres ( Exists ?ent( AND( Document(documentId->?doc collection->?coll source->?src content->?cont time->?time language->?lang author->?auth) ExtractedEntity(entityId->?ent document->?doc token->?tok tag->?tag begin->?beg end->?end) )) :- AND( ?m#Messages ?ext#Entities ?m[id->?mid annotation->?cont metafields->?mf] ?mid[coll_id->?coll res_id->?mres] ?mres[site_id->?src doc_id->?doc] ?mf[mf203->?time mf205->?lang mf200->?auth] ?ext[id->?eid entities->?ents] ?eid[coll_id->?coll res_id->?eres] ?eres[site_id->?src doc_id->?doc] ?ext#?ents ?ext[s_token->?tok s_tag->?tag s_begin->?beg s_end->?end] ))

Аналогично ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅, Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΊΠΎΠ½ΡŠΡŽΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы. Π’ Ρ‚Π΅Π»Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² члСнства ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ²Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½Π° структура Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… сообщСниям ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π½Ρ‹ΠΌ сущностям. ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² языкС HIL ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ:

insert into Document select [ documentId: mres."doc_id", collection: mid."coll_id", source: mres."site_id", content: m."annotation", time: mf."mf203", language: mf."mf205", author: mf."mf200"] from Message m, m."id" mid, mid."res_id" mres, m."metafields" mf; insert into ExtractedEntity select [ entityId: get_id(strcat( eres."site_id", eres."doc_id")), document: eres."doc_id",

token: e."s_token", tag: e."s_tag", begin: e."s_begin", end: e."s_end"] from Entities ext, ext."id" eid, eid."res_id" eres, ext.entities e;

Для ΠΎΠ±ΠΎΠΈΡ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ insert.

4 БпСцификация ΠΈ рСализация ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π³Ρ€Π°Ρ„ΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ

Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ рассматриваСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ сущностями Π³Ρ€Π°Ρ„ΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ. Π˜ΡΡ…ΠΎΠ΄Π½Π°Ρ коллСкция содСрТит Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΡΠΏΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… опСрациях, Π΄Π°Π½Π½Ρ‹Π΅ хранятся Π² Π³Ρ€Π°Ρ„ΠΎΠ²ΠΎΠΉ Π‘Π£Π‘Π” Neo4j ΠΈ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ для дальнСйшСй ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π² Ρ„Π°ΠΉΠ»Π°Ρ… Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON.

Π’ Π»Π΅Π²ΠΎΠΌ столбцС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ 4 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ ΡΠΏΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… опСрациях. Π”Π°Π½Π½Ρ‹Π΅ содСрТат Ρ‚Ρ€ΠΈ Π²ΠΈΠ΄Π° Π²Π΅Ρ€ΡˆΠΈΠ½ (Nodes): ΡΠΏΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ опСрация (SarOperation), ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ†Π΅Π½Ρ‚Ρ€ (CoordCenter), ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (Coordinator); ΠΈ Π΄Π²Π° Π²ΠΈΠ΄Π° Ρ€Π΅Π±Π΅Ρ€ (Relationships): rCoordCenter (Ρ€Π΅Π±Ρ€Π°, ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΈ Ρ†Π΅Π½Ρ‚Ρ€), rCoordinator (Ρ€Π΅Π±Ρ€Π°, ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΈ Π΅Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€Π°).

Π’Π°Π±Π»ΠΈΡ†Π° 4 Π”Π°Π½Π½Ρ‹Π΅ ΠΎ ΡΠΏΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… опСрациях ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… Π² исходной ΠΌΠΎΠ΄Π΅Π»ΠΈ (графовая)

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы (рСляционная

модСль) {"Nodes": [{"id":"12", "labels":["SarOperation"], "properties":{ "OperationID":"5824", "OperationDate": "2016-09-15T00:00:00", "OperationName": "Arctic Sunrise Sinking", "countrycode":"643"} }, {"id":"13", "labels":["CoordCenter"], "properties":{ "CoordCenterID":"mrcc667340", "Name":"MRCC Dikson"} }, {"id":"14", "labels":["Coordinator"], "properties":{ "Name": "Schurov V. A.", "CoordinatorID": "5773"} }]} { "Relationships": [{"id":"4", "type":"rCoordCenter", "startNode":"12", "endNode":"13"}, {"id":"9", "type":"rCoordinator", "startNode":"12", "endNode":"14"}] }

SAROperation( PK operationId, FK coordCenter, FK coordinator, country, creationTime, name) CoordinationCenter( PK centerId, name) Person( PK personId, name)

202

Page 7: Specification and Implementation of Multimodel Data

Π’ ΠΏΡ€Π°Π²ΠΎΠΌ столбцС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ элСмСнты Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ исходным Π΄Π°Π½Π½Ρ‹ΠΌ.

Π‘ использованиСм Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π° RIF-BLD интСграция Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ ΡΠΏΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… опСрациях описываСтся ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»: Forall ?pid ?name ?lbl ?prp( Person(personId->?pid name->?name) :- AND( ?n#Nodes ?n[labels->?lbl properties->?prp] "Coordinator"#?lbl ?prp[CoordinatorID->pid Name->?name])) Forall ?cid ?name ?lbl ?prp( CoordinationCenter(centerId->?cid name->?name) :- AND( ?n#Nodes ?n[labels->?lbl properties->?prp] "CoordCenter"#?lbl ?prp[CoordCenterID->cid Name->?name])) Forall ( SAROperation(operationId->?opid creationTime->?time name->?name country->?country coordCenter->?cntr coordinator->?coord) :- AND( ?n#Nodes ?n[id->?id] ?n[properties->?prp labels->?lbl] ?r1#Relatioships ?r2#Relatioships ?n1#Nodes ?n1[id->?id1] ?n2#Nodes ?n2[id->?id2] "SarOperation"#lbl ?r1[type->"rCoordCenter" startNode->?id endNode->?id1] ?r2[type->"rCoordinator" startNode->?id endNode->?id2] ))

ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы соотвСтствуСт свой Ρ‚ΠΈΠΏ Π²Π΅Ρ€ΡˆΠΈΠ½, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ SAROperation ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ с ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ "SarOperation" (Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ labels). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ своС ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ. ΠŸΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π³ΠΎΠ»ΠΎΠ²Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ». Π’ Ρ‚Π΅Π»Π°Ρ… ΠΏΡ€Π°Π²ΠΈΠ» ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² члСнства ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ²Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½Ρ‹ структуры Π΄Π°Π½Π½Ρ‹Ρ…, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌ ΠΈ Ρ€Π΅Π±Ρ€Π°ΠΌ Π³Ρ€Π°Ρ„Π°.

ΠŸΡ€Π°Π²ΠΈΠ»Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² языкС HIL ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ: insert into Person select [ personId: prp."CoordinatorID", name: prp."Name"] from Nodes n, n."properties" prp, n."labels" lbl where array_includes(lbl, "Coordinator"); insert into CoordinationCenter select [ centerId: prp."CoordCenterID", name: prp."Name"] from Nodes n, n."properties" prp n."labels" lbl where array_includes(lbl, "CoordCenter"); insert into SAROperation select [ operationId: prp."OperationID",

creationTime: prp."OperationDate", name: prp."OperationName", country: prp."countrycode", coordCenter: prp1."CoordCenterID", coordinator: prp2."CoordinatorID"] from Nodes n, n."properties" prp, n."labels" lbl, Relationships r1, Relationships r2, Nodes n1, Nodes n2 where array_includes(lbl, "SarOperation") and n."id" = r1."startNode" and r1."type" = "rCoordCenter" and n1."id" = r1."endNode" and n."id" = r2."startNode" and r2."type" = "rCoordinator" and n2."id" = r2."endNode";

КаТдоС ΠΈΠ· ΠΏΡ€Π°Π²ΠΈΠ» прСдставляСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ insert. ΠŸΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠ° Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "Coordinator"#?lbl) Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ с использованиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ array_includes: @jaql{ array_includes = fn(a, e) if (not exists(a->filter $ == e)) false else true; }

5 ΠžΠ±Ρ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ спСцификации ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… с использованиСм RIF-BLD ΠΈ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² языкС HIL

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ спСцификации ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… с использованиСм RIF-BLD, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ Π² Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: β€’ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π²ΠΈΠ΄ ΠΈΠΌΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ,

посылка ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ называСтся Ρ‚Π΅Π»ΠΎΠΌ, Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ – Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ;

β€’ Π³ΠΎΠ»ΠΎΠ²Π° ΠΈ Ρ‚Π΅Π»ΠΎ ΠΏΡ€Π°Π²ΠΈΠ» ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹, ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹ опСрациями ΠΊΠΎΠ½ΡŠΡŽΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ Π΄ΠΈΠ·ΡŠΡŽΠ½ΠΊΡ†ΠΈΠΈ;

β€’ Π² Ρ‚Π΅Π»Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ сущностям Ρ‚ΠΎΠ»ΡŒΠΊΠΎ исходных схСм, Π² Π³ΠΎΠ»ΠΎΠ²Π΅ – Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмС;

β€’ для описания свойств ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌ рСляционной ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π² ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹ с ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ [5];

β€’ для описания свойств структур Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ стСпСни влоТСнности (ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… нСрСляционных ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ – XML, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π½ΠΎΠΉ, Π³Ρ€Π°Ρ„ΠΎΠ²ΠΎΠΉ ΠΈ Ρ‚.Π΄.) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ²Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹ ΠΈ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹ члСнства [5];

β€’ связь Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² сущностСй исходных ΠΈ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСм осущСствляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…;

β€’ свободныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ Π² Ρ‚Π΅Π»Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ внСшним ΠΊΠ²Π°Π½Ρ‚ΠΎΡ€ΠΎΠΌ всСобщности;

β€’ свободныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°, Π½Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π² Ρ‚Π΅Π»Π΅ (фактичСски, ΠΎΠ½ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π°Π½Π½Ρ‹ΠΌ, Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ явно Π²

203

Page 8: Specification and Implementation of Multimodel Data

исходных коллСкциях), ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠ²Π°Π½Ρ‚ΠΎΡ€ΠΎΠΌ сущСствования;

β€’ Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹-условия (ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΡ‚ равСнства) ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ внСшниС Ρ‚Π΅Ρ€ΠΌΡ‹ [5].

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€Π°Π²ΠΈΠ»

ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° RIF-BLD Π² языкС HIL, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ Π² Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: β€’ сущности исходных ΠΈ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСм, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΈ Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹-условия ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ declare; для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ опрСдСляСтся ΠΈΡ… сигнатура;

β€’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π½Π° языкС Jaql Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… сСкциях ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π»ΠΈΠ±ΠΎ Π½Π° языкС Java Π²ΠΎ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ…;

β€’ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сущности (ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ) Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° создаСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ insert, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ этих ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ: o Π² сСкции from ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ исходныС

сущности, ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρƒ с ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρƒ члСнства Π² Ρ‚Π΅Π»Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° соотвСтствуСт объявлСниС с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ;

o Π² сСкции select ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ (Π² соотвСтствии с ΠΈΡ… названиями Π² ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π°Ρ… Π³ΠΎΠ»ΠΎΠ²Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»Π°) ΠΈ выраТСния пороТдСния ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ; выраТСния Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² соотвСтствии с Ρ‚Π΅Ρ€ΠΌΠ°ΠΌΠΈ Π² ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π°Ρ… Π³ΠΎΠ»ΠΎΠ²Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π»ΠΈΠ±ΠΎ с Ρ‚Π΅Ρ€ΠΌΠ°ΠΌΠΈ Π²ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ²Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π°Ρ… Ρ‚Π΅Π»Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°;

o Π² сСкции where ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹, ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠ΅ способы соСдинСния исходных сущностСй (Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π½Π° основании совпадСния ΠΈΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π²ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ²Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π°Ρ… Ρ‚Π΅Π»Π°) ΠΈ ΠΈΡ… ΠΎΡ‚Π±ΠΎΡ€Π° (ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π°ΠΌ, Π½Π°Π»Π°Π³Π°ΡŽΡ‰ΠΈΠΌ условия Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… исходных ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π² Ρ‚Π΅Π»Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°);

β€’ Ссли соСдинСниС сущностСй исходных ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π² Ρ‚Π΅Π»Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° осущСствляСтся с использованиСм Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ² ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΡ‚ равСнства Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²), ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ соСдинСниС сущностСй производится с использованиСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ сущностСй create link: o Π² сСкции from ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ соСдиняСмыС

ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ; o Π² сСкции select ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ составныС

ΠΊΠ»ΡŽΡ‡ΠΈ, ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ исходныС сущности;

o Π² сСкции match ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²ΠΈΠ»Π° сопоставлСния сущностСй;

o коллСкция ΠΏΠ°Ρ€ сопоставлСнных сущностСй Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… insert, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΡ… ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ

Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ.

6 Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π’ Ρ€Π°Π±ΠΎΡ‚Π΅ рассматриваСтся ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ

спСцификации ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… с использованиСм Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ W3C - логичСского Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π° RIF-BLD. Π¨ΠΈΡ€ΠΎΠΊΠΈΠΉ спСктр возмоТностСй спСцификации RIF-BLD позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π΅ сущности ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, прСдставлСнных Π² Ρ€Π°Π·Π½Ρ‹Ρ… модСлях Π΄Π°Π½Π½Ρ‹Ρ…. Π Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²ΠΈΠ»Π°, Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ лишь ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ сущностям Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы, Π° Π² Ρ‚Π΅Π»Π΅ – ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ сущностям исходных схСм. ЛогичСская сСмантика RIF-BLD позволяСт ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ спСцификации рассматриваСмых ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ допускаСт ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ с использованиСм Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языков. Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ рассматриваСтся ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ логичСских ΠΏΡ€Π°Π²ΠΈΠ» RIF-BLD Π² языкС высокого уровня HIL, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ IBM. ΠŸΡƒΡ‚Π΅ΠΌ компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° HIL Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ MapReduce достигаСтся распрСдСлСнноС исполнСниС ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π² срСдС Hadoop.

К дальнСйшим направлСниям Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ отнСсти вопросы ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ логичСских ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° RIF-BLD, Π² Ρ‚Π΅Π»Π°Ρ… ΠΏΡ€Π°Π²ΠΈΠ» ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ схСмы. Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΠΈ, Π² частности, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΏΠΎΠ³ΠΎΠ½ΠΈ [9]. Π”Ρ€ΡƒΠ³ΠΈΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ являСтся рСализация автоматичСского прСобразования спСцификаций RIF-BLD Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈ исполняСмыС Π½Π° распрСдСлСнных Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… инфраструктурах (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° языкС HIL).

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°. Π Π°Π±ΠΎΡ‚Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ ΠœΠΈΠ½ΠΈΡΡ‚Π΅Ρ€ΡΡ‚Π²Π° образования ΠΈ Π½Π°ΡƒΠΊΠΈ Российской Π€Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΠΈ (ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° RFMEFI60717X0176).

Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π° [1] Apache Hadoop Project. 2016.

http://hadoop.apache.org/ [2] Ballard, C., Alon, T., Dronavalli, N., Jennings, S.,

Lee, M., Toratani, S. IBM InfoSphere Information Server Deployment Architectures. ibm.com/redbooks (2012)

[3] Bar-Or, A., Choudhary, S. Transform XML using the DataStage XML stage. IBM developerWorks (2011)

[4] Beyer, K.S., Ercegovac, V., Gemulla, R., Balmin, A., Eltabakh, M., Kanne, C.-C., Ozcan, F., Shekita, E.J.: Jaql: A Scripting Language for Large Scale Semistructured Data Analysis. In: 37th International conference on very large data bases VLDB, pp. 1272-1283. Curran Associates, New York (2011)

204

Page 9: Specification and Implementation of Multimodel Data

[5] Boley, H., Kifer, M. (eds.): RIF Framework for Logic Dialects. W3C Recommendation, 2nd edn. (February 5, 2013)

[6] Boley, H., Kifer, M. (eds.): RIF Basic Logic Dialect. W3C Recommendation, 2nd edn. (February 5, 2013)

[7] Burdick, D., HernΓ‘ndez, M. A., Ho, H., Koutrika, G., Krishnamurthy, R., Popa, L., Stanoi, I.R., Vaithyanathan, S., Das, S.: Extracting, Linking and Integrating Data from Public Sources: A Financial Case Study. IEEE Data Eng. Bull., 34(3):60–67 (2011)

[8] Devyatkin, D., Shelmanov, A. Text Processing Framework for Emergency Event Detection in the Arctic Zone. In: Kalinichenko L., Kuznetsov S., Manolopoulos Y. (eds) Data Analytics and Management in Data Intensive Domains. DAMDID/RCDL 2016. Communications in Computer and Information Science, vol 706, pp. 74-88. Springer (2017)

[9] Fagin, R., Kolaitis, P., Miller, R., Popa, L.: Data exchange: semantics and query answering. Theoretical Computer Science, 336(1):89–124 (2005)

[10] Hernandez, M., Koutrika, G., Krishnamurthy, R., Popa, L., Wisnesky, R.: HIL: A high-level scripting language for entity integration. In: 16th Conference (International) on Extending Database Technology Proceedings EDBT 2013, pp. 549–560 (2013)

[11] IBM InfoSphere BigInsights Version 3.0 Information Center. https://goo.gl/lZpEQd

[12] InfoSphere Big Match for Hadoop. Technical Overview. - https://goo.gl/0TMqvw

[13] Introducing JSON. - http://www.json.org/ [14] Miner, D. MapReduce Design Patterns: Building

Effective Algorithms and Analytics for Hadoop and Other Systems. O'Reilly Media (2012)

[15] The Apache Hive data warehouse software. - http://hive.apache.org/

[16] Π‘Ρ€ΡŽΡ…ΠΎΠ², Π”. О., Π‘ΠΊΠ²ΠΎΡ€Ρ†ΠΎΠ², Н. А., Π‘Ρ‚ΡƒΠΏΠ½ΠΈΠΊΠΎΠ², Π‘. А. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ разноструктурированных Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ АрктичСской Π·ΠΎΠ½Π΅ для извлСчСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½Π°Ρ†Π΅Π»Π΅Π½Π½ΠΎΠΉ Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ поисково-ΡΠΏΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. БистСмы высокой доступности. Π’. 13, β„– 2. М.: Π Π°Π΄ΠΈΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠ° (2017) ΠŸΡ€ΠΈΠ½ΡΡ‚ΠΎ ΠΊ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

[17] Единая государствСнная систСма ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± обстановкС Π² ΠΌΠΈΡ€ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ΅Π°Π½Π΅. - http://portal.esimo.ru/portal

[18] КомплСксная интСгрированная информационная систСма «МоРС». - http://www.marsat.ru/ciis-more

[19] ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ комплСкс «Поиск-ΠœΠΎΡ€Π΅Β». - http://map.geopallada.ru/

[20] Π‘ΠΊΠ²ΠΎΡ€Ρ†ΠΎΠ², Н. А., Π‘Ρ€ΡŽΡ…ΠΎΠ², Π”. О. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° схСмы Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ поисковых дСйствий Π² АрктичСской Π·ΠΎΠ½Π΅. БистСмы высокой доступности. Π’. 13, β„– 2. М.: Π Π°Π΄ΠΈΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠ° (2017). ΠŸΡ€ΠΈΠ½ΡΡ‚ΠΎ ΠΊ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

205