Wikipedia Diskussion:Redaktion Physik/Wikidata-Abfragen

aus Wikipedia, der freien Enzyklopädie
Letzter Kommentar: vor 5 Jahren von Dogbert66 in Abschnitt Technische Fragen
Zur Navigation springen Zur Suche springen

Von der Chat-Seite hierher verschoben

[Quelltext bearbeiten]

Den Beitrag von ArchibaldWagner am 8. September 2019, 22:46 Uhr auf der Chat-Seite verschiebe ich gerade mal hierher:

Ich, ArchibaldWagner (Diskussion) habe eine neue Seite "Wikipedia:Redaktion Physik/Wikidata-Abfragen" eingerichtet. Hier findet ihr Wikidata-Abfragen (bzw. Hinweise), wie ihr eine Liste von Physikern, nach Geburtstagen (bzw. Todesdatum) geordnet, mit Wikidata erstellen könnt. Weiter eine Abfragen, um die in Wikidata eingetragenen Ehrungen einer Person zu erhalten – und eine weitere, um die Objekte, die nach einer Person benannt wurden zu erhalten. @Dogbert66: bitte einmal ausprobieren!

... Ende der Verschiebung ... --Dogbert66 (Diskussion) 00:48, 18. Sep. 2019 (CEST)Beantworten

@ArchibaldWagner: Vielen Dank für das Anlegen der Seite und die hilfreichen Beispielabfragen. Insbesondere gefällt mit Deine "monthdate"-Konstruktion, die nicht nur zum Sortieren, sondern eben auch zum Filtern hilft!
Ich habe die Seite gerade mal umstrukturiert, so dass klarer daraus hervorgeht, wozu die Abfragen benötigt werden. Ich hoffe, das ist in Deinem Sinne, auch wenn dadurch evtl. Teile Deines Textes redundant geworden sind. --Dogbert66 (Diskussion) 00:48, 18. Sep. 2019 (CEST)Beantworten

Technische Fragen

[Quelltext bearbeiten]

Intention dieses Abschnittes ist es, ggf. auch Hilfestellung für später im Sinne eines FAQ-Kapitels zu liefern.

Absteigende Sortierung

[Quelltext bearbeiten]

In einer SQL-Abfrage könnte man mit einem ORDER BY monthdate ASC, linkcount DESC auch innerhalb des jeweiligen Kalendertages nach Anzahl der Links absteigend sortieren. Im SPARQL scheint es aber kein DESC für die Zeile ORDER BY ?monthdate ?linkcount DESC zu geben. Gibt es da eine Abhilfe? --Dogbert66 (Diskussion) 00:48, 18. Sep. 2019 (CEST)Beantworten

Doch, gibt es, siehe w3.org sparql11-query/#modOrderBy. In unserem Beispiel etwa: ORDER BY DESC(?monthday). ArchibaldWagner (Diskussion) 19:15, 19. Sep. 2019 (CEST)Beantworten
@ArchibaldWagner: Danke, das löst es! Ich habe umseitig eingebaut, dass die Tage weiterhin aufsteigend, dann aber innerhalb des Tages nach Verlinkungen absteigend sortiert wird. --Dogbert66 (Diskussion) 20:14, 25. Sep. 2019 (CEST)Beantworten

Todestag von Kopernikus

[Quelltext bearbeiten]

Sowohl im Artikel Nikolaus Kopernikus, als auch unter dem Wikidata-Item findet man als Kopernikus' Todestag den 24. Mai 1543.

Interessanterweise wird er aber nicht gelistet, wenn man unsere umseiteige Abfrage mit "?monthdate = 524" aufruft, wohl aber bei Abfrage mit "?monthdate = 603".

Ist das ein Fehler in der Umrechnung von julianischem auf gregorianischen Kalender?? Müssen wir die Abfrage darauf nochmal überprüfen??

@ArchibaldWagner: Hast Du dazu eine Idee? --Dogbert66 (Diskussion) 13:56, 6. Okt. 2019 (CEST)Beantworten

@Dogbert66: Du hast offenbar einen Blick für Problemstellen ;-) . Und Du hast ja schon eine Idee: ein Kalenderproblem. Dein Verdacht geht wohl in die richtige Richtung; vermutlich ein Kalender-Fehler bei der Formatierung in der Query-Software. Es wird auch der Geburtstag von unserem Herrn Kopernikus vom 19. Feb. auf den 28. Feb. verschoben. Die folgende Abfrage zeigt, dass dieses wohl auch für alle Geburtstage mit einem Geburtsjahr vor 1580 passiert. Der Versatz (bei der von mir überprüften Stichprobe) beträgt 10 Tage!
## Frage nach Physiker, die eine Seite auf de.wiki und en.wiki haben, und ordne 
# das Datum nach dem Geburtstag im Jahr
# 
#SELECT ( COUNT(?item) as ?numberOfPhysicists ) # result 4981 (in 28s) at 2019-09-08
#
SELECT DISTINCT ?item ?itemLabel ?sitelink (YEAR(?date) as ?year) ?date 
WHERE 
{
  ?item wdt:P106/wdt:P279* wd:Q169470.   # Tätigkeit '?classPhys', mit "property path" S 62-65
  ?sitelink schema:isPartOf <https://de.wikipedia.org/>;
     schema:about ?item. 
  ?site2link schema:isPartOf <https://en.wikipedia.org/>;
     schema:about ?item. 
  ?item wdt:P569 ?date .
  BIND( 100*MONTH(?date) + DAY(?date) AS ?monthday )
  BIND( YEAR( ?date ) AS ?xyear )
  FILTER( ?xyear < 1580 )
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
ORDER BY ?monthday
LIMIT 6000
Ich werde demnächst Deine "Entdeckung" bei Wikidata als Fehler melden, mögen sich andere hoffentlich bald darum kümmern. ArchibaldWagner (Diskussion) 18:32, 7. Okt. 2019 (CEST)Beantworten
Im Phabricator die Fehlermeldung T234950 "Wrong birthday in result list of SPARQL when person was born before 1580" eintragen. ArchibaldWagner (Diskussion) 18:09, 8. Okt. 2019 (CEST)Beantworten
@Dogbert66: Lucas_Werkmeister_WMDE added that it is a feature and not an error. In wikidata-SPARQL dates are always presented in the proleptic Gregorian calendar. Hiernach frage ich mich, ob wir bei den Daten in dem Block "Aktuelle Jahrestage" auch den Kalender angeben müssen. Oder alles ist relativ; auch die Jahrestage. Was so einfach aussieht, kann ziemlich kompliziert werden, wenn es unmissverständlich sein soll. ArchibaldWagner (Diskussion) 21:25, 8. Okt. 2019 (CEST)Beantworten
@ArchibaldWagner: Also: a) Meiner Meinung nach ist es nicht sinnvoll ist, Daten vor 1582 im Gregorianischen Kalender anzugeben, weil es den damals einfach noch nicht gab. b) Sowohl auf Wikipedia, als auch auf Wikidata werden die Daten vor Oktober 1582 im Julianischen Kalender angegeben (siehe Nikolaus Kopernikus und D:Q619#P570).
Unser Kalender sollte mit den Wikipedia-Daten und mit den Wikidata-Daten übereinstimmen. Wenn SPARQL da falsche Ergebnisse liefert, so ist das schade, aber wir wissen jetzt zumindest die Ursache und auch, dass Daten nach 1582 nicht davon betroffen sind. Wir könnten natürlich auch die Korrektur auf Julianischen Kalender vor 1582 gemäß en:Proleptic Gregorian calendar#Difference between Julian and proleptic Gregorian calendar dates selbst in unsere SPARQL-Abfrage einbasteln.
Ich überlege mir, ob ich bei Gelegenheit Zeit habe, mich darüber aufzuregen ... --Dogbert66 (Diskussion) 17:25, 14. Okt. 2019 (CEST)Beantworten

Offene Punkte

[Quelltext bearbeiten]

Folgende beiden Ansätze aus dieser bereits archivierten Diskussion könnten noch verfolgt werden:

  • Mit dem Code
      ?physicist p:P569/psv:P569 ?birth_date_node. # has a dob with day precision
      {?birth_date_node wikibase:timePrecision "11"^^xsd:integer .}
      ?birth_date_node wikibase:timeValue ?dob.
    
    können vermutlich die Geburtsdaten erkannt (und dann ausgefiltert) werden, die nur das Jahr ohne Angabe von Monat und Tag enthalten.
  • Ebenso könnte man eine Kombination von zwei ineinander verschachtelten SELECT-Statements dazu verwenden, die Abfrage der Awards (die in Wikipedia:Redaktion Physik/Wikidata-Abfragen#Suche nach den Ehrungen einer Person für eine Person erfragt mehrere Zeilen ergeben) in eine Anzahl ?awardsCount zu verwandeln.

Beides muss aber nicht unbedingt umgesetzt werden, da die doppelten Zeilen in der derzeitigen Abfrage einen Hinweis darauf geben, dass die "beiden" Geburtstage auf Wikidata nochmal überprüft werden sollten. --Dogbert66 (Diskussion) 00:48, 18. Sep. 2019 (CEST)Beantworten

Ja man könnte eine Menge mehr abfragen, allerdings etwa bei den "awards", wäre das Problem, dass wir leider schnell in eine Zeitbegrenzung laufen. ArchibaldWagner (Diskussion) 19:18, 19. Sep. 2019 (CEST)Beantworten