Quarry et Query :
introduction à SQL et SPARQL


© Husky, CC-BY-SA 4.0


© Planemad, DP

User:Arkanosis — WikiConvention francophone 2018

Quarry et Query : points communs

  • Bases de données
  • Interface de requêtage
  • Langage standard
  • Orienté logiciel / machines
  • Projets Wikimedia

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

Quarry vs Query : différences

Quarry Query
Contenu Métadonnées de tous les projets Données de Wikidata
Entrée SQL SPARQL, LDF
Sortie CSV, JSON, HTML, XSLX, wikitable CSV, JSON, HTML, SVG, RDF, Turtle, N-Triples, JSON-LD
Logiciel MariaDB Blazegraph
Taille > 50 M utilisateur, > 300 M pages, > 4 G éditions > 50 M items, > 500 M statements, > 7 G triplets
Adresse https://quarry.wmflabs.org/ https://query.wikidata.org/

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

Chapitre I
Quarry et SQL
(Structured Query Language)


© Husky, CC-BY-SA 4.0

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

Prélude

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

Commentaires


-- ceci est un commentaire
						

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

USE


USE frwiki_p;
						

SHOW databases LIKE "%_p";
						

SHOW databases LIKE "%fr%_p";
						

SHOW tables FROM "frwiki_p";
						

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

LIMIT


-- requête ici
LIMIT 10;
						
  • Utile pour tester
  • Évite de surchager le serveur

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

SELECT … FROM


USE frwiki_p;
SELECT *
FROM user_groups
LIMIT 5;
						
  • Sélectionne des données dans un tableau
  • « * » : toutes les données
ug_user ug_group ug_expiry
3 bureaucrat
3 sysop
242 ipblock-exempt
311 sysop
624 bureaucrat

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

SELECT … FROM

ug_user ug_group ug_expiry
3 bureaucrat
3 sysop
242 ipblock-exempt
311 sysop
624 bureaucrat
  • Contenu du tableau documenté

USE frwiki_p;
DESCRIBE user_groups;
						

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

SELECT … FROM


USE frwiki_p;
SELECT ug_user, ug_group
FROM user_groups
LIMIT 5;
						
  • « ug_user, ug_group » : colonnes à sélectionner
ug_user ug_group
3 bureaucrat
3 sysop
242 ipblock-exempt
311 sysop
624 bureaucrat

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

WHERE


USE frwiki_p;
SELECT ug_user, ug_group
FROM user_groups
WHERE ug_group = 'bureaucrat'
LIMIT 10;
						
  • « ug_group » : colonne
  • « 'bureaucrat' » : chaîne de caractères
ug_user ug_group
3 bureaucrat
624 bureaucrat
38320 bureaucrat
66875 bureaucrat
108951 bureaucrat
131885 bureaucrat
  • ⇒ intégralité des résultats

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

AND / OR


USE frwiki_p;
SELECT ug_user, ug_group
FROM user_groups
WHERE ug_group = 'bureaucrat'
  AND ug_user < 1000
LIMIT 10;
								
ug_user ug_group
3 bureaucrat
624 bureaucrat

USE frwiki_p;
SELECT ug_user, ug_group
FROM user_groups
WHERE ug_user < 10
  OR ug_user > 1000
LIMIT 5;
								
ug_user ug_group
3 bureaucrat
3 sysop
1334 accountcreator
1674 sysop
1818 sysop

USE frwiki_p;
SELECT ug_user, ug_group
FROM user_groups
WHERE ug_group = 'bureaucrat'
  AND (
    ug_user < 1000
    OR ug_user > 100000)
LIMIT 10;
								
ug_user ug_group
3 bureaucrat
624 bureaucrat
108951 bureaucrat
131885 bureaucrat

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

IN / BETWEEN / NOT


USE frwiki_p;
SELECT ug_user, ug_group
FROM user_groups
WHERE ug_group IN
  ('oversight', 'checkuser')
LIMIT 5;
								
ug_user ug_group
277571 checkuser
358107 checkuser
482698 checkuser
982697 checkuser
124118 oversight

