gs1 / gs1-syntax-dictionary

GS1 Barcode Syntax Dictionary and Syntax Tests
Apache License 2.0
13 stars 1 forks source link

Dlpkey = 10, resolution /10/.. and resolution &10=.. #7

Closed nerixs closed 8 months ago

nerixs commented 9 months ago

Hello,

The documentation gives the following resolution for dlpkey 10 with GTIN: "dlpkey=22,10,21" - As above, with ordered, optional qualifier AIs "https://../01/../22/../10/../21/.." - valid "https://../01/../22/../21/.." - valid (good order) "https://../01/../10/.." - valid (good order) "https://../01/../10/../22/.." - invalid (bad order)

With SSCC: "https://../00/..?02=..&37=..&10=.." - valid

Is this a unique case? Or is it a special rule? Are there any other cases where a dlpkey would be translated this way? "https://../PrimaryKey/..?KeyQualifier=.."

terryburton commented 9 months ago

I'm not sure that I understand the question.

The rules in the Syntax Dictionary are direct consequences of the ABNF grammar presented in the GS1 DL URI Syntax standard section 4.9 "Path element order". The dlpkey rules apply identically to their respective AIs. The example gives is merely an example of the operation of the rule and is not a special case.

In the context of AI (01), the AIs (22), (10) and (21) are Key Qualifiers. However in the context of AI (00), there are no key qualifiers. AIs such as (02), (37) and (10) are regular attributes, and not qualifiers of the primary identification key (00).

Note: GenSpecs AI Definitions for (00) states "The structure and content of the serial reference is at the discretion of owner of the GS1 Company Prefix to uniquely identify each logistic unit." Additional "qualifier AIs" are not required to serialise the logistic unit.

nerixs commented 9 months ago

Thank you for your reply. If I understand correctly, Ais KeyQualifiers that are not attached to a PrimaryKey are treated as DataAttributes.

terryburton commented 9 months ago

Within the context of GS1 Digital Link, an AI's position within the URI is solely what determines whether it is referred to as a Key Qualifier (path info component) or an Attribute (query parameter).

Strictly speaking, the ABNF grammar determines what a valid GS1 DL URI looks like. And that's all. Other resources such as the GenSpecs and Vocabulary infer meaning to valid URI forms.

nerixs commented 8 months ago

Hello,

Thank you for your previous explanations.

The AI: 10 "Batch/Lot" is a Key qualifiers, it can also be used as a data attribute in conjunction with an SSCC [AI (00)] and a CONTENT [AI (02) ] to indicate that the SSCC contains the GTINs of a specific batch. Key qualifiers lot-code = "10" ; Batch/Lot identifier Data attributes lotParamete = "10" ; Batch/Lot identifier

AI: 8020 "Payment Reference Number" is also a qualifier, and is also declared as a data attribute. Key qualifiers refno-code = "8020" ; Payment Reference Number Data attributes refNoParameter = "8020" ; Payment Reference Number Under which conditions? With which Primary key?

Do you have any examples?

The AI: 715 "nhrnUS-FDAParameter" is a Data attribute, but is not managed by queryStringParam. Do you have an explanation?

Best regards

mgh128 commented 8 months ago

AI: 10 "Batch/Lot" is a key-qualifier of GTIN (01) when GTIN is the primary key in a GS1 Digital Link URI. When SSCC is the primary key, AI (10) is not a key qualifier of SSCC, so it appears as a data attribute in the URI query string, nor within the path information. In that situation, it is understood to be paired with (02) CONTENT GTIN, which is also a data attribute of an SSCC for a homogeneous logistic unit.

AI (8020) Payment Reference Number is a key qualifier only when the primary key is AI (415) - GLN of the invoicing party. Please see https://ref.gs1.org/ai/415 .
However, it does look as though the ABNF grammar in https://ref.gs1.org/standards/digital-link/uri-syntax/ does need to be updated in section 4.9 to indicate that

payTo-path = payTo-comp [refno-comp]

You're also correct the queryStringParameter should include nhrnUS-FDAParameter since it already includes nhrnPZNParameter /nhrnCIPParameter / nhrnCNParameter / nhrnDRNParameter

Thanks for alerting us to these inconsistencies. I'll alert our editing team for the GS1 Digital Link URI Syntax standard and ensure that they are corrected.

terryburton commented 8 months ago

Please use block quoting (">") and provide references to make it clear what is being quoted and what is observation.

The AI: 10 "Batch/Lot" is a Key qualifiers, it can also be used as a data attribute in conjunction with an SSCC [AI (00)] and a CONTENT [AI (02) ] to indicate that the SSCC contains the GTINs of a specific batch.

I can find a similar reference to this towards the end of GS1 Digital Link Standard: URI Syntax version 1.4.1, section 4.10.

The comment is that Batch/Lot is a Key Qualifier that is subordinate to AI (01), and is also a general Data Attribute (unsubordinated) and therefore applies in the case of AI (00).

AI: 8020 "Payment Reference Number" is also a qualifier, and is also declared as a data attribute...

I can find no direct reference for this, however your observation is indeed correct.

Under which conditions? With which Primary key?

Looking only at the current document's change notes, I postulate that (8020) was historically a Key Qualifier for AI (415), (via payTo-path) which was subsequently removed from the specification and later reinstated without (8020) being a valid Key Qualifier. refno-comp et al are now dangling references within the grammar.

