GS1's work on identifiers, resolvers and resources

TL;DR - concepts of resolving identifiers to multiple possible
destinations is being actively discussed elsewhere as well as here and
there *may* be room for some commonality of approach with DID
resolution. There's likely to be some ISO work in this area soon.

Dear all,

I finally (finally!) got around to reading the resolution spec which is
very interesting if difficult to read. As a suggestion, because you're
writing something abstract that only becomes real for a given DID
Method, it would be really to have a running example throughout - that
would make the whole thing easier to understand I'd say.

Anyway...

GS1 has been issuing identifiers for 45 years, the best known of which
is what we nowadays call the GTIN but you may know it as the EAN/UPC or
simply 'barcode.' My work is primarily about making those identifiers
resolvable on the Web so that things like this will work:

https://id.gs1.org/gtin/09506000134352

which is a concrete example of the more general

https://{resolver}/{idType}/{idValue}

We can add things like batch numbers, serial numbers, expiry dates and
more but that'll do for now.

If you resolve a GTIN (product barcode) and you're a consumer, you're
probably after something like a product information page - which is what
you get if you click that first link. As that's a food item, you might
want to find something like a recipe idea for that product

https://id.gs1.org/gtin/09506000134352?linkType=recipeInfo

or product sustainability information

https://id.gs1.org/gtin/09506000134352?linkType=productSustainabilityInfo

If you're a developer, you might want all the links available for a
given item, which is what you get if you click

https://id.gs1.org/gtin/09506000134352?linkType=all

(conneg gives you that in HTML or JSON, with JSON-LD coming soon).

So there's a difference with DIDs: in the GS1 context, the default that
makes sense is to pass you on to 'something directly useful' rather than
a document that contains links to things that might be useful but you
can get the machine readable list of stuff if you want. In contrast,
DIDs give you the machine readable document by default and redirect you
somewhere else if you really want it.

But there's a lot of common thinking there, no?

Btw, I'll make a comment in GH about the notion of a resolver
description file - we have such a thing

https://id.gs1.org/.well-known/gs1resolver

and we have things like one resolver redirecting to another if it
doesn't have info about the identified item, and we're thinking that, in
future, we might define a format for a small data file that can help you
find the right resolver for your identifier without going through
multiple HTTP redirects.

GS1 is working with HTTP, so the thinking is all Webby and Link Data.
Try this, for example

curl -I https://id.gs1.org/gtin/09506000134352
HTTP/1.1 307 Temporary Redirect
Date: Mon, 18 Nov 2019 12:22:21 GMT
Server: Apache/2.4.38 (Debian)
X-Powered-By: PHP/7.3.11
Link: <https://dalgiardino.com/risotto-rice-with-mushrooms/>; rel="pip";
type="text/html"; hreflang="en"; title="Product information page",
<https://dalgiardino.com/mushroom-squash-risotto/>; rel="recipeinfo";
type="text/html"; hreflang="en"; title="Recipe website",
<https://dalgiardino.com/where-to-buy/>; rel="hasretailers";
type="text/html"; hreflang="en"; title="Retailers",
<https://dalgiardino.com/about/>; rel="productsustainabilityinfo";
type="text/html"; hreflang="en"; title="sustainability and recycling"
Location: https://dalgiardino.com/risotto-rice-with-mushrooms/
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: HEAD, GET, OPTIONS
Access-Control-Expose-Headers: Link, Content-Length
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
Content-Type: text/html; charset=UTF-8

Note the HTTP Link Header that has all the available links in it,
including what we can linkTypes (@rel values), titles and hreflang
attributes.

We can add more than just the linkType in the query params, we can also
have a 'context' which can be anything, but location is a typical use
case (tell me about this product in the UK cf. this product in France)
and we support Accept and Accept-Language HTTP request headers. That's a
bunch of parameters that form a matrix of possible redirections :-)

Related conversations are going on elsewhere that I think are likely to
lead to some standardisation work at ISO before long. From GS1's POV,
that will be important and I hope ideas around resolvers, defaults,
redirections, link types etc. will be part of that discussion - but it's
too early to offer any concrete info as yet.

Chapter and verse on what we call GS1 Digital Link is in a draft standard at
https://www.gs1.org/sites/default/files/docs/gsmp/gs1_digital_link_1.1_comrev_version_786.pdf.
Chapter 8 is about resolvers.

Enough for one email.

I'm happy to talk more about any of this if people want, but equally
happy to keep quiet.

Cheers

Phil

--
Phil Archer
Director, Web Solutions, GS1
https://www.gs1.org

https://philarcher.org
+44 (0)7887 767755
@philarcher1
Skype: philarcher
A word on abbreviations I sometimes use in email:
https://philarcher.org/diary/2019/emailabbreviations/

CONFIDENTIALITY / DISCLAIMER: The contents of this e-mail are  confidential and are not to be regarded as a contractual offer or acceptance from GS1 (registered in Belgium). 
If you are not the addressee, or if this has been copied or sent to you in error, you must not use data herein for any purpose, you must delete it, and should inform the sender. 
GS1 disclaims liability for accuracy or completeness, and opinions expressed are those of the author alone. 
GS1 may monitor communications. 
Third party rights acknowledged. 
(c) 2016.

Received on Monday, 18 November 2019 12:37:00 UTC