gestion des blank nodes multiples
resolve https://github.com/assemblee-virtuelle/semapps/issues/862 and https://github.com/assemblee-virtuelle/semapps/issues/893
- Ajout de la capacité d'affecter plusieurs blank nodes à un predicat en POST, PUT, PATCH
- Refactoring de ldp create ressource en l'harmonisant avec patch et put
- Ajout d'un discriminant dans les blank nodes pour pouvoir gérer la suppression de plusieurs blank nodes sur le même prédicat. Sans ce discriminant il est impossible de supprimer les triplets d'un blank node sans affecter un autre qui possède les mêmes literaux et la surpression des ancien blank nodes lors d'un PUT échoue systématiquement car le delete (SPARQL) du premier blank node supprime également le second , provoque des triplets orphelins et fait planter la requête.
- Ajout de test et debug des test ldp pour permettre leurs exécutions. les autres tests bugs toujours mais c'est hors du perimetre que je m'etais donné dsl.
- Pour le PATCH, J'ai considéré un blank node comme un Literale. La présence d'un blank sur un prédicat en PATCH indique que le prédicat doit être complètement réévalué avec les black nodes passé dans la requête. Il serait possible de raisonner en considérant que les blank nodes en PATCH se cumulent mais cela ne correspondait pas au tests existants.
3J
@srosset81 est ce que tu as pu regarder cette PR?
@simonLouvet Pour info, je pars en vacances le 13 juillet mais je compte finir de travailler cette semaine. Si tu veux que ce soit mergé avant mon retour (fin août), il faudrait faire les corrections prochainement.
@simonLouvet Par ailleurs j'ai ajouté un commentaire important: https://github.com/assemblee-virtuelle/semapps/pull/985#discussion_r912787310
@simonLouvet Par ailleurs j'ai ajouté un commentaire important: #985 (comment)
répondu dans le commentaire
Seb : La librairie jsonld.js qu'on utilise déjà (dans le service jsonld) a une fonction canonize (qui s'appuie sur https://github.com/digitalbazaar/rdf-canonize) https://github.com/digitalbazaar/jsonld.js Sur le playground JSON-LD, on peut tester cette fonction (normalized): https://json-ld.org/playground/ En entrant les données de https://data.virtual-assembly.org/users/alice.poggioli, j'obtiens ça: https://json-ld.org/playground/#startTab=tab-normalized&json-ld={"@context":"https://data.virtual-assembly.org/context.json","id":"https://data.virtual-assembly.org/users/alice.poggioli","type":["foaf:Person","pair:Person"],"og:leads":["https://data.virtual-assembly.org/groups/valorisation","https://data.virtual-assembly.org/groups/partenaires","https://data.virtual-assembly.org/groups/financement"],"pair:affiliatedBy":["https://data.virtual-assembly.org/organizations/assemblee_virtuelle","https://data.virtual-assembly.org/organizations/startin-blox1","https://data.virtual-assembly.org/groups/onboarding"],"pair:assigneeOf":"https://data.virtual-assembly.org/tasks/partager-la-campagne-de-don-de-l-av","pair:e-mail":"[email protected]","pair:firstName":"Alice","pair:hasLocation":{"type":"pair:Place","pair:hasPostalAddress":{"type":"pair:PostalAddress","pair:addressCountry":"France","pair:addressLocality":"Athis-Val de Rouvre"},"pair:label":"Athis-Val de Rouvre, Orne, France","pair:latitude":48.8106,"pair:longitude":-0.5005},"pair:hasTopic":["https://data.virtual-assembly.org/themes/mise_en_reseau","https://data.virtual-assembly.org/themes/apero"],"pair:involvedIn":"https://data.virtual-assembly.org/events/10-ans-de-l-assemblee-virtuelle-residence","pair:label":"Alice POGGIOLI","pair:lastName":"Poggioli","pair:offers":["https://data.virtual-assembly.org/skills/_web_semantique","https://data.virtual-assembly.org/skills/animation_de_communaute","https://data.virtual-assembly.org/skills/developpement_web"],"inbox":"https://data.virtual-assembly.org/users/alice.poggioli/inbox","foaf:email":"[email protected]","foaf:familyName":"Poggioli","foaf:name":"Alice","foaf:nick":"alice.poggioli","followers":"https://data.virtual-assembly.org/users/alice.poggioli/followers","following":"https://data.virtual-assembly.org/users/alice.poggioli/following","image":"https://data.virtual-assembly.org/files/alice-poggioli.jpeg","name":"Alice Poggioli","outbox":"https://data.virtual-assembly.org/users/alice.poggioli/outbox","preferredUsername":"alice.poggioli"} A voir si ça peut convenir pour le diff des blank nodes...
With jsonld.js (https://github.com/digitalbazaar/jsonld.js), a normalize API call is available that will convert a JSON-LD document to normalized N-Quads using the RDF Graph Normalization Algorithm (http://json-ld.org/spec/latest/rdf-graph-normalization/). The result can be diffed using a standard text-based diffing tool. Note that these tools can also convert N-Triples or N-Quads into JSON-LD, which can then be converted to normalized N-Quads. It is also important to note that the RDF Graph Normalization Algorithm will canonically name all blank nodes.
https://www.w3.org/2001/sw/wiki/How_to_diff_RDF
replaced by #1068