|
1 | 1 | { |
2 | 2 | "cells": [ |
3 | 3 | { |
| 4 | + "attachments": {}, |
4 | 5 | "cell_type": "markdown", |
5 | 6 | "metadata": {}, |
6 | 7 | "source": [ |
|
10 | 11 | "\n", |
11 | 12 | "Refinitiv Machine Readable News (MRN) is an advanced service for automating the consumption and systematic analysis of news. It delivers deep historical news archives, ultra-low latency structured news and news analytics directly to your applications. This enables algorithms to exploit the power of news to seize opportunities, capitalize on market inefficiencies and manage event risk.\n", |
12 | 13 | "\n", |
13 | | - "### MRN Data model\n", |
| 14 | + "MRN aims for replacing the legacy News 2K (N2_UBMS and N2_STORY).\n", |
| 15 | + "\n", |
| 16 | + "### MRN Data behavior\n", |
14 | 17 | "MRN is published over Elektron using an Open Message Model (OMM) envelope in News Text Analytics domain messages. The Real-time News content set is made available over MRN_STORY RIC. The content data is contained in a FRAGMENT field that has been compressed, and potentially fragmented across multiple messages, in order to reduce bandwidth and message size.\n", |
15 | 18 | "\n", |
16 | 19 | "A FRAGMENT field has a different data type based on a connection type:\n", |
|
24 | 27 | "3. The compressed JSON is split into a number of fragments (BUFFER or Base64 ascii string) which each fit into a single update message\n", |
25 | 28 | "4. The data fragments are added to an update message as the FRAGMENT field value in a FieldList envelope\n", |
26 | 29 | "\n", |
27 | | - "Therefore, in order to parse the core content data, the application will need to reverse this process. The WebSocket application also need to convert a received Base64 string in a FRAGMENT field to bytes data before further process this field.\n", |
| 30 | + "\n", |
| 31 | + "<img src=\"images/mrn_process.png\"/>\n", |
| 32 | + "\n", |
| 33 | + "Therefore, in order to parse the core content data, the application will need to reverse this process. The WebSocket application also need to convert a received Base64 string in a FRAGMENT field to bytes data before further process this field." |
| 34 | + ] |
| 35 | + }, |
| 36 | + { |
| 37 | + "cell_type": "markdown", |
| 38 | + "metadata": {}, |
| 39 | + "source": [ |
| 40 | + "### MRN Data model\n", |
28 | 41 | "\n", |
29 | 42 | "Five fields, as well as the RIC itself, are necessary to determine whether the entire item has been received in its various fragments and how to concatenate the fragments to reconstruct the item:\n", |
30 | 43 | "* MRN_SRC: identifier of the scoring/processing system that published the FRAGMENT\n", |
|
45 | 58 | "\n", |
46 | 59 | "When an MRN data item is sent in multiple messages, all the messages must be received and their FRAGMENTs concatenated before being decompressed. In other words, the FRAGMENTs should not be decompressed independently of each other.\n", |
47 | 60 | "\n", |
48 | | - "The decompressed output is encoded in UTF-8 and formatted as JSON.\n" |
| 61 | + "The decompressed output is encoded in UTF-8 and formatted as JSON." |
49 | 62 | ] |
50 | 63 | }, |
51 | 64 | { |
|
168 | 181 | ] |
169 | 182 | }, |
170 | 183 | { |
171 | | - "attachments": {}, |
172 | 184 | "cell_type": "markdown", |
173 | 185 | "metadata": {}, |
174 | 186 | "source": [ |
|
218 | 230 | "#### News Fragments simple handle logic\n", |
219 | 231 | "\n", |
220 | 232 | "\n", |
221 | | - "<img src=\"images/mrn_flowchart.png\"/>\n" |
| 233 | + "<img src=\"images/mrn_flow_reconstruct.png\"/>\n" |
222 | 234 | ] |
223 | 235 | }, |
224 | 236 | { |
|
0 commit comments