- From: Tomasz Pluskiewicz via GitHub <sysbot+gh@w3.org>
- Date: Wed, 26 May 2021 07:48:47 +0000
- To: public-hydra-logs@w3.org
This is a design question and itself it probably does not have one answer.
With human audience in mind I would probably go for a diff-like payload, which would simply list members to add and members to remove. The exact specifics are irrelevant as long as the server provides a precise description of such a payload and it is enough for a (human) client to figure out.
The request could be a `PATCH` with changes described using the [Changeset vocabulary](https://vocab.org/changeset)
```turtle
prefix change: <http://purl.org/vocab/changeset/schema#>
# remove /member/1
# add /member/2
[
change:removal [
rdf:subject </collection> ;
rdf:predicate hydra:member ;
rdf:object </member/1> ;
] ;
change:addition [
rdf:subject </collection> ;
rdf:predicate hydra:member ;
rdf:object </member/2> ;
]
]
```
The downside is that each collection would need a specific `expects`, for example done with SHACL
```
<> a sh:NodeShape ;
sh:property [
sh:name "Remove collection member" ;
sh:path change:removal ;
sh:node [
sh:property [
sh:path rdf:subject ;
sh:hasValue </collection> ;
dash:hidden true ;
sh:minCount 1 ;
sh:maxCount 1 ;
], [
sh:path rdf:predicate ;
sh:hasValue hydra:member ;
dash:hidden true ;
sh:minCount 1 ;
sh:maxCount 1 ;
], [
sh:path rdf:object ;
]
]
] ,
sh:property [
sh:name "Add collection member" ;
sh:path change:addition ;
sh:node [
sh:property [
sh:path rdf:subject ;
sh:hasValue </collection> ;
dash:hidden true ;
sh:minCount 1 ;
sh:maxCount 1 ;
], [
sh:path rdf:predicate ;
sh:hasValue hydra:member ;
dash:hidden true ;
sh:minCount 1 ;
sh:maxCount 1 ;
], [
sh:path rdf:object ;
]
]
] ;
```
With the `rdf:subject` and `rdf:object` pinned to specific values, hidden, and restricted to exactly one value, all the UI would need is to provide UI for selecting members to add/remove (`rdf:object`)
--
GitHub Notification of comment by tpluscode
Please view or discuss this issue at https://github.com/HydraCG/Specifications/issues/237#issuecomment-848548946 using your GitHub account
--
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Wednesday, 26 May 2021 07:48:49 UTC