USE frwiki_p;
SELECT ug_user, ug_group
FROM user_groups
WHERE ug_user
  BETWEEN 10 AND 1000
LIMIT 5;
								
ug_user ug_group
242 ipblock-exempt
311 sysop
624 bureaucrat
624 sysop
678 sysop

USE frwiki_p;
SELECT ug_user, ug_group
FROM user_groups
WHERE ug_user
  NOT BETWEEN 10 AND 1000
LIMIT 5;
								
ug_user ug_group
3 bureaucrat
3 sysop
1334 accountcreator
1674 sysop
1818 sysop

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

LIKE


USE frwiki_p;
SELECT ug_group
FROM user_groups
WHERE ug_group LIKE '%er%'
LIMIT 5;
						
ug_group
abusefilter
interface-admin
abusefilter
abusefilter
abusefilter

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

DISTINCT


USE frwiki_p;
SELECT DISTINCT ug_group
FROM user_groups
WHERE ug_group LIKE '%er%'
LIMIT 10;
						
ug_group
abusefilter
interface-admin
rollbacker
oversight
checkuser

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

COUNT


USE frwiki_p;
SELECT COUNT(DISTINCT ug_group)
FROM user_groups;
						
COUNT(DISTINCT ug_group)
13

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

AS


USE frwiki_p;
SELECT COUNT(DISTINCT ug_group) AS nombre
FROM user_groups;
						
nombre
13

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

GROUP BY


USE frwiki_p;
SELECT ug_group AS groupe, COUNT(ug_group) AS nombre
FROM user_groups
GROUP BY ug_group
LIMIT 5;
						
groupe nombre
abusefilter 38
accountcreator 97
bot 117
bureaucrat 6
checkuser 4

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

HAVING


USE frwiki_p;
SELECT ug_group AS groupe, COUNT(ug_group) AS nombre
FROM user_groups
GROUP BY ug_group
HAVING nombre > 100;
						
groupe nombre
bot 117
ipblock-exempt 120
sysop 156

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

ORDER BY … ASC / DESC


USE frwiki_p;
SELECT ug_group AS groupe, COUNT(ug_group) AS nombre
FROM user_groups
GROUP BY ug_group
ORDER BY nombre ASC
LIMIT 5;
						
groupe nombre
transwiki 1
confirmed 3
flow-bot 3
checkuser 4
oversight 4

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

© H. Zell, CC-BY-SA 3.0

INNER JOIN … ON


USE frwiki_p;
SELECT ug_user, ug_group
FROM user_groups
WHERE ug_group IN ('transwiki', 'confirmed', 'flow-bot');
						
ug_user ug_group
1523523 confirmed
1523524 confirmed
1523526 confirmed
2023166 flow-bot
2289461 flow-bot
2298548 flow-bot
482698 transwiki

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

INNER JOIN … ON


USE frwiki_p;
SELECT user.user_name, user_groups.ug_group
FROM user_groups
INNER JOIN user ON user_groups.ug_user = user.user_id
WHERE user_groups.ug_group IN ('transwiki', 'confirmed', 'flow-bot');
						
ug_user ug_group
Aft5monitor confirmed
Aft5editor confirmed
Aft5hide confirmed
Gestionnaire de la page de Flow flow-bot
Gestionnaire de la page Flow flow-bot
Flow talk page manager flow-bot
AntonierCH transwiki

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

INNER JOIN … ON


USE frwiki_p;
SELECT user.user_name, user_groups.ug_group
FROM user_groups
INNER JOIN user ON user_groups.ug_user = user.user_id
WHERE user_groups.ug_group IN ('transwiki', 'confirmed', 'flow-bot');
						

USE frwiki_p;
SELECT user_name, ug_group
FROM user_groups
JOIN user ON ug_user = user_id
WHERE ug_group IN ('transwiki', 'confirmed', 'flow-bot');
						

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

© Peter Trimming, CC-BY 2.0

Exemples

Quelle est la page la plus modifiée de la Wikisource en suédois ?

Exemples


