NAME
    MARC::Convert::Wikidata - Conversion class between MARC file to
    Wikibase::Datatype item.

SYNOPSIS
     use MARC::Convert::Wikidata;

     my $obj = MARC::Convert::Wikidata->new(%params);
     my @values = $obj->look_for_external_id($external_id_name, $deprecation_flag);
     my $object = $obj->object;
     my $type = $obj->type;
     my $wikidata = $obj->wikidata;

DESCRIPTION
    Original intent of this class was conversion from MARC records in
    National Library of the Czech Republic to Wikidata. The conversion is
    not simple, this mean that many things are concrete for this concrete
    national library.

METHODS
  "new"
     my $obj = MARC::Convert::Wikidata->new(%params);

    Constructor.

    *       "callback_cover"

            Cover callback

            Default value is undef.

    *       "callback_lang"

            Language callback.

            Default value is undef.

    *       "callback_people"

            People callback.

            Default value is undef.

    *       "callback_publisher_place"

            Place of publication Wikidata lookup callback.

            Default value is undef.

    *       "callback_publisher_name"

            Publisher Wikidata lookup callback.

            Default value is undef.

    *       "callback_series"

            Book series Wikidata lookup callback.

            Default value is undef.

    *       "date_retrieved"

            Retrieved date.

            Default value is undef.

    *       "marc_record"

            MARC::Record object.

            It's required.

    *       "verbose"

            Verbose mode.

            Could be 1 or 0.

            Default value is 0.

    Returns instance of object.

  "look_for_external_id"
     my @values = $obj->look_for_external_id($external_id_name, $deprecation_flag);

    Get external id values defined by name and deprecation flag (default is
    0).

    Returns string.

  "object"
     my $object = $obj->object;

    Get data object created from MARC record.

    Returns MARC::Convert::Wikidata::Object instance.

  "type"
     my $type = $obj->type;

    Process MARC record and detect which record type is. Supported values
    are: monograph, audiobook and periodical.

    Returns string.

  "wikidata"
     my $wikidata = $obj->wikidata;

    Process conversion from MARC record to Wikibase::Datatype::Item which is
    possible to load to Wikidata.

    Returns Wikibase::Datatype instance.

ERRORS
     new():
             From Class::Utils::set_params():
                     Unknown parameter '%s'.
             From Mo::utils::check_isa():
                     Parameter 'marc_record' must be a 'MARC::Record' object.
             From Mo::utils::check_required():
                     Parameter 'marc_record' is required.

     type():
             Unsupported item with leader '%s'.

     wikidata():
             Item '%s' doesn't supported.
             Unsupported item with leader '%s'.

