assemblee-virtuelle / assemblee-virtuelle/semapps
updateSingleMirroredResources ne fonctionne pas s'il y a des blank nodes
- Dominant language
- TypeScript
- Stars
- 103
- Forks
- 14
- Avg merge
- 1m
- Merged PRs (30d)
- 2
Description
`ldp.resource.put` est cassé avec du Turtle lorsqu'on a des blank nodes. Le GET fonctionne bien mais ensuite le PUT échoue.
J'ai essayé avec https://data.virtual-assembly.org/organizations/animacoop (qui a un blank node au niveau de `pair:hasLocation`)
J'ai essayé de remplacer avec du JSON-LD:
```js
try {
const resourceUri = single.s.value;
const response = await fetch(resourceUri, { headers: { Accept: MIME_TYPES.JSON } });
let resource = await response.json();
resource['http://semapps.org/ns/core#singleMirroredResource'] = new URL(resourceUri).origin;
await this.broker.call(
'ldp.resource.put',
{ resource, contentType: MIME_TYPES.JSON, webId: 'system' },
{ meta: { forceMirror: true } }
);
} catch (e) {
this.logger.warn("Failed to update single mirrored resource " + single.s.value);
console.error(e);
}
```
Cela marche à la première mise à jour, mais ensuite j'ai une erreur que je n'ai jamais eu jusqu'ici:
```
ErrorCoded: Found duplicate @ids 'df_5_0' and 'https://data.virtual-assembly.org/organizations/transiscope'
at EntryHandlerKeywordId.handle (/home/sebastien/SemApps/semapps/src/middleware/node_modules/jsonld-streaming-parser/lib/entryhandler/keyword/EntryHandlerKeywordId.js:31:42)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at async JsonLdParser.newOnValueJob (/home/sebastien/SemApps/semapps/src/middleware/node_modules/jsonld-streaming-parser/lib/JsonLdParser.js:189:21)
at async JsonLdParser.executeBufferedJobs (/home/sebastien/SemApps/semapps/src/middleware/node_modules/jsonld-streaming-parser/lib/JsonLdParser.js:429:13) {
code: 'colliding keywords'
```
Elle vient d'ici:
https://github.com/rubensworks/jsonld-streaming-parser.js/blob/master/lib/entryhandler/keyword/EntryHandlerKeywordId.ts
Comme l'opération PUT est coûteuse, ne pourrait-on pas simplement supprimer la ressource et la reposter ?
A mon avis on pourrait même passer directement par le service triplestore et mettre à jour la ressource avec une simple requête SPARQL.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.