Open srosset81 opened 2 years ago
Ce n'est pas a proprement parler un bug lié au service de mirroir.
Dans le code du service mirroir, il n'y a rien de specifique. on recoit des données nouvelles pour une resource et on fait un PUT.
C'est le ldp.resource.put
qui ne fonctionne pas avec des blank nodes.
Je n'ai pas modifié cette action lors de mon travail sur le service de mirroir.
Je veux bien regarder ce qui se passe, mais je me retire comme responsable de ce bug.
En tout cas les performances sont mauvaises avec ce que tu as fait. Si tu as des centaines de resources à mettre à jour, ça va prendre des plombes à tout mettre à jour avec des requêtes PUT.
OK je m'occupe de faire la requête SPARQL. Ca me prendra 10 minutes.
pourquoi tu dis ca? on avait justement decidé ensemble d'utiliser le PUT car il fait un diff. Est ce que c'est si lent que ca? En quoi une requete SPARQL va accélerer ? tu veux dire tout supprimer et tout recréer ?
Si le PUT en l é'tat actuel est lent (et buggé) alors ca concerne tout le monde, et pas seulement le updateSingleMirroredResources
...
Ce que tu veux faire c'est de réécrire le PUT pour qu'il fasse un DELETE de tous les triples puis un ajout des nouveaux ?
C'est d'ailleurs ca qui est ecrit dans la spec de LDP.
Y a t il quelque chose que je ne comprends pas?
Je m'en occupe la semaine prochaine et je vois ce que je peux faire en prenant en compte tes commentaires @nikoPLP
Et si besoin on s'appelera.
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:
Cela marche à la première mise à jour, mais ensuite j'ai une erreur que je n'ai jamais eu jusqu'ici:
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.