Sujet sur Discussion utilisateur:Hsarrazin

Tpt (discussioncontributions)
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdarelationships: <http://rdvocab.info/RDARelationshipsWEMI/>
PREFIX dcterms: <http://purl.org/dc/terms/>
SELECT DISTINCT ?auteur ?name ?isni WHERE {
  ?manif rdarelationships:expressionManifested ?expr ; rdarelationships:electronicReproduction ?URLGallica .
  ?expr dcterms:contributor ?auteur ; dcterms:language <http://id.loc.gov/vocabulary/iso639-2/fre> .
  ?auteur bio:death ?d .
  FILTER(STRSTARTS(?d, "1948"))
  OPTIONAL {
    ?cIsni foaf:focus ?auteur .
     ?cIsni isni:identifierValid ?isni .
  }
  OPTIONAL {
     ?auteur foaf:name ?name .
  }
    OPTIONAL {
     ?auteur foaf:familyName ?lName .
  }
} ORDER BY ?lName
Hsarrazin (discussioncontributions)

Merci beaucoup !

j'ai entrepris d'ajouter à l'affichage quelques colonnes utiles, comme la date de décès, le nom, la langue de la personne ...

j'ai fait sauter la condition de langue que tu avais mise car c'était la langue de travail de l'auteur ; or je recherchais la langue des manifestation, et ça excluait des auteurs comme https://data.bnf.fr/fr/12173989/edvard_benes/#about et https://data.bnf.fr/fr/14473015/william_pierce_shepard/#about dont Gallica présente des traductions en français...

du coup, je voudrais afficher la langue de l'auteur en colonne, mais ça ne fonctionne pas... je n'ai pas la bonne variable... et je n'ai pas réussi à trouver comment et où tu avais trouvé ça hier soir - tu allais beaucoup trop vite pour que je suive

voilà où j'en suis...

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdarelationships: <http://rdvocab.info/RDARelationshipsWEMI/>
PREFIX dcterms: <http://purl.org/dc/terms/>
SELECT DISTINCT ?auteur ?name ?isni ?lName ?d ?lang WHERE {
  ?manif rdarelationships:expressionManifested ?expr ; rdarelationships:electronicReproduction ?URLGallica .
  ?expr dcterms:contributor ?auteur .
  ?auteur bio:death ?d .
  FILTER(STRSTARTS(?d, "1948"))
  OPTIONAL {
    ?cIsni foaf:focus ?auteur .
     ?cIsni isni:identifierValid ?isni .
  }
  OPTIONAL {
     ?auteur foaf:name ?name .
  }
    OPTIONAL {
     ?auteur foaf:familyName ?lName .
  }
  OPTIONAL {
    ?auteur foaf:languageOfThePerson ?lang .
  }
} ORDER BY ?lName

https://data.bnf.fr/current/sparql.html?query=PREFIX+foaf%3A+%3Chttp%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F%3E%0APREFIX+rdarelationships%3A+%3Chttp%3A%2F%2Frdvocab.info%2FRDARelationshipsWEMI%2F%3E%0APREFIX+dcterms%3A+%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Fterms%2F%3E%0ASELECT+DISTINCT+%3Fauteur+%3Fname+%3Fisni+%3FlName+%3Fd+%3Flang+WHERE+%7B%0A++%3Fmanif+rdarelationships%3AexpressionManifested+%3Fexpr+%3B+rdarelationships%3AelectronicReproduction+%3FURLGallica+.%0A++%3Fexpr+dcterms%3Acontributor+%3Fauteur+.%0A++%3Fauteur+bio%3Adeath+%3Fd+.%0A++FILTER(STRSTARTS(%3Fd%2C+%221948%22))%0A++OPTIONAL+%7B%0A++++%3FcIsni+foaf%3Afocus+%3Fauteur+.%0A+++++%3FcIsni+isni%3AidentifierValid+%3Fisni+.%0A++%7D%0A++OPTIONAL+%7B%0A+++++%3Fauteur+foaf%3Aname+%3Fname+.%0A++%7D%0A++++OPTIONAL+%7B%0A+++++%3Fauteur+foaf%3AfamilyName+%3FlName+.%0A++%7D%0A++OPTIONAL+%7B%0A++++%3Fauteur+foaf%3AlanguageOfThePerson+%3Flang+.%0A++%7D%0A%7D+ORDER+BY+%3FlName

Tpt (discussioncontributions)

Hop:

SELECT DISTINCT ?auteur ?name ?isni ?lName ?d ?lang WHERE {
  ?manif rdarelationships:expressionManifested ?expr ; rdarelationships:electronicReproduction ?URLGallica .
  ?expr dcterms:contributor ?auteur .
  ?auteur bio:death ?d .
  FILTER(STRSTARTS(?d, "1948"))
  OPTIONAL {
    ?cIsni foaf:focus ?auteur .
     ?cIsni isni:identifierValid ?isni .
  }
  OPTIONAL {
     ?auteur foaf:name ?name .
  }
    OPTIONAL {
     ?auteur foaf:familyName ?lName .
  }
  OPTIONAL {
    ?auteur rdagroup2elements:languageOfThePerson ?lang .
  }
} ORDER BY ?lName