USE svwikisource_p;
SELECT page_namespace, page_title, COUNT(rev_id) AS nombre
FROM page
JOIN revision ON page_id = rev_page
GROUP BY rev_page
ORDER BY nombre DESC
LIMIT 5;
						
page_namespace page_title nombre
10 Antalsidor 3488
4 Mötesplatsen 2229
2 Innocent_bystander/testar/Fredrik_Reinfeldt 646
4 Lista_över_texter_som_saknar_upphovsrättsmall 512
10 Nya_texter 460

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

Exemples

Quel est le quarante-deuxième contributeur le plus prolifique de Wikispecies ?

Exemples


USE specieswiki_p;
SELECT rev_user_text, COUNT(rev_id) AS nombre
FROM revision_userindex
JOIN page ON page_id = rev_page
WHERE page_namespace = 0
GROUP BY rev_user_text
ORDER BY nombre DESC
LIMIT 42;
						
rev_user_text nombre
AchtSegel 11737
Kempm 11496
Kheller 10998
MKOliver 10657

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

Exemples

Quelle est la durée moyenne entre deux éditions de l'article “Insomnie” entre 21 h et 7 h ?
  • frwiki_p
  • https://www.mediawiki.org/wiki/Manual:Page_table
  • https://www.mediawiki.org/wiki/Manual:Revision_table
  • 
    USE frwiki_p;
    SELECT date,
           COUNT(time) + 1 AS edit_count,
           AVG(time) AS average_interval
    FROM
      (SELECT DATE(DATE_SUB(rev_timestamp, INTERVAL 10 HOUR)) AS date,
              TIMESTAMPDIFF(MINUTE, @previous, rev_timestamp) AS time,
              @previous := rev_timestamp
       FROM (SELECT @previous := 0) AS _
       JOIN revision
       JOIN page ON page_id = rev_page
       WHERE page_namespace = 0
       AND page_title = 'Insomnie'
       AND (HOUR(rev_timestamp) > 19 OR HOUR(rev_timestamp) < 5)
       ORDER BY rev_timestamp) AS deltas
    WHERE time < 600
    GROUP BY date;
    						

    © User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

Exemples

date edit_count average_interval
2005-06-02 2 248.0
2007-07-18 10 14.0
2008-12-07 12 0.9091
2009-05-16 2 68.0
2011-07-18 3 0.5
2012-09-25 2 448.0
2014-03-30 3 3.0
2016-10-03 5 4.75
2018-04-09 3 2.5
2018-08-03 2 1.0
2018-08-04 2 0.0

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

Limitations de Quarry

  • Incomplétude des réplicats
    • Texte des pages
    • Données masquées
  • Ancienneté des données (replag)
  • Accessibilité au grand public

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

© leisergu, CC-BY 2.0

Chapitre II
Query et SPARQL (et LDF)
(SPARQL Protocol and RDF Query Language
Linked Data Fragments)


© Planemad, DP

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

Prélude

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

Commentaires


# ceci est un commentaire
						

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

ASK WHERE


ASK
WHERE {
  ?someone
    <http://www.wikidata.org/prop/direct/P569>
    "1918-09-06T00:00:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
}
						
  • Questions à réponse booléenne (« vrai » ou « faux » uniquement)
  • Les dates de naissance ne sont pas stockées sous forme de date,
    mais de dateTime à minuit

true
						

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

PREFIX


ASK
WHERE {
  ?someone
    <http://www.wikidata.org/prop/direct/P569>
    "1918-09-06T00:00:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
}
						

PREFIX foo: <http://www.w3.org/2001/XMLSchema#>
PREFIX bar: <http://www.wikidata.org/prop/direct/>

ASK
WHERE {
  ?someone
    bar:P569
    "1918-09-06T00:00:00Z"^^foo:dateTime .
}
						

PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
						

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

SELECT … WHERE


SELECT ?someone
WHERE {
  ?someone wdt:P569 "1918-09-06T00:00:00Z"^^xsd:dateTime .
}
						
someone
wd:Q71970
wd:Q1279469
wd:Q2217232
wd:Q3163269

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

LIMIT


