Re: [Specifications] How to document forbidden dereferencability (#216)

> I know TPF is close to RDF and downgrading hydra ranges for some of the terms will break reasoning process. Resources will be no more `hydra:Resource`, thus any implementation relying on this will get broken.

The only thing that `hydra:Resource` offered over the REST or RDF notion of a resource (which, BTW, are the same), was a promise of dereferenceability—but it was not in the position to make such a promise. So I have never been able to rely on that anyway. It's always been just a REST/RDF resource for me.

> > To me, usage of HTTP URLs implies dereferenceability
> 
> This is the issue - one of our community members has issues with this assumption.

That's how Web architecture works though.

> He uses HTTP Urls for identifying resources be for some circumstances he knows that server won't provide any of these resources.

The easy answer is of course "don't", and I speaking from a Web arch perspective here, not even RDF. But I assume there are reasons.

> Not using `hydra:Resource` will somehow help as it won't impose a resource is somehow guaranteed to have a GET operation supported

It does not make a difference at all, and perhaps it's important that everyone in the thread understands.

`hydra:Resource` was _never_ able to make that promise, and here is why.

Take this example, here in JSON-LD notation:

```json
{
  "@context": "http://www.w3.org/ns/hydra/context.jsonld",
  "@id": "http://example.org/my/resource",
  "@type": "Resource"
}
```

and here in Turtle:

```turtle
<http://example.org/my/resource> a <http://www.w3.org/ns/hydra/core#Resource> .
```

What it is `supposed` to say according to Hydra is:
- I can dereference the URL `http://example.org/my/resource` through `GET`

However, the above interpretation is not possible in RDF. It's not.

Because what it _actually_ says is:

- The thing **identified by** http://example.org/my/resource (but also infinitely many other identifiers) is a Hydra resource

I.e., the assertion is on the _node_ not on the identifier of that node. We _cannot_ assert that a node is dereferenceable; only URIs can be.

What Hydra _should_ have done is something like

```turtle
<http://example.org/my/resource> ex:hasDereferenceableUri "http://example.org/my/resource"^^xsd:anyURI .
```

But `hydra:Resource` has been meaningless all along, so removing that meaning does not change or break anything.

-- 
GitHub Notification of comment by RubenVerborgh
Please view or discuss this issue at https://github.com/HydraCG/Specifications/issues/216#issuecomment-640416339 using your GitHub account

Received on Monday, 8 June 2020 07:19:46 UTC