?expr dcterms:language <http://id.loc.gov/vocabulary/iso639-2/fre> filtrait bien sur l'expression et non sur l'auteur. Ensuite, c'est possible que l'assignation des langues des expressions sur data.bnf soit mal fait.

LeDeuxiemeTexte (discussioncontributions)

Et en classant plutôt par ordre décroissant du nombre d'ouvrages disponibles en français sur Gallica (et en ajoutant le genre ?)

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdarelationships: <http://rdvocab.info/RDARelationshipsWEMI/>
PREFIX dcterms: <http://purl.org/dc/terms/>
SELECT DISTINCT ?auteur ?name ?isni ?lName ?d ?genre COUNT(?URLGallica) AS ?nbGallica WHERE {
  ?manif rdarelationships:expressionManifested ?expr ; rdarelationships:electronicReproduction ?URLGallica .
  ?expr dcterms:contributor ?auteur .
  ?expr dcterms:language <http://id.loc.gov/vocabulary/iso639-2/fre>.
  ?auteur bio:death ?d .
  FILTER(STRSTARTS(?d, "1948"))
  OPTIONAL {
    ?cIsni foaf:focus ?auteur .
    ?cIsni isni:identifierValid ?isni .
  }
  OPTIONAL {
    ?auteur foaf:gender ?genre.
  }
  OPTIONAL {
     ?auteur foaf:name ?name .
  }
    OPTIONAL {
     ?auteur foaf:familyName ?lName .
  }
  OPTIONAL {
    ?auteur foaf:languageOfThePerson ?lang .
  }
} ORDER BY DESC(?nbGallica)
Hsarrazin (discussioncontributions)

merci George2etexte ! je n'aurais jamais osé en demander autant...

pour l'instant, je me préoccupe surtout de créer les auteurs sur wikidata puis wikisource... mais c'est certainement très intéressant effectivement :)

du coup, je constate que certains auteurs n'ont pas de "genre" dans la requête, alors qu'il y a pourtant bien un genre indiqué sur leur page de data bnf

