[ot][spam][crazy] coding therapy: maybe a bugfix?

Undescribed Horrific Abuse, One Victim & Survivor of Many gmkarl at gmail.com
Wed Nov 23 05:39:46 PST 2022


SELECT ?code ?url WHERE {
  # lang-code       api-endpoint     instance-of language edition of wikinews
  [ wdt:P424 ?code; wdt:P6269 ?url ] wdt:P31     wd:Q20671729.
}

let's see if I can get that into RDF::Query, a perl module that should
be able to do this. I'm copying basic snippets from
https://metacpan.org/release/VOJ/App-wdq-0.4.4/source/script/wdq to
learn the use.

..
okay it turns out wikidata.org actually can _automatically generate
perl code_. i can copy from its generated code.

okay here's what I have:

use LWP::Simple;
use JSON;

use Data::Dumper;
#    P424=language code; P6269=api url
#    P31=instance of Q20671729=wikinews language
my $query = <<EOF;
SELECT ?code ?url WHERE {
    [ wdt:P424 ?code; wdt:P6269 ?url ] wdt:P31 wd:Q20671729.
}
EOF
$result_str = get
"https://query.wikidata.org/sparql?format=json&query=${query}";
$result_list = decode_json($result_str)->{results}{bindings};
%code_urls = map { $_->{code}{value} => $_->{url}{value} } @$result_list;
print Dumper \%code_urls;

It outputs like this:
$VAR1 = {
          'uk' => 'https://uk.wikinews.org/w/api.php',
          'pt' => 'https://pt.wikinews.org/w/api.php',
          'tr' => 'https://tr.wikinews.org/w/api.php',
          'es' => 'https://es.wikinews.org/w/api.php',
          'ru' => 'https://ru.wikinews.org/w/api.php',
          'no' => 'https://no.wikinews.org/w/api.php',
          'fr' => 'https://fr.wikinews.org/w/api.php',
          'ro' => 'https://ro.wikinews.org/w/api.php',

yay !
i guess i need some error handling in there ... although the script to
edit also had no error handling :S this seems really unfortunate as
errors happen reliably in my world. maybe i'll leave it out for now.


More information about the cypherpunks mailing list