2016-07-15 23 views
1

Diese Seite: http://wikidata.dbpedia.org/downloads/20160111/ hat einen Dump namens wikidatawiki-20160111-page-ids.ttl.bz2 , die Wikidata-ID enthält, was sie wikipage-ID genannt haben. Die Wikipage-ID scheint sich jedoch von der Wikipedia-Seite zu unterscheiden.Gibt es einen Dump für Wikipedia Pageid zum wikidata id mapping?

z.B. für Deutschland:

  • Wikipedia pageid = 11867
  • Wikidata id = Q183 und Wikiseite id = 322.

Also im Grunde diese Dump-Karten Q183 auf 322, während ich Q183 bis 11867 zur Karte benötigen.

Als Referenz: https://en.wikipedia.org/w/index.php?title=Germany&curid=11867 Die Curid in der URL repräsentiert die Wikipedia-Seite ID.

Gibt es eine äquivalente Dump-Datei, die die Wikidata-IDs und die Wikipedia-Seitenkennung enthält? (Ich möchte nicht über eine API und Schleife eine meiner Wikipedia-ID wie diese durch eine verwenden tut: https://en.wikipedia.org/w/api.php?action=query&prop=pageprops&format=xml&pageids=11867)

Edit: ich bin nicht sicher, waht ist genau die Wikiseite id, aber vielleicht gibt ist eine wikipageId Wikipedia-Seiteid-Mapping-Datei oben auf dem Dump, die ich in der Frage erwähnt habe.

Antwort

0

fand ich endlich den Dump für die obige Anfrage:
https://dumps.wikimedia.org/enwiki/20160720/

gibt es eine Datei gibt:
enwiki-20160720-page_props.sql.gz

das Problem ist die Datei ein MySql-Skript ist, während ich anschaute entweder für eine JSON- oder eine XML-Datei. Ich habe ein sehr kurzes PHP-Skript geschrieben, um die Klammerblöcke zu extrahieren und habe ein Format, das meinen Bedürfnissen entspricht.

1

Wenn Sie bereit sind, eine API-Anruflösung zu erwägen, anstatt die Dump- und Formatanpassung zu verwenden, können Sie die pageprops-Eigenschaft der query-Aktion verwenden.

Zum Beispiel, wenn wir die Wikidata Artikel für Albert Einstein, angesichts der Wikipedia-Seite Titel erfahren möchten, dann würden Sie tun:

{ 
    "batchcomplete": "", 
    "query": { 
    "pages": { 
     "736": { 
     "pageid": 736, 
     "ns": 0, 
     "title": "Albert Einstein", 
     "pageprops": { 
      "defaultsort": "Einstein, Albert", 
      "page_image": "Einstein_1921_by_F_Schmutzer_-_restoration.jpg", 
      "wikibase-badge-Q17437798": "1", 
      "wikibase_item": "Q937" 
     } 
     } 
    } 
    } 
} 

So:

https://en.wikipedia.org/w/api.php?action=query&format=json&prop=pageprops&titles=Albert Einstein 

Welche gibt Wir können die ID des Wikidata-Elements unter wikibase_item abrufen.

Potenziell (Dies wird als ursprünglich von Dmitry Brant im Mediawiki-api mailing list beantwortet) ist dies eine bessere Lösung, weil:

  1. Sie nur für die Elemente, die Sie anstelle von müssen die Suche durch die ganze suchen Dump
  2. Sie die Antwort in JSON oder XML erhalten können direkt
+0

Vielen Dank für Ihre Antwort, aber ich interessiere mich für die volle sco Ich möchte mich von der API fernhalten. Der schnellste Weg, den ich bisher gefunden habe, ist der folgende: enwiki-latest-page_props.sql.GZ-Dump-Datei, dann ein sehr kurzer PHP-Code, um jeden Klammer-Block zu extrahieren. Die Nutzung der API dauert ungefähr eine Woche, um alles zu bekommen, mit der Dump-Datei + PHP Regex bringt es auf 15 Minuten herunter. – user3700389

+0

Wenn Sie die ganze Sache wollen, dann sind Sie wahrscheinlich besser dran mit der Dump + Extraktion, ich dachte nur, dass Sie möglicherweise an einer tatsächlichen (möglicherweise kleinen) Teilmenge der gesamten Dump interessiert sind. – atineoSE