-
Notifications
You must be signed in to change notification settings - Fork 38
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Stable URIs for registered relation types #140
Comments
i would consider even stronger wording, such as "the resulting URIs MAY NOT be used outside of well-defined environments, and any serialization depending on registered IANA link relations MUST use the registered strings as link relation type identifiers." maybe that's too strict, but i think there's quite a risk here that the URIs will creep out of the places where they need to be used (such as RDF models that would like to use them as predicates) into the rest of the world where they really really shouldn't be used. establishing a URI convention substantially increases that risk, so trying to contain it with strong language may be in order. |
Reopening to discuss that, and to remember we need to finalise the URL (considering things like / vs # ), and perhaps instruct IANA about what to do. |
@dret your concern is that services start using the URI and break applications which rely on the simple rel string, right? "Serialisations such as RDF that have no implicit notion of unique IANA link relations MAY refer to them with a URI [RFC3986] by prepending them with "http://www.iana.org/assignments/relation/". Note that the resulting strings are not considered equivalent to the registered relation types by many processors, and therefore MUST NOT be used for serialisations which have an implicit notion of registered IANA relation types." |
"Serialisations such as RDF that have no implicit notion of unique IANA
link relations MAY refer to them with a URI [RFC3986] by prepending them
with "http://www.iana.org/assignments/relation/". Note that the
resulting strings are not considered equivalent to the registered
relation types by many processors, and therefore MUST NOT be used for
serialisations which have an implicit notion of registered IANA relation
types."
maybe i am not quite understanding your usage of the term "implicit"
here. to me, the fundamental problem we're discussing is RDF's lack of
structural (i.e., coherent) context. in HTML/XML (and JSON), it is
trivial to say something like this:
<link href="...." rel="relation"/>
the @rel attribute is only meaningful in the context of the link
element, and the model provides that kind of context. that kind of
context is lacking in RDF, which is why strings (that need context to be
meaningful) don't work. that's how i see the underlying problem of RDF's
inability to use non-URI identifiers.
are we in agreement? if yes, then maybe it would be better to talk about
"context-dependent identifiers" or something along these lines? i am
mostly struggling with your term "implicit notion", which i don't quite
know how to interpret.
|
By implicit notion I mean: when an application interprets an HTTP link header or an HTML link element, it can assume that a non-URI @rel value must be a IANA registered rel. Why can it assume that? That fact is not explicit in the link representation, but the application must bring along knowledge about the general implications of an HTTP link header. By being an HTTP link header, the rel attribute implies that its value is either an IANA registered rel or a custom rel. If I may rephrase what you said, the context of an HTTP link makes it clear that the rel is a registered rel. One more try: |
Or maybe more straightforward: "Applications which have no concept of context-dependent identifiers to support plain strings as IANA registered link relation types MAY refer to them with a URI [RFC3986] by prepending them with "http://www.iana.org/assignments/relation/". Note that the resulting strings are not considered equivalent to the registered relation types by many processors, and therefore MUST NOT be used in contexts where simple strings are known to be registered IANA relation types." |
As I understand it:
@dret , do you know of any other specs which in normative way specifies that any string used in a particular context, references a link relation from IANA registry? Maybe simply stating something in lines: "In HTTP headers[2], HTML links[1] or other environments which define in normative way usage of link relations from IANA registry, applications MUST use link relations short sting form. In environments which does not allow use of short string form and enforce use of URIs for identifiers, for example all RDF serializations[3], applications SHOULD reference link relations by prefixing their short string form with "http://www.iana.org/assignments/relation/'". It definitely needs better wording, but as much as possible I see it helpful to keep it simple and to the point, without introducing any conceptually heave ideas. [1] http://www.w3.org/TR/html5/links.html |
the difference here is that HTML(5) and HTTP are talking about links http://dracoblue.net/dev/overview-of-json-hypermedia-link-formats/
there are many (start with above link) and it would be futile and a
not quite, i think. there is no "short string form". the short string |
Above statements don't seem to take into account environments like RDF which require use of URIs, and to my understanding we try here provide a way to still have there a proper reference to the registered type. How about something like "... aplications MUST NOT add 'http://www.iana.org/assignments/relation/' prefix with exception where particular environment does not support use of references other than URIs (for example all RDF serializations)" |
@dret I think we all better trust you and Mark with your spec editorial experience. I would just like to make two requests
This one I see very much related to #144 and very likely decisions there will influence the final recommended prefix. I guess we may end up with "http://www.iana.org/assignments/relation/#" |
@elf-pavlik wrote:
It also seem to not take into account that RFC 4287 has described this algorithm for almost 10 years now.
Yes, that would be good. But it would work so much better if the resulting page wasn't just an enormous HTML |
BTW, here's my suggested RDFa-from-XSLT approach: (from #39) https://gist.github.com/stain/d4656bede203b7c3ba4e |
@stain great to see your concrete proposal! I still think that W3C should take responsibility of all the RDF related aspects (possibly using your XSLT) and IANA page could simply link to it using appropriate link relations, as I propose in #144 (comment) |
+1 to http://www.iana.org/assignments/relation/# Do you even need the final trailing "/"? Doesnt make a huge difference in the grand scheme of things. May I request that the final resource is CORS enabled? |
i am starting to wonder if it wouldn't make sense to start a separate document listing a number of requirements for IANA registries (also including #144 and maybe even #40) and how they are exposed. while not all of IANA's registries will need something like this, for many it might be useful, and least some aspects of it, so separating this issue into a standalone document might be useful to make it reusable. but then again, @mnot would be the right person to say whether that's a realistic and reasonable goal to have, or whether this would be too much effort for something that might see less (or no) reuse regardless of the best intentions. |
@dret - no, that's been tried and failed before, and I'd like to avoid doing so for now. All - can we please keep issues discussion on-topic? I'm very happy to have the discussion, but not when it veers all over the place. Thanks. |
I'd also say 👍, but with one exception: Drop the trailing
It is more in line with how such fragment URIs tend to look, and there's nothing to gain by having the trailing slash, is there? |
Given that relations are all defined in a single resource, I agree that |
@asbjornu @gkellogg I agree that relation# makes more sense than relation/ but RFC4287 did specify the latter, and this issue is about stability :) If there's really broad consensus to change it, I'm OK with that, but I wonder if we can determine that here. Also, is it really that important that they resolve to something relevant/non-404, or is that just Nice to Have? |
@dret What seems to be missing from your equation is the use-case of distributed creation of link relations, which was the reasoning behind section 4.2.7.2 of RFC 4287, IIRC. I also don't read RFC 5988 the same way as you, which I believe is one of the reasons this issue exists in the first place. I think the internet community still needs a way to mint proprietary link relations without the overhead of registering them in IANA. I believe that use-case will exist even if the process of registering relations is made a global showcase of bleeding edge user-friendlyness and simplicity. The solution we came up with in Atom WG to allow for distributed creation of link relations was to use a URI. To make that consistent with the non-URI relations that already existed, we invented a prefix that made Accidentally, the idea of using URIs have shown to fit with other use-cases as well, such as in RDF. However, I do think those are two different use-cases that shouldn't be conflated. |
On 2016-04-28 01:38, Asbjørn Ulsberg wrote:
for distributed creation, there are extension relation types, which seem https://tools.ietf.org/html/rfc5988#section-4.2
that's a very different discussion, on whether a registry is the right
then let's look at those use cases. so far i see little problems in
maybe. but that train has left the station a long time ago. there really
afaict, RDF seems to be the only model that has trouble using non-URI also, please keep in mind that originally, this issue was not about |
I understood that as of last iteration, depending on application spec marks identifying link relations with URIs as NOT RECOMMENDED but allowed. Which I see enough so that people who have reason to use NOT RECOMMENDED option can still do so. Now for example, after parsing HTTP Link header, RDF applications can simply store all the links as triples, of course during serializing triples for use in HTTP Link header, application must always remove the http://www.iana.org/assignments/relation/ prefix. While one can argue that each application can choose one's own prefix for that purpose, having a standard prefix to only use it in very specific cases makes thing interoperate better in many cases. For example if 👍 from me for providing standard prefix, marking it as NOT RECOMMENDED and shortly explaining possible interoperability issue when using it in not appropriate application. |
E.g., as Atom does, or as RDF probably would.
If you implement a parser that ingests links from a serialisation that has such a mapping, it's your responsibility to convert them to registered link relations before serialising them into another format. It needs to be a requirement of the serialisation. |
WRT 2 specified vs n -- The problem is that Atom already specifies one extra way to serialise registered relation types, and many have expressed dissatisfaction with that base URI (because it's controlled by IANA, because what's at the URL isn't what is desired, because it isn't a # URI, etc.). Therefore, I highly suspect we're going to have at least three. Baking the third into this spec raises the chances that we'll get it wrong, for some community (the Semantic Web isn't the only game in town). As with many things, the right number is likely to be zero, one, or many. |
On 2016-04-28 18:13, Mark Nottingham wrote:
i agree. but isn't that saying that if you claim to use/expose link i understand the RFC 5988 language to acknowledge the RFC 4287 legacy, to me, this is like knowing that in some implementations/contexts, [[ btw, anybody know of an dataset of HTTP headers harvested in the wild |
I would see comments on current Not sure if we still should take just a quick look at HTTP vs HTTPS ? AFAIK schema.org started moving their prefix to HTTPS http://schema.org/docs/faq.html#19 |
@dret it's pretty clear that there are some communities that want to use them, so some guidance would help avoid common pitfalls. I don't think that having One True Prefix in the spec is going to be helpful, because AIUI there are some fairly exacting requirements on how that namespace is run, both in terms of the URIs and potentially what happens when you dereference them (based on discussion with @timbl). In this approach, a serialisation of links like JSON-LD can use URIs for registered relation types as it wishes, and have appropriate assurances that it controls that name space; much easier than offloading that task to IANA. Furthermore, as long as it assures that they're converted back to "native" registered link relations at the appropriate time, it can interoperate well with other applications / serialisations, whether they recognise the prefix or don't. |
On 2016-05-02 18:05, Mark Nottingham wrote:
i am sorry to be pedantic, but what is "them"? i think we have to be
sorry if this is a dumb example, but just to make it clear, it is like
i have to admit that i have a hard time distinguishing the cases when
+1, i think it is unlikely that IANA's substantial registry
just to make sure: the URIs would not actually show up in JSON values, |
The lexical value of the type as defined in the standard is not what may appear on the wire, depending upon the transformations that a serialisation applies to it. Trivial (and common) examples of such a transformation are character encoding, compression and encryption. The draft is saying that other transformations are possible, including mapping registered relation types into a separate space, for the convenience of the users of that serialisation. How JSON-LD and friends decide to handle this is up to them. If you can suggest ways to clarify this in the spec, it'd be much appreciated. |
On 2016-05-02 20:09, Mark Nottingham wrote:
agreed, but that is entirely out of scope of the spec, is it not? the
sure, but these are layered concerns and do not affect the spec.
i am still not clear about why that needs to be said. of course if we do not say that a value can be compressed or encrypted or unicode
if we keep the model that registered values have one lexical value which my concern is that this language is confusing readers and developers to |
#142 has a TODO to add a section about creating new serialisations. I think moving this text into that might help. |
@mnot Thanks for finally providing a conclusion on this issue. The more I think about it, the more I agree with you in that it's not up to rfc5988bis to provide mapping to other serialisations of link relations. That can and probably should be solved externally in another RFC or W3C REC. |
JSON - 'application/json' JSON-LD - 'application/ld+json' (plus 3 profiles) @dret If you would like to continue discussing use of link relations in JSON and JSON-based media types, maybe we could move it to comments of this article: https://dracoblue.net/dev/overview-of-json-hypermedia-link-formats/ ? |
@asbjornu Did this ever actually happen? |
@sbp not to my knowledge, no. |
I know of https://www.w3.org/ns/iana/link-relations/relation but to my knowledge it doesn't have any official status. Maybe @csarven has some more information about it. Personally I think that if someone defining new relation wants it to be available as full IRI, they should just use full IRI and don't register short string. With this in mind some kind of directory with common full IRI link relation could be useful complementary reference to make it easier for community to discover existing relations. Some arguments for registering short string are purely for making them known to others. It would be great to have similar option for full IRI relations. |
@elf-pavlik Thanks. The W3C have a persistence policy at https://www.w3.org/Consortium/Persistence which mentions that everything starting " |
There's also: So, after all this time, I'm guessing that IANA doesnt really want to prioritize throwing cycles at this I did push for quite a few years for keys to be used as nicely self-describing http URIs, conforming to link data standards From my experience, I've found that a large chunk (perhaps majority) of developers are content with strings and short names. My conclusion is that rather than trying to get people to conform to Linked Data, perhaps we should try and make Linked Data conform to real world usage, and allow normal strings as keys, rather than only (http) URIs So, I'll withdraw my previous requests, and if IANA has cycles to address this so much the better |
From #39. We need a convention for registered relation types to be assigned URIs, so that applications (such as RDF) can refer to them.
From previous discussion:
I think the resolution is a modification of what I suggested way above (incorporating feedback from @dret). In "Registered Relation Types", add:
(with possible adjustments to the prefix depending on decisions below)
The text was updated successfully, but these errors were encountered: