batailles livrées en Grêce entre 1940 et 1949 au cours de trois conflits différents : - guerre italo-grecque - résistance grecque à l’occupation allemande - guerre civile
Si on ne s’occupe que de la Résistance : L’élément “résistance à l’occupation allemande” est le Q490035
Structuration des données dans Wikidata :
| élément | propriété | valeur |
|---|---|---|
| la terre | a pour satellite | la lune |
| Q2 | P398 | Q405 |
| élément | propriété | valeur |
|---|---|---|
| Marignan (la ville) | est une instance de (=est) | une commune d’Italie |
| Q42932) | P31 | Q747074 |
| élément | propriété | valeur |
|---|---|---|
| Marignan (la bataille) | est une instance de (=est) | une bataille |
| Q330) | P31 | Q178561 |
Q = éléments, P = propriétés ; les éléments sont aussi des valeurs dans le triplet élément, propriété, valeur
on peut interroger n’importe quel triplet, ajouter des conditions.
Le service de requête de Wikidata est ouvert à tout le monde. Il dispose d’un grand nombre d’exemples dont on peut s’inspirer pour apprendre à utiliser le langage de requête utilisé par Wikidata comme par d’autres sites du même ordre : le sparql.
Possible d’interroger (et d’enrichir) également Wikidata à travers R au moyen du package R WikidataR (CRAN)
technique : essayer la requête dans le service de requêtes de Wikidata, puis quand on est satisfait des résultats, copier/coller la requêtre dans un chunck :
df <- query_wikidata(' requête en sparql ')
constitue un tableau (data frame) à partir des résultats d’une requête en sparql
Différence entre ?item et ?itemLabel
| item | itemLabel |
|---|---|
| Q330 | Battle of Marignano |
Configuration type d’une requête en sparql appliquée à Wikidata :
SELECT ?item
WHERE {
?item propriété1 valeur1 .
?item propriété2 valeur2 .
}
Cette requête peut être rendue plus complexe par l’ajout de préfixes et de paramètres supplémentaires (classement des résultats, groupement par valeurs, etc. / voir le pense-bête de l’Université de Montréal)
la sélection du français comme langue dans la Wikibase fait remonter des itemLabel en français quand ils existent. S’ils n’existent pas, l’item (Q…) apparait à la place du label. Comparer avec une requête qui puise des dénominations en anglais (“fr” -> “en”) : plus de labels s’affichent. On gardera à l’avenir le choix de la base de noms en anglais (“en”)
un statement est la déclaration qu’un item a pour telle propriété telle valeur. Notre requête ramène uniquement les items et leurs labels qui ont trois propriétés et les valeurs indiquées (est une bataille, a eu lieu en Grêce, a fait partie de la résistance grecque) Certains de ces éléments ou items font l’objet d’autre statements Par exemple, l’item Q18572820 a comme autre statement la propriété location et pour valeur de cette propriété l’élément Kallithea
ON peut souhaiter récupérer ces autres statements dans son tableau sans pour autant diminuer le nombre de résultats (sans exclure les résultats qui n’ont pas de location), pour cela on aura recours à la fonction OPTIONAL
library(WikidataR)
df <- query_wikidata('SELECT ?item ?itemLabel ?location WHERE {
?item wdt:P31 wd:Q178561 . # est une bataille
?item wdt:P17 wd:Q41 . # a eu lieu en Grêce
?item wdt:P361 wd:Q490035 . # a fait partie de la Résistance grecque
OPTIONAL { ?item wdt:P276 ?location}
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
')
## Rows: 6 Columns: 3
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (3): item, itemLabel, location
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
print(df)
## # A tibble: 6 × 3
## item itemLabel location
## <chr> <chr> <chr>
## 1 Q12880416 Battle of Chora - Agorelitsa Q41
## 2 Q12880420 Battle of Meligalas Q548223
## 3 Q15896585 Battle of Kilkis Q214347
## 4 Q15991321 Battle of Karoutes Q12878799
## 5 Q18572820 Q18572820 Q478518
## 6 Q29468626 Q29468626 <NA>
Lorsque l’élément Wikidata comporte un emplacement (“location”), c’est l’identifiant de l’élément qui apparaît dans cette nouvelle colonne. Pour avoir le nom de la localité, il faut définir un label pour cette propriété : ?location:Label et décider dans quelle langue va s’afficher le label (français, grec ou anglais). Si on ne décide pas ce dernier point, un même item va apparaître autant de fois qu’il y aura eu de langages particuliers dans lesquels cet emplacement aura été traduit (l’item Kallithea a été traduit dans 4 langues : l’anglais, le français, l’espagnol et l’allemand).
library(WikidataR)
df <- query_wikidata('SELECT ?item ?itemLabel ?location ?locationLabel WHERE {
?item wdt:P31 wd:Q178561 . # est une bataille
?item wdt:P17 wd:Q41 . # a eu lieu en Grêce
?item wdt:P361 wd:Q490035 . # a fait partie de la Résistance grecque
OPTIONAL { ?item wdt:P276 ?location .
?location rdfs:label ?locationLabel
FILTER(lang(?locationLabel) = "en")
}
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
')
## Rows: 6 Columns: 4
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (4): item, itemLabel, location, locationLabel
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
print(df)
## # A tibble: 6 × 4
## item itemLabel location locationLabel
## <chr> <chr> <chr> <chr>
## 1 Q12880416 Battle of Chora - Agorelitsa Q41 Greece
## 2 Q12880420 Battle of Meligalas Q548223 Meligalas
## 3 Q15991321 Battle of Karoutes Q12878799 Karoutes
## 4 Q18572820 Q18572820 Q478518 Kallithea
## 5 Q15896585 Battle of Kilkis Q214347 Kilkis
## 6 Q29468626 Q29468626 <NA> <NA>
On peut remarquer que dans le cas de la Bataille de Chora - Agorelitsa, la location correspond au Pays, alors que dans les autres cas, c’est le lieu précis (localité) de la bataille qui est renseigné : l’élément Q41 apparaît à la fois en lien avec la propriété *country” (P17) et la propriété “location” (P276). Pour cette dernière, il vaudrait mieux indiquer la localité où s’est déroulée cette bataille. D’après l’article correspondant dans Wikipédia, elle s’est déroulée dans deux localités entre Chora et Ampelofyto en Messénie. Il n’est pas forcément aisé de trouver dans la liste des éléments ayant pour label Chora (un nom commun en Grêce et présent aussi dans d’autres langues) le Chora de la Méssenie dont il est question ici mais une lecture attentive des résultats, nous permet de déterminer qu’il s’agit de cet élément
De la même manière qu’il est possible d’agir sur une page wikipédia sans disposer de compte Wikimedia, il est possible ici de faire la modification à la main directement sur l’élément :
Néanmoins il est recommandé de ne pas faire de modifications de façon anonyme. En effet, la communauté qui veille sur Wikipédia et les projets frères de l’Encyclopédie, parmi lesquels Wikidata, a plus confiance généralement dans une modification qui peut être rapportée à un compte, surtout si le détenteur du compte a pris soin de se présenter et de présenter ses intérêts et ses motivations à enrichir Wikipédia et Wikimédia sur une page utilisateur.
Par ailleurs, pour réaliser des enrichissements de groupe (voir la partie sur les enrichissements
relations entre Wikidata et Wikipédia. Lorsqu’on veut écrire des articles sur Wikipédia (par exemple lors des Wikithons) il peut être intéressant de se poser la question suivante :
quels éléments historiques il y a dans Wikidata qui n’ont pas encore fait l’objet d’un article Wikipédia dans ma langue. Sachant que tous les éléments dans Wikidata n’ont pas vocation à faire l’objet de pages dans Wikipédia (cf. critères d’admissibilité). Mais pour les batailles, sans doute que c’est le cas.
a une page sur Wikipedia
library(WikidataR)
df1 <- query_wikidata('SELECT DISTINCT ?item ?itemLabel ?date ?coord ?latitude ?longitude WHERE {
?item wdt:P31 wd:Q178561 . # Is a battle
?item wdt:P17 wd:Q41 . # Has Greece as location
?item wdt:P361 ?o .
VALUES ?o { wd:Q490035
wd:Q223604
wd:Q188972
}
OPTIONAL { ?item wdt:P585 ?date. }
OPTIONAL { ?item wdt:P625 ?coord.
?coords_sample ps:P625 ?coord;
psv:P625 [
wikibase:geoLatitude ?latitude;
wikibase:geoLongitude ?longitude
] .
}
FILTER NOT EXISTS { # Check if there is no French Wikipedia page for this item
?wikipedia schema:about ?item ; # Get wikipedia information about this item
schema:isPartOf <https://fr.wikipedia.org/> } # Only en pages, not other language versions
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
')
## Rows: 10 Columns: 6
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (3): item, itemLabel, coord
## dbl (2): latitude, longitude
## dttm (1): date
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
print(df1)
## # A tibble: 10 × 6
## item itemLabel date coord latitude longitude
## <chr> <chr> <chr> <chr> <chr> <chr>
## 1 Q98931743 Battle of Metaxades <NA> <NA> <NA> <NA>
## 2 Q29468626 Q29468626 <NA> <NA> <NA> <NA>
## 3 Q1772340 Battle of Elaia–Kalamas 1940-11-08 Point(2… 39.5867 20.1422
## 4 Q716722 Battle of Pindus 1940-11-13 Point(2… 40.0889 20.9253
## 5 Q18121569 Battle of Agios Vasileios <NA> Point(2… 37.1870… 22.68917…
## 6 Q18572820 Q18572820 1944-07-24 <NA> <NA> <NA>
## 7 Q15991321 Battle of Karoutes 1944-08-05 <NA> <NA> <NA>
## 8 Q12880416 Battle of Chora - Agorelitsa 1944-07-19 Point(2… 37.0549… 21.705991
## 9 Q20552658 Battle of Florina <NA> Point(2… 40.7827… 21.40888…
## 10 Q15896585 Battle of Kilkis 1944-11-04 Point(2… 40.9833… 22.866667
write.csv(df1, "batailles.csv")
autres batailles impliquant la résistance :
(Q16331929)
Ajout des coordonnées géographiques
création de la carte
dataframe <- read.csv("batailles_complet.csv")
print(dataframe)
## X item itemLabel date
## 1 1 Q98931743 Battle of Metaxades 1949-05-15
## 2 2 Q29468626 Battle of Mines <NA>
## 3 3 Q1772340 Battle of Elaia–Kalamas 1940-11-08
## 4 4 Q716722 Battle of Pindus 1940-11-13
## 5 5 Q18121569 Battle of Agios Vasileios 1949-01-22
## 6 6 Q18572820 Battle of Byzani Street 1944-07-24
## 7 7 Q15991321 Battle of Karoutes 1944-08-05
## 8 8 Q12880416 Battle of Chora - Agorelitsa 1944-07-19
## 9 9 Q20552658 Battle of Florina 1949-02-12
## 10 10 Q15896585 Battle of Kilkis 1944-11-04
## 11 11 Q16331929 Battle of Fardykambos 1943-03-06
## coord latitude longitude
## 1 <NA> 41.42000 26.22528
## 2 <NA> NA NA
## 3 Point(20.1422 39.5867) 39.58670 20.14220
## 4 Point(20.9253 40.0889) 40.08890 20.92530
## 5 Point(22.689172222 37.187097222) 37.18710 22.68917
## 6 <NA> 37.96125 23.70538
## 7 <NA> 38.31350 22.15460
## 8 Point(21.705991 37.054952) 37.05495 21.70599
## 9 Point(21.408888888 40.782777777) 40.78278 21.40889
## 10 Point(22.866667 40.983333) 40.98333 22.86667
## 11 40.13590 21.32500
## Warning: le package 'dplyr' a été compilé avec la version R 4.3.3
##
## Attachement du package : 'dplyr'
## Les objets suivants sont masqués depuis 'package:stats':
##
## filter, lag
## Les objets suivants sont masqués depuis 'package:base':
##
## intersect, setdiff, setequal, union
## X item itemLabel date
## 1 1 Q98931743 Battle of Metaxades 1949-05-15
## 2 2 Q29468626 Battle of Mines <NA>
## 3 3 Q1772340 Battle of Elaia–Kalamas 1940-11-08
## 4 4 Q716722 Battle of Pindus 1940-11-13
## 5 5 Q18121569 Battle of Agios Vasileios 1949-01-22
## 6 6 Q18572820 Battle of Byzani Street 1944-07-24
## 7 7 Q15991321 Battle of Karoutes 1944-08-05
## 8 8 Q12880416 Battle of Chora - Agorelitsa 1944-07-19
## 9 9 Q20552658 Battle of Florina 1949-02-12
## 10 10 Q15896585 Battle of Kilkis 1944-11-04
## 11 11 Q16331929 Battle of Fardykambos 1943-03-06
## coord latitude longitude date_iso
## 1 <NA> 41.42000 26.22528 +1949-05-15T00:00:00Z/11
## 2 <NA> NA NA +NAT00:00:00Z/11
## 3 Point(20.1422 39.5867) 39.58670 20.14220 +1940-11-08T00:00:00Z/11
## 4 Point(20.9253 40.0889) 40.08890 20.92530 +1940-11-13T00:00:00Z/11
## 5 Point(22.689172222 37.187097222) 37.18710 22.68917 +1949-01-22T00:00:00Z/11
## 6 <NA> 37.96125 23.70538 +1944-07-24T00:00:00Z/11
## 7 <NA> 38.31350 22.15460 +1944-08-05T00:00:00Z/11
## 8 Point(21.705991 37.054952) 37.05495 21.70599 +1944-07-19T00:00:00Z/11
## 9 Point(21.408888888 40.782777777) 40.78278 21.40889 +1949-02-12T00:00:00Z/11
## 10 Point(22.866667 40.983333) 40.98333 22.86667 +1944-11-04T00:00:00Z/11
## 11 40.13590 21.32500 +1943-03-06T00:00:00Z/11
item <- c(dataframe$item) # This should be replaced by actual QID created on Wikidata
property <- "P585" # Date of birth
value <- c(dataframe$date_iso) # ISO date format
library(WikidataR)
write_wikidata(items = item,
properties = "P585",
values = value,
format = "api",
api.username = "identifiant_utilisateur",
api.token = "mettre ici votre token")