Within the AI system, (8020) is mandatory with (415) is used, therefore as things currently stand 8020 must be used as a query parameter., although the Syntax Dictionary still has reference to it being a valid key qualifier — and will therefore enforce this.

Perhaps @mgh128 or @philarcher can confirm the history and can confirm whether in the context of AI (415) it is intended for (8020) to be a key qualifier (payTo-path needs to be updated) or a data data attribute (references to refno-comp et al need to be culled).

The AI: 715 "nhrnUS-FDAParameter" is a Data attribute, but is not managed by queryStringParam. Do you have an explanation?

This looks like an omission from the definition of queryStringParam.

The GS1 Syntax Dictionary is a tool that for transformation of GS1 AI based data. It is not itself part of any definition for what is a valid GS1 DL URI. So @philarcher, if there is a better place to host discussion about GS1 Digital Link errata then feel free to take it there. (If not, I'm happy for it to remain here.)

terryburton commented 8 months ago

Ships crossed at night. Thanks @mgh128

mgh128 commented 8 months ago

Ships crossed at night. Thanks @mgh128

I thought that might happen! I've alerted @philarcher and @PetaDing-GS1

nerixs commented 8 months ago

Hello,

Thank you for your answers.

Still according to the documentation: GS1 Digital Link Standard: URI Syntax "Release 1.4.1, Jul 2023"

percentOffCode = "3940" / "3941" / "3942" / "3943" / "3944" / "3945"

Ais: 3944 and 3945 are not present in GS1 Application Identifiers (https://ref.gs1.org/ai/).

-

Conversely, Ais: 3906, 3907, 3908, 3909 3916, 3917, 3918, 3919 3926, 3927, 3928, 3929 3936, 3937, 3938, 3939 3954, 3955, 3956, 3957, 3958, 3959 4309 7011 7240 8200 They are not present in the GS1 Digital Link Standard: URI Syntax documentation. Do you have an explanation?

Kind regards

mgh128 commented 8 months ago

Thanks for this further feedback - very helpful.

"3944" and "3945" should not appear in the GS1 Digital Link URI Syntax document because the value consists of 4 digits, rather than 6 digits, so we can't reliably say that there are four or five decimal places.

They are correctly not shown in the GS1 Barcode Syntax Resource (BSR) dictionary at https://github.com/gs1/gs1-syntax-dictionary/blob/2023-12-11/gs1-syntax-dictionary.txt

Regarding the following: 3906, 3907, 3908, 3909 3916, 3917, 3918, 3919 3926, 3927, 3928, 3929 3936, 3937, 3938, 3939 3954, 3955,

3956, 3957, 3958, 3959 do not appear in the BSR dictionary because the value is six digits, so only 3950-3955 are valid and can express a plausible number of decimal places without ambiguity.

4309, 7011, 7240 are relatively new and may have been overlooked. They should be included in the GS1 Digital Link Standard: URI Syntax standard

8200 was an extended packaging URL that was developed before GS1 Digital Link URIs and is less capable - limited to GTIN only - not other GS1 identification keys and no support for finer granularity than GTIN. Although AI (8200) has not been deprecated, it is not expected that it would typically be used within a GS1 Digital Link URI.

@philarcher , @PetaDing-GS1 - we also need to consider this feedback and making these updates to the GS1 Digital Link URI Syntax standard.

PetaDing-GS1 commented 8 months ago

Thank you @nerixs for your helpful queries and observations. And thank you @terryburton and @mgh128 for your responses. I am working on updates to the GS1 Digital Link standard: URI syntax at the moment, so I will collate these comments for consideration within this block of updates, as I believe they are in scope for the currrent work request.

So @philarcher, if there is a better place to host discussion about GS1 Digital Link errata then feel free to take it there. (If not, I'm happy for it to remain here.)

Please correct me if wrong @philarcher, but we do not have any other forum to discuss this type of errata at the moment, besides the ID-AIDC SMG, subject to submission of a formal work request. So if its OK, lets keep this discussion here for the moment, as the observations arose from working with this repo. I will respond with confirmation of what actions will be taken, and aim to close this ticket once resolved.

nerixs commented 8 months ago

In comparison with the previous version of GS1 Application Identifiers.

1) AIs: 3956, 3957, 3958 and 3959 have been removed from GS1 Application Identifiers (ref.gs1.org/ai/), GS1 Digital Link Standard: URI Syntax must be updated.

2) AIs: 4330, 4331, 4332, 4333 7241, 7242 8030 Added to GS1 Application Identifiers (ref.gs1.org/ai/) GS1 Digital Link Standard: URI Syntax must be updated.

PetaDing-GS1 commented 8 months ago

Hello @nerixs - thank you!

I can confirm that the following AIs have never been included in the GS1 Digital Link Standard: URI Syntax and will not be added:

AIs: 3956, 3957, 3958 and 3959 have been removed from GS1 Application Identifiers (ref.gs1.org/ai/), GS1 Digital Link Standard: URI Syntax must be updated.

I can also confirm that the following AIs will be added to the next release of the GS1 Digital Link Standard: URI Syntax. The draft changes have been submitted for formal review and approval by the GS1 community:

AIs: 4330, 4331, 4332, 4333 7241, 7242 8030 Added to GS1 Application Identifiers (ref.gs1.org/ai/) GS1 Digital Link Standard: URI Syntax must be updated.

When the updated standard is published, this resource will be updated to reflect the changes. I believe all outstanding questions and feedback on this ticket are now addressed, so will now close the ticket.