ça commencer à ressembler à une requête à mettre en "requête SPARQL du mois" cette beauté ! (même si ça n'est pas une requête sur wikidata...)

LeDeuxiemeTexte (discussioncontributions)

Oups, l'erreur était d'insérer le bloc "?auteur foaf:gender ?genre." à l'intérieur du bloc optionnel qui précédait. C'est désormais corrigé (en mettant bien un bloc optionnel à part pour le genre).

Une requête de ce genre (beaucoup plus simple) nous avait été bien utile en janvier pour identifier des écrivaines qui venaient de s'élever dans le domaine public, donc vu le beau boulot de @Tpt pour récupérer les oeuvres disponibles dans Gallica, ça aurait été dommage de se priver d'en préparer une qui pourra être utile plus directement pour voir quelles oeuvres récemment entrées dans le domaine public avec un fac-similé dans Gallica seraient susceptibles d'être ajoutées à Wikisource ;).

Hsarrazin (discussioncontributions)

oui, tout à fait !!

par contre, les 36 fichiers de Louis Marchand (en réalité, 35), sont tous des enregistrements sonores... pas très utiles pour wikisource...

Saurais-tu les "exfiltrer" ? ou bien la requête, axées sur les auteurs, ne le permet pas ?

LeDeuxiemeTexte (discussioncontributions)

J'ai l'impression qu'en ajoutant

?expr dcterms:type <http://purl.org/dc/dcmitype/Text>.

ça fait que ce que tu demandes !

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdarelationships: <http://rdvocab.info/RDARelationshipsWEMI/>
PREFIX dcterms: <http://purl.org/dc/terms/>
SELECT DISTINCT ?auteur ?name ?isni ?lName ?d ?genre COUNT(?URLGallica) AS ?nbGallica WHERE {
  ?manif rdarelationships:expressionManifested ?expr ; rdarelationships:electronicReproduction ?URLGallica .
  ?expr dcterms:contributor ?auteur .
  ?expr <http://data.bnf.fr/vocabulary/roles/r70> ?auteur.
  ?expr dcterms:type <http://purl.org/dc/dcmitype/Text>.
  ?expr dcterms:language <http://id.loc.gov/vocabulary/iso639-2/fre>.
  ?auteur bio:death ?d .
  FILTER(STRSTARTS(?d, "1948"))
  OPTIONAL {
    ?cIsni foaf:focus ?auteur .
    ?cIsni isni:identifierValid ?isni .
  }
  OPTIONAL {
    ?auteur foaf:gender ?genre.
  }
  OPTIONAL {
     ?auteur foaf:name ?name .
  }
    OPTIONAL {
     ?auteur foaf:familyName ?lName .
  }
  OPTIONAL {
    ?auteur foaf:languageOfThePerson ?lang .
  }
} ORDER BY DESC(?nbGallica)
Hsarrazin (discussioncontributions)

\o/ je vais tester ça... c'est vraiment super ! merci

LeDeuxiemeTexte (discussioncontributions)
Hsarrazin (discussioncontributions)

tu ne fais pas disparaître les traducteurs en ajoutant "r70", qui me paraît un peu réducteur ?

par ex. Marguerite Moréno disparaît sur la liste des oeuvres, alors qu'elle devrait avoir 2 références (la 1e en tant qu'auteur, la 2e en tant qu'éditeur).

La liste des ouvrages sur Gallica (qui pourra facilement être mise à jour) est très intéressante ! aurais-tu la gentillesse de me mettre le code de la requête, stp ? j'aime bien comprendre comment elles sont construites :)

LeDeuxiemeTexte (discussioncontributions)

Oui en effet avec r70 je ne sélectionne que les auteurs (voici la liste des codes de rôles sachant qu'on peut les combiner en faisant un UNION comme ci-dessous avec les traducteurs et traductrices :

{?expr <http://data.bnf.fr/vocabulary/roles/r70> ?auteur.} UNION {?expr <http://data.bnf.fr/vocabulary/roles/r680> ?auteur.}

Une astuce pour récupérer le code de la requête à partir de l'URL : on prend ce qui se trouve après le "&query=" (et avant "&format=text%2Fhtml&timeout=0&should-sponge=&debug=on"), puis on le "décode" sur URL Decoder par exemple (pour transformer les caractères spéciaux de l'URL en caractères normaux), et enfin on remplace tous les "+" par des " ".

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdarelationships: <http://rdvocab.info/RDARelationshipsWEMI/>
PREFIX dcterms: <http://purl.org/dc/terms/>
SELECT DISTINCT ?auteur ?name ?isni ?lName ?d ?titre ?URLGallica ?genre WHERE {
  ?manif rdarelationships:expressionManifested ?expr ; rdarelationships:electronicReproduction ?URLGallica .
  ?manif dcterms:title ?titre .
  ?expr dcterms:contributor ?auteur .
  {?expr <http://data.bnf.fr/vocabulary/roles/r70> ?auteur.} UNION {?expr <http://data.bnf.fr/vocabulary/roles/r680> ?auteur.}
  ?expr dcterms:type <http://purl.org/dc/dcmitype/Text>.
  ?expr dcterms:language <http://id.loc.gov/vocabulary/iso639-2/fre>.
  ?auteur bio:death ?d .
  FILTER(STRSTARTS(?d, "1948"))
  OPTIONAL {
    ?auteur foaf:gender ?genre.
  }
  OPTIONAL {
    ?cIsni foaf:focus ?auteur .
    ?cIsni isni:identifierValid ?isni .
  }
  OPTIONAL {
     ?auteur foaf:name ?name .
  }
    OPTIONAL {
     ?auteur foaf:familyName ?lName .
  }
  OPTIONAL {
    ?auteur foaf:languageOfThePerson ?lang .
  }
} ORDER BY ASC(?lName)
VIGNERON (discussioncontributions)

Bonjour,

Pour information, suite à une idée de Hsarrazin, j'ai repris cette requête et j'ai ajouté deux lignes à la fin pour détecter la présence d'un élément équivalent sur Wikidata.

PREFIX isni: <http://isni.org/ontology#>
PREFIX bio: <http://vocab.org/bio/0.1/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdarelationships: <http://rdvocab.info/RDARelationshipsWEMI/>
PREFIX dcterms: <http://purl.org/dc/terms/>

SELECT DISTINCT ?auteur ?name ?isni ?link ?wikidata WHERE {
  ?manif rdarelationships:expressionManifested ?expr ; rdarelationships:electronicReproduction ?URLGallica .
  ?expr dcterms:contributor ?auteur ; dcterms:language <http://id.loc.gov/vocabulary/iso639-2/fre> .
  {?expr <http://data.bnf.fr/vocabulary/roles/r70> ?auteur.} UNION {?expr <http://data.bnf.fr/vocabulary/roles/r680> ?auteur.}
  ?auteur bio:death ?d .
  FILTER(STRSTARTS(?d, "1951"))
  OPTIONAL {?cIsni foaf:focus ?auteur . ?cIsni isni:identifierValid ?isni .}
  OPTIONAL {?auteur foaf:name ?name .}
  OPTIONAL {?auteur foaf:familyName ?lName .}
  ?link <http://xmlns.com/foaf/0.1/focus> ?auteur .
  OPTIONAL {?link <http://www.w3.org/2004/02/skos/core#exactMatch> ?wikidata . FILTER ( CONTAINS(STR(?wikidata) , "http://wikidata.org/" ) ) }
}
ORDER BY ?lName
Répondre à « Data BnF »