View Issue Details

IDProjectCategoryView StatusLast Update
000916410000-006: MappingsSpecpublic2024-02-06 17:41
ReporterDavid Levine Assigned ToRandy Armstrong  
PriorityhighSeveritymajorReproducibilityalways
Status closedResolutionfixed 
Product Version1.05.02 
Target Version1.05.04 RC1Fixed in Version1.05.04 RC1 
Summary0009164: Description of reversible vs non-reversible JSON encoding is unclear (Part 6, 5.4.1)
Description

The spec mentions reversible vs non-reversible many times in many places, but there is no formal definition of what these terms mean. These should be defined in the Terms & Definitions section of part 6.

It reversible means the client can access all the metadata in the Server, then it should say so explicitly. If so, then it's not clear why "reversible" was chosen to mean this.

The paragraph of the use cases is confusing and assumes knowledge that many engineers may not have:

"...two important use cases for the JSON encoding: Cloud applications which consume PubSub messages and JavaScript Clients. For the Cloud application use case, the PubSub message needs to be self-contained which implies it cannot contain numeric references to an externally defined namespace table. Cloud applications also often rely on scripting languages to process the incoming messages so artefacts (sic) in the DataEncoding that exist to ensure fidelity during decoding are not necessary. "

The sentence "Cloud applications which consume PubSub messages and JavaScript Clients." reads like these are part of the same use case (it needs a comma). It explicitly states the first use case, but the second use case subject to misinterpretation. The first use case also mentions scripting languages, so using JavaScript as the 2nd use case example is confusing.

re: "...Cloud applications also often rely on scripting languages..."
What is it about scripting languages that make the need for fidelity not necessary? Why does this mean that the non-reversible form should be used? Are there other use cases that would help clarify where the reversible form can be used? I understand that pub-sub is one-way, so is there an assumption that JSON may be used with client-server, where the client can access the server's metadata?

From the examples in the encodings that follow, it appears that the reversible form assumes the client can access all the metadata in the Server, so data can contain values that refer to other entities within the Server, such as tables of namespaceURIs, serverURLs, etc. The non-reversible form assumes the client does not have access so additional or alternate forms of data must be sent, such as a namespaceURI instead of the index to it. If this is the case, why not just say so?

As written, one must read through the different data type encodings to get a sense of why there are 2 types of encodings and where they are used.

fyi: I asked other engineers who work with OPC what reversible vs non-reversible meant and they did not understand it either. One must really study this section to begin to understand what it means.

TagsNo tags attached.
Commit Version1.05.04 RC
Fix Due Date2023-11-15

Activities

Randy Armstrong

2023-10-18 02:28

administrator   ~0020205

Added terms to 1.05.04

3.1.6
NonReversibleEncoding
A DataEncoding where encoding and then decoding a data structure will not necessarily produce the same data structure.
3.1.8
ReversibleEncoding
A DataEncoding where encoding and then decoding a data structure will produce the same data structure.

Jim Luth

2024-02-06 17:41

administrator   ~0020776

Agreed to changes in web meeting.

Issue History

Date Modified Username Field Change
2023-09-21 23:56 David Levine New Issue
2023-09-26 15:09 Jim Luth Assigned To => Randy Armstrong
2023-09-26 15:09 Jim Luth Status new => assigned
2023-09-26 15:11 Jim Luth Commit Version => 1.05.04 RC
2023-09-26 15:11 Jim Luth Fix Due Date => 2023-11-15
2023-10-18 02:28 Randy Armstrong Status assigned => resolved
2023-10-18 02:28 Randy Armstrong Resolution open => fixed
2023-10-18 02:28 Randy Armstrong Note Added: 0020205
2024-02-06 17:41 Jim Luth Status resolved => closed
2024-02-06 17:41 Jim Luth Fixed in Version => 1.05.04 RC1
2024-02-06 17:41 Jim Luth Note Added: 0020776