Re: [Specifications] CreateAction with HTTP PUT

> again, more complicated than "the target is the parent. period"
> [...]
> ditto, if the parent is a template use that. and no need for additional core term

I would prefer that we don't discuss it in terms of some specific framing of JSON-LD and keep in mind that people may prefer to use Turtle or any other serialization. I'll try to stick to Statement (Triple or Quad) and `s, p, o` in all further comments!

>> instances of hydra:Operation which resource references via hydra:action

> no idea what that means

all the operations matching
```ttl
</some-resource> hydra:action ?operation
```

> I still don't understand the distinction between `operation` and `action`. This is pure confusion.

As discussed in #3 currently `hydra:operation` implies that `target` of an `Operation` (`"target"" { "@reverse": "operation" }`) while [`schema:potentialAction`](https://schema.org/potentialAction) does not act as reverse of [`schema:target](http://schema.org/target). This allows resources in schema.org to reference instances of `schema:Action` which have `schema:target` other than the resource itself. I would like us to consider also providing such option in Hydra.

>> Is there any particular reason why `"hydra:addMember"` has an `@id`

> Indeed there is. This is not an operation. It's a link. In triples it would be represented as `</api/events> hydra:addMember </api/events/new>. I realise that the I chose the predicate poorly. The intention was for a link between the collection and the resource used to created new members. The `target` in the terminology you use.

Does it mean that in [UC#1 Entry point](https://github.com/HydraCG/Specifications/blob/master/drafts/use-cases/1.entry-point.md#details) we would have to add statement `</api/events> hydra:addMember </api/events>` ?

``` diff
{
      "@id": "/api/events",
      "title": "List of events",
      "@type": "hydra:Collection",
      "manages": {
        "property": "rdf:type",
        "object": "schema:Event"
      },
+     "hydra:addMember": "/api/events",
      "operation": {
        "@type": ["hydra:Operation", "schema:CreateAction"],
        "title": "Create new event",
        "method": "POST",
        "expects": "schema:Event"
      }
    }
```

In approach I propose we could simply reuse `schema:AddAction` instead having to define `hydra:addMember`. But now I notice that if we would have
```ttl
</api/events> schema:potentialAction [
  a hydra:Operation, schema:AddAction, schema:CreateAction ;
  schema:target </api/events/new>
] .
```
`schema:AddAction` should apply to </api/events> but `schema:CreateAction should apply to </api/events/new>` so we get ugly ambiguity here. We could still have
```ttl
</api/events> schema:potentialAction [
  a hydra:Operation, schema:AddAction ;
  schema:target </api/events/new>
] .
</api/events/new> hydra:operation [
  a hydra:Operation, schema:CreateAction
] .
```

-- 
GitHub Notification of comment by elf-pavlik
Please view or discuss this issue at https://github.com/HydraCG/Specifications/issues/141#issuecomment-338350127 using your GitHub account

Received on Saturday, 21 October 2017 00:22:30 UTC