SELECT ?someone
WHERE {
  ?someone wdt:P569 "1918-09-06T00:00:00Z"^^xsd:dateTime .
}
LIMIT 5
						
someone
wd:Q71970
wd:Q1279469
wd:Q2217232
wd:Q3163269
wd:Q3742582

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

WHERE


SELECT ?someone
WHERE {
  ?someone wdt:P19 wd:Q1289 .     # personne née à Grenoble
  ?someone wdt:P106 wd:Q1028181 . # personne ayant eu une activité de peintre
  ?someone wdt:P106 wd:Q1930187 . # personne ayant eu une activité de journaliste
}
						

SELECT ?someone
WHERE {
  ?someone wdt:P19 wd:Q1289 ;     # personne née à Grenoble et
           wdt:P106 wd:Q1028181 ; #          ayant eu une activité de peintre et
           wdt:P106 wd:Q1930187 . #          ayant eu une activité de journaliste
}
						

SELECT ?someone
WHERE {
  ?someone wdt:P19 wd:Q1289 ;     # personne née à Grenoble et
           wdt:P106 wd:Q1028181 , #          ayant eu une activité de peintre et de
                    wd:Q1930187 . #                                   journaliste
}
						

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

WHERE


SELECT ?someone
WHERE {
  ?someone wdt:P19 ?city .        # personne née dans une ville
  ?city wdt:P1376 wd:Q12559 .     # cette ville étant le chef-lieu de l'Isère
}
						

SELECT ?someone
WHERE {
  ?someone wdt:P19                # personne née dans
    [ wdt:P1376 wd:Q12559 ] .     #   le chef-lieu de l'Isère
}
						

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

WHERE


SELECT ?someone
WHERE {
  ?someone wdt:P19                # personne née dans
    [ wdt:P1376 wd:Q12559 ] .     #   le chef-lieu de l'Isère
}
						

SELECT ?someone
WHERE {
  ?someone wdt:P19/wdt:P1376 wd:Q12559 . #   personne née dans le chef-lieu de l'Isère
}
						

SELECT ?someone
WHERE {
  ?someone wdt:P19|wdt:P20 wd:Q1289 .     # personne née ou morte à Grenoble
}
						

SELECT ?someone
WHERE {
  ?someone (wdt:P19|wdt:P20)/wdt:P1376 wd:Q12559 . # personne née ou morte le chef-lieu de l'Isère
}
						

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

WHERE


SELECT ?ancestor
WHERE {
   wd:Q3044 wdt:P22 ?ancestor # père de Charlemagne
}
						
ancestor
wd:81212

SELECT ?ancestor
WHERE {
   wd:Q3044 wdt:P22/wdt:P22 ?ancestor # grand-père de Charlemagne
}
						
ancestor
wd:3301

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

WHERE


SELECT ?ancestor
WHERE {
   wd:Q3044 wdt:P22+ ?ancestor # tous les ancêtres de sexe masculin de Charlemagne
}
						
ancestor
wd:81212
wd:3301
wd:91392
wd:453739

SELECT ?ancestor
WHERE {
   wd:Q3044 (wdt:P22|wdt:P25)+ ?ancestor # tous les ancêtres de Charlemagne
}
						

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

FILTER


SELECT ?someone ?date
WHERE {
  ?someone wdt:P19                # personne née dans
    [ wdt:P1376 wd:Q12559 ] ;     #   le chef-lieu de l'Isère
           wdt:P569 ?date .       #          née à une date
  FILTER(YEAR(?date) >= 2000)     # date qui est postérieure à 2000
}
						
someone date
wd:Q1285458 1 janvier 2000
wd:Q56508189 23 août 2000

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

REGEX


SELECT ?someone ?name
WHERE {
  ?someone wdt:P19                 # personne née dans
    [ wdt:P1376 wd:Q12559 ] ;      #   le chef-lieu de l'Isère
           wdt:P1559 ?name .       #         ayant un nom en
  FILTER(REGEX(?name, "^Mi.*in$")) # Mi … in
}
						
someone name
wd:Q3310830 Michel Savin
wd:Q235770 Miss Kittin
wd:Q954560 Michel Fugain


