W3C home > Mailing lists > Public > public-hydra@w3.org > April 2016

RE: Extend describing operations

From: Markus Lanthaler <markus.lanthaler@gmx.net>
Date: Tue, 5 Apr 2016 22:24:52 +0200
To: "'Tomasz Pluskiewicz'" <tomasz@t-code.pl>, <public-hydra@w3.org>
Message-ID: <02df01d18f79$36e3f960$a4abec20$@gmx.net>

On 13 Mrz 2016 at 16:50, Tomasz Pluskiewicz wrote:
> I've been thinking about this for some time. Consider a blogging
> platform, where I can POST a blog post
> HTTP/1.1 POST /blog
> { "title": "My blog post", "text": "some markdown maybe"  }
> But instead of getting published immediately, it could create a draft
> at, say /drafts/my-blog-post.
> Now how would I use Hydra to model an operation, which publishes the
> draft? I would think of a POST operation like
> HTTP/1.1 POST /blog/published
> { "@id": "/drafts/my-blog-post" }

I agree with Karol and Dietrich that this probably wouldn't be the cleanest design.

> Unfortunately I don't see how that would be possible. This raises a
> number of questions:
> 1. Should it be possible to define complete or partial body of an
> operation in addition to the "expects" property? I'm thinking
> {
>    "operation": [
>      "expects": "BlogPost",
>      "body": {
>        "title": "New blog post"
>      }
>    ]
> }

That would just be a different "expects" I guess. Anyhow, the problem is that we currently can't express "give me the URL of a resource (out of that set of valid resources).

> If the "expects" was absent, the "body" would be the complete request to
> be sent by the client. Otherwise it could serve as an initial
> representation to create the UI/form.
> 2. Should it be possible to have an operation not on self but on another
> resource. This is what I could write to describe the publish operation
> above:
> {
>    "operation": [
>      "@type": "PublishOperation",
>      "url": "/blog/published",
>      "body": { "@id": "/drafts/my-blog-post" }
>    ]
> }

Yes, we should make that possible. We just need to find a way to relate the resource to the operation then... the simplest solution would be to leverage schema.org/action for that.

> I'm feeling kind of like the "/blog/published" resource should be a link
> with it's own operation. I'm still not sure how what to do about the
> predefined "body".

The simplest approach would be to add a "status" property to the blog post. An alternative would be to have a collection of published blog posts (as you seem to have) and then just link the two resources (there exists an standards track draft for a HTTP Link/Unlink methods [1]).


[1] https://tools.ietf.org/html/draft-snell-link-method-12

Markus Lanthaler
Received on Tuesday, 5 April 2016 20:25:27 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 5 April 2016 20:25:28 UTC