Open main menu

Seb35

Joined 10 November 2012
Babel user information
fr-N Cet utilisateur a pour langue maternelle le français.
en-3 This user has advanced knowledge of English.
de-2 Dieser Benutzer beherrscht Deutsch auf fortgeschrittenem Niveau.
fi-1 Tämä käyttäjä puhuu suomea vähän.
ru-1 Этот участник владеет русским языком на начальном уровне.
es-1 Este usuario tiene un conocimiento básico del español.
Users by language

General tipsEdit

Use OWL equivalent propertiesEdit

Here for example with rdfs:subClassOf, which is equivalent (wdt:1628) to wdt:P279. In OWL, if I’m not mistaken, we could have a rule like wdt:P1628 owl:equivalentProperty owl:equivalentProperty. (equivalent properties in Wikidata)

Here we search the various types of prosecutors rdfs:subClassOf general prosecutors.

SELECT ?prosecutor
WHERE {
  ?prosecutor ?propProperty wd:Q3368517 .
  ?propEntity wdt:P1628 rdfs:subClassOf .
  ?propEntity wikibase:directClaim ?propProperty .
}

Try it!

Most used qualifiers in a specific corpusEdit

Here the corpus are the terms of French deputies
# Most used qualifiers attached to a specific corpus of values, here specifically about terms of French deputies
SELECT ?qualifier ?proprertyLabel (COUNT(?value) AS ?count)
WHERE {
  # Characteristics of the corpus - CHANGE HERE FOR YOUR CORPUS
  ?deputy wdt:P39 wd:Q3044918 .
  ?deputy p:P39 ?value .
  ?value pq:P2937 wd:Q24939798 .
  # No need to change after this line
  ?value ?qualifier [] .
  OPTIONAL { ?proprerty wikibase:qualifier ?qualifier } .
  OPTIONAL { ?proprerty wikibase:qualifierValue ?qualifier } .
  OPTIONAL { ?proprerty wikibase:statementProperty ?qualifier } .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" } .
}
GROUP BY ?qualifier ?proprertyLabel
ORDER BY DESC(?count)

Try it!

Avoid timeouts in SPARQL in some casesEdit

Add: ORDER BY RAND() LIMIT 1000
# 1000 items with a P279 but without a P31 neither a P279
# The request spends 39 seconds without the ORDER RAND() and 10 seconds with
SELECT DISTINCT ?item ?itemLabel
WHERE
{
  # Items with a BnF identifier
  ?item wdt:P268 [] .
  
  # Without a P31 neither a P279
  MINUS { ?item wdt:P31 [] }
  MINUS { ?item wdt:P279 [] }
  
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr,en" }
}
ORDER BY RAND()
LIMIT 1000

Try it!

Specific requestsEdit

Députés français de la XVe législatureEdit

Les mandats terminés sont affichés tels quels. Pour afficher soit les mandats en cours soit les mandats terminés, décommenter la ligne qui va bien.
Par exemple au 20 février 2018 (et d’après les données Wikidata), après l’élection de juin 2017 correspondant à un début de mandat au 21 juin 2017, il y aurait :
  • 571 députés avec un mandat en cours (sur le nombre nominal de 577),
  • 18 mandats terminés,
  • 12 mandats commencés postérieurement au 21 juin 2017 (élections législatives partielles, suppléants)
  • 6 circonscriptions qui n’auraient pas de député en cours (cf 2e requête).