© Joriola, CC-BY-SA 3.0

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

DISTINCT


SELECT ?someone
WHERE {
  ?someone wdt:P19|wdt:P20 wd:Q1289 .     # personne née ou morte à Grenoble
}
						

SELECT ?someone ?birth ?death
WHERE {
  ?someone wdt:P39 wd:Q29182 ;            # évêque
           wdt:P19|wdt:P20 wd:Q1289 ;     #   né ou mort à Grenoble
           wdt:P569 ?birth_date ;         #   né entre 1700 et 1720
           wdt:P19 ?birth ;
           wdt:P20 ?death .
  FILTER(YEAR(?birth_date) > 1700 && YEAR(?birth_date) <= 1720)
}
						
someone birth death
wd:Q532586 wd:Q1289 wd:Q2145
wd:Q3372466 wd:Q1289 wd:Q1289
wd:Q3372466 wd:Q1289 wd:Q1289

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

DISTINCT


SELECT DISTINCT ?someone ?birth ?death
WHERE {
  ?someone wdt:P39 wd:Q29182 ;            # évêque
           wdt:P19|wdt:P20 wd:Q1289 ;     #   né ou mort à Grenoble
           wdt:P569 ?birth_date ;         #   né entre 1700 et 1720
           wdt:P19 ?birth ;
           wdt:P20 ?death .
  FILTER(YEAR(?birth_date) > 1700 && YEAR(?birth_date) <= 1720)
}
						
someone birth death
wd:Q23816517 wd:Q1289 wd:Q1289
wd:Q532586 wd:Q1289 wd:Q2145
wd:Q3372466 wd:Q1289 wd:Q1289
wd:Q16855838 wd:Q1289 wd:Q188776
wd:Q19944951 wd:Q1289 wd:Q207620

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

COUNT


SELECT (COUNT(DISTINCT ?someone) AS ?count)
WHERE {
  ?someone wdt:P39 wd:Q29182 ;            # évêque
           wdt:P19|wdt:P20 wd:Q1289 ;     #   né ou mort à Grenoble
           wdt:P569 ?birth_date ;         #   né entre 1700 et 1720
           wdt:P19 ?birth ;
           wdt:P20 ?death .
  FILTER(YEAR(?birth_date) > 1700 && YEAR(?birth_date) <= 1720)
}
						
count
5

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

GROUP BY


SELECT (COUNT(DISTINCT ?someone) AS ?count) ?death
WHERE {
  ?someone wdt:P39 wd:Q29182 ;            # évêque
           wdt:P19|wdt:P20 wd:Q1289 ;     #   né ou mort à Grenoble
           wdt:P569 ?birth_date ;         #   né entre 1700 et 1720
           wdt:P19 ?birth;
           wdt:P20 ?death .
  FILTER(YEAR(?birth_date) > 1700 && YEAR(?birth_date) <= 1720)
}
GROUP BY ?death
						
count death
2 wd:Q1289
1 wd:Q2145
1 wd:Q188776
1 wd:Q207620

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

HAVING


SELECT (COUNT(DISTINCT ?someone) AS ?count) ?death
WHERE {
  ?someone wdt:P39 wd:Q29182 ;            # évêque
           wdt:P19|wdt:P20 wd:Q1289 ;     #   né ou mort à Grenoble
           wdt:P569 ?birth_date ;         #   né entre 1700 et 1720
           wdt:P19 ?birth;
           wdt:P20 ?death .
  FILTER(YEAR(?birth_date) > 1700 && YEAR(?birth_date) <= 1720)
}
GROUP BY ?death
HAVING (?count > 1)
						
count death
2 wd:Q1289

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

ORDER BY ASC / DESC


SELECT (COUNT(?someone) AS ?count) ?death
WHERE {
  ?someone wdt:P19 wd:Q1289 ;  # personne née à Grenoble
           wdt:P20 ?death .    #          morte dans une ville donnée
}
GROUP BY ?death
ORDER BY DESC(?count)
LIMIT 5
						
