From a61236c20983c47468aba18a65f20dbeb88bb3f4 Mon Sep 17 00:00:00 2001 From: Nicholas J Humfrey Date: Sat, 24 Nov 2012 23:10:40 +0000 Subject: [PATCH] Fixes for wikipedia articles that don't have (full) entries in wikidata --- lib/wikidata_api.rb | 6 +++--- lib/wikipedia_thing.rb | 18 ++++++++++-------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/lib/wikidata_api.rb b/lib/wikidata_api.rb index a92db6b..93b117b 100644 --- a/lib/wikidata_api.rb +++ b/lib/wikidata_api.rb @@ -34,9 +34,9 @@ def self.find_by_title(title, site='enwiki') }) if data['items'].nil? - raise MediaWiki::Exception.new('Empty response') - elsif data['items'].empty? - raise MediaWiki::NotFound.new('Failed to lookup title in Wikidata') + raise MediaWikiApi::Exception.new('Empty response') + elsif data['items'].empty? or data['items'].keys.first == "-1" + raise MediaWikiApi::NotFound.new('Failed to lookup title in Wikidata') end data['items'].values.first diff --git a/lib/wikipedia_thing.rb b/lib/wikipedia_thing.rb index 846d841..6c7cf41 100644 --- a/lib/wikipedia_thing.rb +++ b/lib/wikipedia_thing.rb @@ -92,12 +92,14 @@ def fetch_wikidata # Attempt to lookup in WikiData, but silently fail on error begin data = WikidataApi.find_by_title(title) - self.wikidata_id = data['title'] - if data['labels'].has_key?('en') - self.wikidata_label = data['labels']['en']['value'] - end - if data['descriptions'].has_key?('en') - self.wikidata_description = data['descriptions']['en']['value'] + if data.has_key?('id') + self.wikidata_id = data['title'] + if data.has_key?('labels') and data['labels'].has_key?('en') + self.wikidata_label = data['labels']['en']['value'] + end + if data.has_key?('descriptions') and data['descriptions'].has_key?('en') + self.wikidata_description = data['descriptions']['en']['value'] + end end rescue Timeout::Error => e $stderr.puts "Timed out while reading from Wikidata: #{e.message}" @@ -138,8 +140,8 @@ def to_rdf unless wikidata_id.nil? graph << [self.uri, RDF::FOAF.page, wikidata_url] graph << [wikidata_url, RDF.type, RDF::FOAF.Document] - graph << [wikidata_url, RDF::RDFS.label, wikidata_label] - graph << [wikidata_url, RDF::RDFS.comment, wikidata_description] + graph << [wikidata_url, RDF::RDFS.label, wikidata_label] unless wikidata_label.nil? + graph << [wikidata_url, RDF::RDFS.comment, wikidata_description] unless wikidata_description.nil? end # External links