Entre le début de la XVe législature et fin juillet 2018, le minimum global du nombre de députés a été les 3-4 février 2018 avec 569 députés. Ce nombre a baissé continuellement entre le 17 novembre 2017 et le 2 février 2018, puis a augmenté continuellement du 5 février 2018 au 16 avril 2018 où le nombre nominal de 577 députés a été atteint à nouveau. Il a ensuite baissé de 1 à partir du 7 juillet 2018. (Voir 4e requête.)
# Députés français de la XVe législature
#SELECT ?depute ?deputeNom ?circonscriptionNom ?dateDebutMandat ?dateFinMandat ?dateNaissance ?groupeParlementaireNom (SAMPLE(?photo) AS ?photographie) ?article
SELECT ?depute ?deputeNom ?circonscriptionNom ?dateDebutMandat ?dateFinMandat ?dateNaissance ?groupeParlementaireNom
WHERE {
  ?depute wdt:P39 wd:Q3044918 .
  ?depute p:P39 ?mandat .
  ?mandat pq:P2937 wd:Q24939798 .
  ?mandat pq:P580 ?dateDebutMandat .
  OPTIONAL { ?depute rdfs:label ?deputeNom . FILTER( LANG(?deputeNom) = "fr" ) } .
  OPTIONAL { ?depute wdt:P734 ?nomFamille . ?nomFamille rdfs:label ?nomFamilleNom . FILTER( LANG(?nomFamilleNom) = "fr" ) } .
  OPTIONAL { ?mandat pq:P582 ?dateFinMandat } .
  #FILTER NOT EXISTS { ?mandat pq:P582 ?dateFinMandat } . # Décommenter pour avoir les mandats en cours (c-à-d sans date de fin)
  #?mandat pq:P582 ?dateFinMandat . # Décommenter pour avoir les mandats terminés (c-à-d avec une date de fin)
  #FILTER( ?dateDebutMandat != "2017-06-21"^^xsd:dateTime ) . # Décommenter pour avoir les mandats commencés après le 21 juin 2017
  OPTIONAL { ?mandat pq:P768 ?circonscription . ?circonscription rdfs:label ?circonscriptionNom . FILTER( LANG(?circonscriptionNom) = "fr" ) } .
  OPTIONAL { ?depute wdt:P569 ?dateNaissance } .
  OPTIONAL { ?mandat pq:P1365 ?remplace } .
  OPTIONAL { ?mandat pq:P1366 ?remplacepar } .
  OPTIONAL { ?mandat pq:P4100 ?groupeParlementaire . ?groupeParlementaire rdfs:label ?groupeParlementaireNom . FILTER( LANG(?groupeParlementaireNom) = "fr" ) } .
  #OPTIONAL { ?depute wdt:P18 ?photo } .
  OPTIONAL { ?article schema:about ?depute; schema:isPartOf <https://fr.wikipedia.org/> } .
  BIND( REPLACE( UCASE( REPLACE( ?nomFamilleNom, "^de ", "" ) ), "É", "E" ) AS ?nom ) .
}
#GROUP BY ?depute ?deputeNom ?circonscriptionNom ?dateDebutMandat ?dateFinMandat ?dateNaissance ?groupeParlementaireNom ?article
ORDER BY ?dateFinMandat ?dateDebutMandat ?nom

Try it!

# Circonscription de la XVe législature sans député en poste
SELECT ?circonscription ?circonscriptionLabel
WHERE {
  ?depute wdt:P39 wd:Q3044918 .
  ?depute p:P39 ?mandat .
  ?mandat pq:P768 ?circonscription .
  ?mandat pq:P582 ?dateFinMandat .
  ?mandat pq:P2937 wd:Q24939798 .
  MINUS {
    ?deputeNouveau wdt:P39 wd:Q3044918 .
    ?deputeNouveau p:P39 ?mandatNouveau .
    ?mandatNouveau pq:P768 ?circonscription .
    ?mandatNouveau pq:P2937 wd:Q24939798 .
    FILTER NOT EXISTS { ?mandatNouveau pq:P582 ?dateFinMandatNouveau } .
  }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" } .
}

Try it!

# Groupes parlementaires et leur effectifs des députés en poste de la XVe législature
SELECT ?groupeParlementaire ?groupeParlementaireLabel (COUNT(?mandat) AS ?nbMandats)
WHERE {
  ?depute p:P39 ?mandat .
  ?mandat pq:P2937 wd:Q24939798 .
  OPTIONAL { ?mandat pq:P4100 ?groupeParlementaire } .
  FILTER NOT EXISTS { ?mandat pq:P582 [] } .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr,en" } .
}
GROUP BY ?groupeParlementaire ?groupeParlementaireLabel
ORDER BY DESC(?nbMandats)

Try it!

# Circonscriptions ayant rencontrées un changement de député
SELECT ?depute ?deputeNom ?circonscriptionNom ?dateDebutMandat ?dateFinMandat
WHERE {
  ?depute wdt:P39 wd:Q3044918 ; p:P39 ?mandat .
  ?mandat pq:P2937 wd:Q24939798 ; pq:P768 ?circonscription .
  OPTIONAL { ?mandat pq:P580 ?dateDebutMandat } .
  OPTIONAL { ?mandat pq:P582 ?dateFinMandat } .
  
  # Ceci donne la dernière date significative, soit de fin de mandat, soit de début si le mandat n’est pas terminé
  BIND( IF(BOUND(?dateFinMandat), ?dateFinMandat, ?dateDebutMandat) AS ?dateEvenement) .
  
  # Ceci élimine les mandats remplacés au lendemain par le suppléant, commenter ces 4 lignes pour inclure ces mandats dans le résultat
  # NB : la partie non-croisée du FILTER NOT EXISTS (i.e. avec pq:P582 ?dateFinMandat) est censée afficher les mandats terminés par le suppléant non-remplacés au lendemain, mais je ne suis pas sûr que ça fonctionne et il n’y a pas de données pour vérifier ce cas)
  BIND( ?dateDebutMandat + "-P1D"^^xsd:duration AS ?dateVeilleDebutMandat ) .
  BIND( IF(BOUND(?dateFinMandat), ?dateFinMandat + "P1D"^^xsd:duration, "1980-01-01T00:00:00Z"^^xsd:dateTime) AS ?dateLendemainFinMandat ) .
  FILTER NOT EXISTS { [] wdt:P39 wd:Q3044918 ; p:P39 [ pq:P2937 wd:Q24939798 ; pq:P580 ?dateLendemainFinMandat ; pq:P768 ?circonscription ] } .
  FILTER NOT EXISTS { [] wdt:P39 wd:Q3044918 ; p:P39 [ pq:P2937 wd:Q24939798 ; pq:P582 ?dateVeilleDebutMandat ; pq:P768 ?circonscription ] .
    [] wdt:P39 wd:Q3044918 ; p:P39 [ pq:P2937 wd:Q24939798 ; pq:P582 ?dateFinMandat ; pq:P768 ?circonscription ] } .
  
  {
    SELECT ?circonscription (MAX(?mandatDateFin) AS ?dateFinDernierMandat)
    WHERE {
      # Circonscriptions avec un mandat terminé…
      [] wdt:P39 wd:Q3044918 ; p:P39 [
              pq:P2937 wd:Q24939798 ; pq:P582 ?mandatDateFin ; pq:P768 ?circonscription
      ] .
    }
    GROUP BY ?circonscription
  }
  OPTIONAL { ?depute rdfs:label ?deputeNom . FILTER( LANG(?deputeNom) = "fr" ) } .
  OPTIONAL { ?circonscription rdfs:label ?circonscriptionNom . FILTER( LANG(?circonscriptionNom) = "fr" ) } .
}
ORDER BY ?dateEvenement ?dateFinDernierMandat ?circonscriptionNom ?dateDebutMandat # ordre chronologique pur
#ORDER BY ?dateFinDernierMandat ?circonscriptionNom ?dateDebutMandat # ordre chronologique groupé par circonscription

Try it!

Communes françaises dont une de ses communautés de communes n’est pas dans le département de la communeEdit

SELECT ?commune ?communeLabel ?comcomLabel ?coord
WHERE {
  # Communes françaises…
  ?commune wdt:P31 wd:Q484170 .
  OPTIONAL { ?commune wdt:P625 ?coord } .
  
  # …appartenant à une communauté de communes…
  ?commune wdt:P131 ?comcom . ?comcom wdt:P31 wd:Q423785 .
  
  # …dont aucun département de la communauté de communes ne coïncide avec un département de la commune.
  # NB : les départements d’outre-mer sont des sous-classes de département.
  FILTER NOT EXISTS { ?comcom wdt:P131 ?departement . ?commune wdt:P131 ?departement . ?departement wdt:P31/wdt:P279* wd:Q6465 }
  
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr,en" }
}

Try it!

VIAF identifiers where VIAF is not a referenceEdit

Example:

  • Here in Q3951 the VIAF identifier has an explicit reference in the VIAF catalogue
  • Here in Q1009 (as of writing) the VIAF identifier has no explicit reference to the VIAF catalogue

I obtain currently (7 December 2017) 778 000 results, the request takes 50s; and there are currently 361 316 VIAF identifiers with an explicit reference to the VIAF catalogue.

SELECT ?concept
WHERE {
  ?concept p:P214 ?v .
  FILTER NOT EXISTS {
    ?v prov:wasDerivedFrom ?ref .
    ?ref pr:P248 wd:Q54919 .
  }
}

Try it!