Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π·Π½ΠΎΠΌΠΎΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΡΠ°Π²ΠΈΠ» ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ
Β© Π‘. Π. Π‘ΡΡΠΏΠ½ΠΈΠΊΠΎΠ² ΠΠ½ΡΡΠΈΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΊΠΈ Π€ΠΠ¦ ΠΠ£ Π ΠΠ,
ΠΠΎΡΠΊΠ²Π° [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
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
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
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
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΌΡ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π΅, Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΊΠΎΠ½ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΠΌ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΡ Π΅ΠΌΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠΎΠ½ΡΡΠ½ΠΊΡΠΈΡ Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΠΎΠ΄ ΠΊΠ²Π°Π½ΡΠΎΡ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ (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
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
Π ΠΏΡΠ°Π²ΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΡ Π΅ΠΌΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ Π΄Π°Π½Π½ΡΠΌ.
Π‘ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄ΠΈΠ°Π»Π΅ΠΊΡΠ° 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
ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΡ ), ΡΠ²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΊΠ²Π°Π½ΡΠΎΡΠΎΠΌ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ;
β’ Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ-ΡΡΠ»ΠΎΠ²ΠΈΡ (ΠΎΡΠ»ΠΈΡΠ½ΡΠ΅ ΠΎΡ ΡΠ°Π²Π΅Π½ΡΡΠ²Π°) ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΊΠ°ΠΊ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠ΅ΡΠΌΡ [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
[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