count death
69 wd:90
58 wd:1289
7 wd:456
6 wd:1917260
4 wd:23482

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

OPTIONAL


SELECT (COUNT(?someone) AS ?count) ?death
WHERE {
  ?someone wdt:P19 wd:Q1289 .  # personne née à Grenoble
  OPTIONAL {
    ?someone wdt:P20 ?death .  # personne morte dans une ville donnée
  }
}
GROUP BY ?death
ORDER BY DESC(?count)
LIMIT 5
						
count death
379
69 wd:90
58 wd:1289
7 wd:456
6 wd:1917260

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

BOUND


SELECT (COUNT(?someone) AS ?count)
WHERE {
  ?someone wdt:P19 wd:Q1289 .  # personne née à Grenoble
  OPTIONAL {
    ?someone wdt:P20 ?death .  # personne morte dans une ville donnée
  }
  FILTER(!BOUND(?death))
}
						
count
379

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

SERVICE


SELECT ?someone
WHERE {
  SERVICE <http://dbpedia.org/sparql> {
    ?someone <http://dbpedia.org/property/birthDate> "1918-09-06"^^xsd:date .
  } .
}
						
someone
<http://dbpedia.org/resource/Edward_Ellis_(Royal_Navy_officer)>
<http://dbpedia.org/resource/Pat_Dalton_(footballer,_born_1918)>
<http://dbpedia.org/resource/Karl-Heinz_Scherfling>

Fédération avec une liste restreinte de services
(https://www.mediawiki.org/wiki/Wikidata_Query_Service/User_Manual/SPARQL_Federation_endpoints)

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

SERVICE

  • Implémentation de fonctionnalités absentes de SPARQL :
    • Recherche spatiale (géospatiale)
    • Parcours de graphe
    • Labels Wikidata
    • API de MediaWiki

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

SERVICE


SELECT ?place ?other_location
WHERE {
  wd:Q1952944 wdt:P625 ?museum_location .
  SERVICE wikibase:around {
    ?place wdt:P625 ?other_location .
    bd:serviceParam wikibase:center ?museum_location .
    bd:serviceParam wikibase:radius "0.1" .
  } .
  FILTER(?place != wd:Q1952944)
}
						
place other_location
wd:Q38618452 Point(5.73161 45.19413)
wd:Q869226 Point(5.73162 45.1943)
wd:Q3224346 Point(5.73222 45.1947)

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

SERVICE


SELECT ?place ?location
WHERE {
  SERVICE wikibase:around {
    ?place wdt:P625 ?location .
    bd:serviceParam wikibase:center "[AUTO_COORDINATES]" .
    bd:serviceParam wikibase:radius "0.1" .
  } .
}
						

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

SERVICE


SELECT ?item ?itemLabel ?itemDescription
WHERE {
  ?item wdt:P276 wd:Q1952944 .
  SERVICE wikibase:label {
    bd:serviceParam wikibase:language "fr,en" .
  } .
}
						
item itemLabel itemDescription
wd:Q2179252 Contra-compositie XII peinture de Theo van Doesburg
wd:Q3224346 Le Martyre de saint Pierre peinture de Mattia Preti
wd:Q3399376 Portrait d'Anne-Jules de Noailles peinture d'Hyacinthe Rigaud

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

SERVICE


SELECT ?itemLabel ?itemDescription ?image
WHERE {
  ?item wdt:P276 wd:Q1952944 .
  ?item wdt:P18 ?image .
  SERVICE wikibase:label {
    bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr,en" .
  } .
}
						

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

Exemples

Des œuvres de quels artistes le domaine public s'enrichira-t-il en 2018 ?
  • Occupation : wdt:P106
  • Sous-classe de : wdt:P279

SELECT DISTINCT ?author ?authorLabel WHERE
{
  ?author
    wdt:P31 wd:Q5 ;
    wdt:P106/wdt:P279* wd:Q482980 ;
    wdt:P570 ?death_date .
  FILTER(
    ?death_date >= "1947-01-01T00:00:00Z"^^xsd:dateTime &&
    ?death_date < "1948-01-01T00:00:00Z"^^xsd:dateTime)
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en" . }
}
						

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

Exemples


SELECT DISTINCT ?author ?authorLabel WHERE
{
  ?author
    wdt:P31 wd:Q5 ;
    wdt:P106/wdt:P279* wd:Q482980 ;
    wdt:P570 ?death_date .
  FILTER(
    ?death_date >= "1947-01-01T00:00:00Z"^^xsd:dateTime &&
    ?death_date < "1948-01-01T00:00:00Z"^^xsd:dateTime)
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr,en" . }
}
						
author authorLabel
wd:Q1254863 Alfred Meiche
wd:Q1287924 Edith Maude Hull
wd:Q1350286 Urban Gad
wd:Q1396058 Viktor Bibl

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

Exemples

Quel était le neuvième pays le plus peuplé du monde en 1945 ?
  • On n'a malheureusement pas de données… :-/
Quel était le neuvième pays le plus peuplé du monde en 2016 ?

SELECT ?countryLabel ?population ?date
WHERE {
  {
    SELECT ?country (MAX(?date) AS ?date)
    WHERE {
      ?country wdt:P31 wd:Q6256 ;
               p:P1082 [ pq:P585 ?date ] .
      FILTER(YEAR(?date) <= 2016)
    }
    GROUP BY ?country
  } .
  ?country p:P1082 [ ps:P1082 ?population ; pq:P585 ?date ] .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "fr" . }
}
ORDER BY DESC(?population)
LIMIT 9
						

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

