Open b2d3c opened 7 months ago
En fait la requête ne fonctionne pas car si les Record Set et les Record sont bien inclus (rico:isOrWasIncludedIn
) dans "Archive", les Record Part sont d'abord rico:isOrWasConstituentOf
d'un Record et non pas inclus à l'intérieur d'eux.
Si vous arrivez à trouver un moyen pour contourner cette difficulté j'en serais très heureux.
Voici une requête SPARQL optimisée, sans le rico:isOrWasConsituentOf
, mais qui ne fonctionne toujours pas. Evidemment elle n'est plus transitive, le nombre de niveaux est fixe (5) mais cela n'est pas très gênant si votre arbre de classification ne bouge pas.
PREFIX rico: <https://www.ica.org/standards/RiC/ontology#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?RR ?name ?ID ?type
WHERE {
?RR a ?type .
VALUES ?type { <https://www.ica.org/standards/RiC/ontology#Record> <https://www.ica.org/standards/RiC/ontology#RecordSet> <https://www.ica.org/standards/RiC/ontology#RecordPart> }.
?RR rico:isOrWasIncludedIn|(rico:isOrWasIncludedIn/rico:isOrWasIncludedIn)|(rico:isOrWasIncludedIn/rico:isOrWasIncludedIn/rico:isOrWasIncludedIn)|(rico:isOrWasIncludedIn/rico:isOrWasIncludedIn/rico:isOrWasIncludedIn/rico:isOrWasIncludedIn)|(rico:isOrWasIncludedIn/rico:isOrWasIncludedIn/rico:isOrWasIncludedIn/rico:isOrWasIncludedIn/rico:isOrWasIncludedIn) <http://data.performing-arts.ch/r/ceb13c5e-4996-4356-a078-92b949c3252f>.
?RR rico:hasDocumentaryFormType <http://vocab.performing-arts.ch/dfwrq>.
OPTIONAL {?RR rico:name ?name}.
OPTIONAL {?RR rico:identifier ?ID}.
}
Cependant j'ai l'impression que cela ne lui plait toujours pas - à moins que le serveur soit planté, il me semble ? le serveur ne répond plus à rien. A suivre
Une solution possible pour répondre à ce type de requête est d'activer l'inférence dans le triplestore, au moins pour la transitivité de cette propriété.
D'une façon générale il est possible de configurer ces property paths dans une configuration "customisée manuellement" de Sparnatural.
Le serveur étant revenu à la normale, j'ai pu tester que la requête récursive fonctionne, y compris sur des RecordPart avec isOrWasIncludedIn:
PREFIX rico: <https://www.ica.org/standards/RiC/ontology#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?RR ?name ?ID ?type
WHERE {
?RR a ?type .
VALUES ?type { <https://www.ica.org/standards/RiC/ontology#Record> <https://www.ica.org/standards/RiC/ontology#RecordSet> <https://www.ica.org/standards/RiC/ontology#RecordPart> }.
?RR (rico:isOrWasIncludedIn|rico:isOrWasConstituentOf)* <http://data.performing-arts.ch/r/ceb13c5e-4996-4356-a078-92b949c3252f>.
?RR rico:hasDocumentaryFormType <http://vocab.performing-arts.ch/dfwrq>.
OPTIONAL {?RR rico:name ?name}.
OPTIONAL {?RR rico:identifier ?ID}.
}
Super! Merci pour l'aide SPARQL ! Je vais y travailler encore pour en faire un bon exemple et je vous redirai.
Voici un exemple de requête que notre SPARQL EndPoint n'arrive pas, en l'état, à traiter mais que vous arriverez peut-être à améliorer et que nous souhaiterions utiliser comme un exemple de requête pour Sparnatural :