EXAMPLE
     use strict;
     use warnings;

     use File::Temp ();
     use MARC::Convert::Wikidata;
     use MARC::File::XML;
     use MARC::Record;
     use Unicode::UTF8 qw(decode_utf8 encode_utf8);
     use Wikibase::Datatype::Print::Item;

     my $marc_xml = decode_utf8(<<'END');
     <?xml version="1.0" encoding="UTF-8"?>
     <collection
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"
       xmlns="http://www.loc.gov/MARC21/slim">
     <record>
       <leader>01177nam a2200349 i 4500</leader>
       <controlfield tag="001">nkc20193102359</controlfield>
       <controlfield tag="003">CZ PrNK</controlfield>
       <controlfield tag="005">20190813103856.0</controlfield>
       <controlfield tag="007">ta</controlfield>
       <controlfield tag="008">190612s1917    xr af  b      000 f cze  </controlfield>
       <datafield tag="015" ind1=" " ind2=" ">
         <subfield code="a">cnb003102359</subfield>
       </datafield>
       <datafield tag="020" ind1=" " ind2=" ">
         <subfield code="q">(Vテ。zテ。no)</subfield>
       </datafield>
       <datafield tag="040" ind1=" " ind2=" ">
         <subfield code="a">ABA001</subfield>
         <subfield code="b">cze</subfield>
         <subfield code="e">rda</subfield>
       </datafield>
       <datafield tag="072" ind1=" " ind2="7">
         <subfield code="a">821.162.3-3</subfield>
         <subfield code="x">ト憩skテ。 prテウza</subfield>
         <subfield code="2">Konspekt</subfield>
         <subfield code="9">25</subfield>
       </datafield>
       <datafield tag="072" ind1=" " ind2="7">
         <subfield code="a">821-93</subfield>
         <subfield code="x">Literatura pro dト孚i a mlテ。deナセ (beletrie)</subfield>
         <subfield code="2">Konspekt</subfield>
         <subfield code="9">26</subfield>
       </datafield>
       <datafield tag="080" ind1=" " ind2=" ">
         <subfield code="a">821.162.3-34</subfield>
         <subfield code="2">MRF</subfield>
       </datafield>
       <datafield tag="080" ind1=" " ind2=" ">
         <subfield code="a">821-93</subfield>
         <subfield code="2">MRF</subfield>
       </datafield>
       <datafield tag="080" ind1=" " ind2=" ">
         <subfield code="a">(0:82-34)</subfield>
         <subfield code="2">MRF</subfield>
       </datafield>
       <datafield tag="100" ind1="1" ind2=" ">
         <subfield code="a">Karafiテ。t, Jan,</subfield>
         <subfield code="d">1846-1929</subfield>
         <subfield code="7">jk01052941</subfield>
         <subfield code="4">aut</subfield>
       </datafield>
       <datafield tag="245" ind1="1" ind2="0">
         <subfield code="a">Brouト皇i :</subfield>
         <subfield code="b">pro malテゥ i velikテゥ dト孚i /</subfield>
         <subfield code="c">Jan Karafiテ。t</subfield>
       </datafield>
       <datafield tag="250" ind1=" " ind2=" ">
         <subfield code="a">IV. vydテ。nテュ</subfield>
       </datafield>
       <datafield tag="264" ind1=" " ind2="1">
         <subfield code="a">V Praze :</subfield>
         <subfield code="b">Alois Hynek,</subfield>
         <subfield code="c">[1917?]</subfield>
       </datafield>
       <datafield tag="300" ind1=" " ind2=" ">
         <subfield code="a">85 stran, 5 neト催ュslovanテスch listナッ obrazovテスch pナ凖ュloh :</subfield>
         <subfield code="b">ilustrace (nト嫐terテゥ barevnテゥ) ;</subfield>
         <subfield code="c">24 cm</subfield>
       </datafield>
       <datafield tag="336" ind1=" " ind2=" ">
         <subfield code="a">text</subfield>
         <subfield code="b">txt</subfield>
         <subfield code="2">rdacontent</subfield>
       </datafield>
       <datafield tag="337" ind1=" " ind2=" ">
         <subfield code="a">bez mテゥdia</subfield>
         <subfield code="b">n</subfield>
         <subfield code="2">rdamedia</subfield>
       </datafield>
       <datafield tag="338" ind1=" " ind2=" ">
         <subfield code="a">svazek</subfield>
         <subfield code="b">nc</subfield>
         <subfield code="2">rdacarrier</subfield>
       </datafield>
       <datafield tag="655" ind1=" " ind2="7">
         <subfield code="a">ト稿skテゥ pohテ。dky</subfield>
         <subfield code="7">fd133970</subfield>
         <subfield code="2">czenas</subfield>
       </datafield>
       <datafield tag="655" ind1=" " ind2="7">
         <subfield code="a">publikace pro dト孚i</subfield>
         <subfield code="7">fd133156</subfield>
         <subfield code="2">czenas</subfield>
       </datafield>
       <datafield tag="655" ind1=" " ind2="9">
         <subfield code="a">Czech fairy tales</subfield>
         <subfield code="2">eczenas</subfield>
       </datafield>
       <datafield tag="655" ind1=" " ind2="9">
         <subfield code="a">children's literature</subfield>
         <subfield code="2">eczenas</subfield>
       </datafield>
       <datafield tag="910" ind1=" " ind2=" ">
         <subfield code="a">ABA001</subfield>
       </datafield>
       <datafield tag="998" ind1=" " ind2=" ">
         <subfield code="a">003102359</subfield>
       </datafield>
     </record>
     </collection>
     END
     my $marc_record = MARC::Record->new_from_xml($marc_xml, 'UTF-8');

     # Object.
     my $obj = MARC::Convert::Wikidata->new(
             'marc_record' => $marc_record,
     );

     # Convert MARC record to Wikibase object.
     my $item = $obj->wikidata;

     # Print out.
     print encode_utf8(scalar Wikibase::Datatype::Print::Item::print($item));

     # Output like:
     # TODO Add callbacks.
     # No callback method for translation of people in 'authors' method.
     # No callback method for translation of language.
     # Label: Brouト皇i: pro malテゥ i velikテゥ dト孚i (en)
     # Description: 1917 Czech book edition (en)
     # Statements:
     #   P31: Q3331189 (normal)
     #   P3184: cnb003102359 (normal)
     #   References:
     #     {
     #       P248: Q86914821
     #       P3184: cnb003102359
     #       P813: 26 May 2023 (Q1985727)
     #     }
     #   P393: 4 (normal)
     #   References:
     #     {
     #       P248: Q86914821
     #       P3184: cnb003102359
     #       P813: 26 May 2023 (Q1985727)
     #     }
     #   P1104: 85 (normal)
     #   References:
     #     {
     #       P248: Q86914821
     #       P3184: cnb003102359
     #       P813: 26 May 2023 (Q1985727)
     #     }
     #   P577: 1917 (Q1985727) (normal)
     #   References:
     #     {
     #       P248: Q86914821
     #       P3184: cnb003102359
     #       P813: 26 May 2023 (Q1985727)
     #     }
     #   P1680: pro malテゥ i velikテゥ dト孚i (cs) (normal)
     #   References:
     #     {
     #       P248: Q86914821
     #       P3184: cnb003102359
     #       P813: 26 May 2023 (Q1985727)
     #     }
     #   P1476: Brouト皇i (cs) (normal)
     #   References:
     #     {
     #       P248: Q86914821
     #       P3184: cnb003102359
     #       P813: 26 May 2023 (Q1985727)
     #     }

DEPENDENCIES
    Class::Utils, Error::Pure, MARC::Convert::Wikidata::Item::AudioBook,
    MARC::Convert::Wikidata::Item::BookEdition,
    MARC::Convert::Wikidata::Item::Periodical,
    MARC::Convert::Wikidata::Transform, MARC::Leader, Scalar::Util.

SEE ALSO
    MARC::Record
        Perl extension for handling MARC records

    Wikibase::Datatype::Item
        Wikibase item datatype.

REPOSITORY
    <https://github.com/michal-josef-spacek/MARC-Convert-Wikidata>

AUTHOR
    Michal Josef ナ�paト稿k <mailto:skim@cpan.org>

    <http://skim.cz>

LICENSE AND COPYRIGHT
    ツゥ 2021-2025 Michal Josef ナ�paト稿k

    BSD 2-Clause License

VERSION
    0.22