Exemples

Quel était le neuvième pays le plus peuplé du monde en 2016 ?
countryLabel population date
République populaire de Chine 1 403 500 365 2016-07-01
Inde 1 324 171 354 2016-07-01
États-Unis 323 952 889 2016-07-09
Indonésie 261 115 456 2016-01-01
Brésil 206 081 432 2016-01-01
Pakistan 193 203 476 2016-01-01
Nigeria 182 202 000 2015-01-01
Bangladesh 156 594 962 2013-01-01
Russie 146 519 759 2016-01-01

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

© Saving Public Ryan, CC-BY-SA 4.0

Limitations de Query

  • Incomplétude de Wikidata
  • Incomplétude de la « somme de toutes les connaissances humaines »™
  • Performances (timeout à 60″, etc.)
  • Accessibilité au grand public

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

LDF


$ http https://query.wikidata.org/bigdata/ldf \
  Accept:application/n-triples \
  subject== \
  predicate==wdt:P276 \
  object==wd:Q1952944
						

<http://www.wikidata.org/entity/Q26710079> <http://www.wikidata.org/prop/direct/P276> <http://www.wikidata.org/entity/Q1952944> .
<http://www.wikidata.org/entity/Q3756779> <http://www.wikidata.org/prop/direct/P276> <http://www.wikidata.org/entity/Q1952944> .
<http://www.wikidata.org/entity/Q28064689> <http://www.wikidata.org/prop/direct/P276> <http://www.wikidata.org/entity/Q1952944> .
<http://www.wikidata.org/entity/Q3399376> <http://www.wikidata.org/prop/direct/P276> <http://www.wikidata.org/entity/Q1952944> .
<http://www.wikidata.org/entity/Q47467243> <http://www.wikidata.org/prop/direct/P276> <http://www.wikidata.org/entity/Q1952944> .
<http://www.wikidata.org/entity/Q17495773> <http://www.wikidata.org/prop/direct/P276> <http://www.wikidata.org/entity/Q1952944> .
<http://www.wikidata.org/entity/Q17495274> <http://www.wikidata.org/prop/direct/P276> <http://www.wikidata.org/entity/Q1952944> .
<http://www.wikidata.org/entity/Q17493925> <http://www.wikidata.org/prop/direct/P276> <http://www.wikidata.org/entity/Q1952944> .
…
						

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

© brownpau, CC-BY 2.0

[[Spécial:Journal/thanks]]


© Fox Film Corp., DP

© User:Arkanosis — CC-BY 4.0 — WikiConvention francophone 2018

~~~~


© David Ben David, CC-BY-SA 3.0