NAME Wikidata::Reconcilation - Abstract class for Wikidata reconcilations. SYNOPSIS use Wikidata::Reconcilation; my $obj = Wikidata::Reconcilation->new; my @qids = $obj->reconcile($reconcilation_rules_hr); DESCRIPTION Abstract class for Wikidata reconcilation. Method, which need to implement: "_reconcile()". METHODS "new" my $obj = Wikidata::Reconcilation->new; Constructor. Returns instance of object. "reconcile" my @qids = $obj->reconcile($reconcilation_rules_hr); Reconcile information defined in input structure and returns list of QIDs. Returns list of strings. ERRORS new(): From Class::Utils::set_params(): Unknown parameter '%s'. Parameter 'lwp_user_agent' must be a 'LWP::UserAgent' instance. reconcile(): This is abstract class. You need to implement _reconcile() method. EXAMPLE use strict; use warnings; package Foo; use base qw(Wikidata::Reconcilation); use WQS::SPARQL; use WQS::SPARQL::Query::Select; sub _reconcile { my ($self, $reconcilation_rules_hr) = @_; # Reconcilation process. my @sparql; if (exists $reconcilation_rules_hr->{'identifiers'}->{'given_name_qids'} && exists $reconcilation_rules_hr->{'identifiers'}->{'surname_qid'}) { my $sparql = <<'END'; SELECT ?item WHERE { ?item wdt:P31 wd:Q5. END foreach my $given_name_qid (@{$reconcilation_rules_hr->{'identifiers'}->{'given_name_qids'}}) { $sparql .= ' ?item wdt:P735 wd:'.$given_name_qid.".\n"; } $sparql .= ' ?item wdt:P734 wd:'. $reconcilation_rules_hr->{'identifiers'}->{'surname_qid'}.".\n"; $sparql .= "}\n"; push @sparql, $sparql; } elsif (exists $reconcilation_rules_hr->{'identifiers'}->{'surname_qid'}) { push @sparql, WQS::SPARQL::Query::Select->new->select_value({ 'P31' => 'Q5', 'P734' => $reconcilation_rules_hr->{'identifiers'}->{'surname_qid'}, }); } return @sparql; } package main; # Object. my $obj = Foo->new('verbose' => 1); # Save cached value. my @qids = $obj->reconcile({ 'identifiers' => { 'given_name_qids' => ['Q18563993', 'Q15730712'], # 'Michal', 'Josef' 'surname_qid' => 'Q16883641', # 'Špaček' }, }); # Output is defined by 'verbose' => 1 # Output like: # SPARQL queries: # SELECT ?item WHERE { # ?item wdt:P31 wd:Q5. # ?item wdt:P735 wd:Q18563993. # ?item wdt:P735 wd:Q15730712. # ?item wdt:P734 wd:Q16883641. # } # # { # head { # vars [ # [0] "item" # ] # }, # results { # bindings [ # [0] { # item { # type "uri", # value "http://www.wikidata.org/entity/Q27954834" # } # } # ] # } # } # Results: # - Q27954834: 1 DEPENDENCIES Class::Utils, Error::Pure, LWP::UserAgent, Unicode::UTF8, WQS::SPARQL, WQS::SPARQL::Result. SEE ALSO Wikidata::Reconcilation::Periodical TODO REPOSITORY AUTHOR Michal Josef Špaček LICENSE AND COPYRIGHT © 2023 Michal Josef Špaček BSD 2-Clause License VERSION 0.02