NAME
    Data::OFN::Address - Data object for OFN address.
SYNOPSIS
     use Data::OFN::Address;
     my $obj = Data::OFN::Address->new(%params);
     my $address_place = $obj->address_place;
     my $address_place_code = $obj->address_place_code;
     my $cadastral_area = $obj->cadastral_area;
     my $cadastral_area_name_ar = $obj->cadastral_area_name;
     my $conscription_number = $obj->conscription_number;
     my $conscription_number_flag = $obj->conscription_number_flag;
     my $district = $obj->district;
     my $district_name_ar = $obj->district_name;
     my $element_ruian = $obj->element_ruian;
     my $house_number = $obj->house_number;
     my $house_number_type = $obj->house_number_type;
     my $id = $obj->id;
     my $momc = $obj->momc;
     my $momc_name_ar = $obj->momc_name;
     my $mop = $obj->mop;
     my $mop_name_ar = $obj->mop_name;
     my $municipality = $obj->municipality;
     my $municipality_name_ar = $obj->municipality_name;
     my $municipality_part = $obj->municipality_part;
     my $municipality_part_name_ar = $obj->municipality_part_name;
     my $psc = $obj->psc;
     my $street = $obj->street;
     my $street_name_ar = $obj->street_name;
     my $text_ar = $obj->text;
     my $vusc = $obj->vusc;
     my $vusc_name_ar = $obj->vusc_name;
DESCRIPTION
    Immutable data object for OFN (Otevřené formální normy) representation
    of address in the Czech Republic.
    This object is actual with 2020-07-01
     version of OFN address standard.
METHODS
  "new"
     my $obj = Data::OFN::Address->new(%params);
    Constructor.
    *       "address_place"
            Address place IRI.
            IRI has format
            https://linked.cuzk.cz/resource/ruian/adresni-misto/ and unique
            number on the end.
            It's optional.
    *       "address_place_code"
            Address place numeric code.
            Same number as on the "address_place" end.
            It's optional.
    *       "cadastral_area"
            Address cadastral area IRI.
            IRI has format
            https://linked.cuzk.cz/resource/ruian/katastralni-uzemi/ and
            unique number on the end.
            It's optional.
            Default value is undef.
    *       "cadastral_area_name"
            Address cadastral area name(s).
            This name is in form of reference to array of Data::Text::Simple
            instances with language definition.
            It's optional.
            Default value is [].
    *       "conscription_number"
            Address consciption number.
            It's optional.
            Default value is undef.
    *       "conscription_number_flag"
            Address conscription number type.
            It's possible to set in case if "conscription_number" is set.
            It's something like "a" if this is defined in real number.
            It's optional.
            Default value is undef.
    *       "district"
            Address district IRI.
            IRI has format https://linked.cuzk.cz/resource/ruian/okres/ and
            unique number on the end.
            It's optional.
            Default value is undef.
    *       "district_name"
            Address district name(s).
            This name is in form of reference to array of Data::Text::Simple
            instances with language definition.
            It's optional.
            Default value is [].
    *       "element_ruian"
            Address element IRI from the RÚIAN register.
            IRI has format https://linked.cuzk.cz/resource/ruian/parcela/
            and unique number on the end.
            It's optional.
            Default value is undef.
    *       "house_number"
            Address house number.
            It's optional.
            Default value is undef.
    *       "house_number_type"
            Address house number type.
            Possible term values are:
            *   č.p.
                The building object descriptive number.
            *   č.ev.
                The building registration number.
            It's optional.
            Default value is undef.
    *       "id"
            Address id.
            This is not official identifier of address in the Czech
            Republic. It's used for internal identification like database.
            It's optional.
            Default value is undef.
    *       "momc"
            Address city district IRI.
            IRI has format https://linked.cuzk.cz/resource/ruian/momc/ and
            unique number on the end.
            It's optional.
            Default value is undef.
    *       "momc_name"
            Address city district name(s).
            This name is in form of reference to array of Data::Text::Simple
            instances with language definition.
            It's optional.
            Default value is [].
    *       "mop"
            Municipal district in the capital city of Prague IRI.
            IRI has format https://linked.cuzk.cz/resource/ruian/mop/ and
            unique number on the end.
            It's optional.
            Default value is undef.
    *       "mop_name"
            Municipal district in the capital city of Prague name(s).
            This name is in form of reference to array of Data::Text::Simple
            instances with language definition.
            It's optional.
            Default value is [].
    *       "municipality"
            Municipality or military district IRI.
            IRI has format https://linked.cuzk.cz/resource/ruian/obec/ and
            unique number on the end.
            It's optional.
            Default value is undef.
    *       "municipality_name"
            Municipality or military district name(s).
            This name is in form of reference to array of Data::Text::Simple
            instances with language definition.
            It's optional.
            Default value is [].
    *       "municipality_part"
            Part of the village IRI.
            IRI has format https://linked.cuzk.cz/resource/ruian/cast-obce/
            and unique number on the end.
            It's optional.
            Default value is undef.
    *       "municipality_part_name"
            Part of the village name(s).
            This name is in form of reference to array of Data::Text::Simple
            instances with language definition.
            It's optional.
            Default value is [].
    *       "psc"
            Zip code.
            The form is 5 character length number.
            It's optional.
            Default value is undef.
    *       "street"
            Street IRI.
            IRI has format https://linked.cuzk.cz/resource/ruian/ulice/ and
            unique number on the end.
            It's optional.
            Default value is undef.
    *       "street_name"
            Street name.
            This name is in form of reference to array of Data::Text::Simple
            instances with language definition.
            It's optional.
            Default value is [].
    *       "text"
            Address text.
            This name is in form of reference to array of Data::Text::Simple
            instances with language definition.
            It's optional.
            Default value is [].
    *       "vusc"
            Higher territorial self-governing unit IRI.
            IRI has format https://linked.cuzk.cz/resource/ruian/vusc/ and
            unique number on the end.
            It's optional.
            Default value is undef.
    *       "vusc_name"
            Higher territorial self-governing unit name(s).
            This name is in form of reference to array of Data::Text::Simple
            instances with language definition.
            It's optional.
            Default value is [].
    Returns instance of object.
  "address_place"
     my $address_place = $obj->address_place;
    Get address place IRI.
    Returns string with IRI.
  "address_place_code"
     my $address_place_code = $obj->address_place_code;
    Get address place numeric code.
    Returns number.
  "cadastral_area"
     my $cadastral_area = $obj->cadastral_area;
    Get address cadastral area IRI.
    Returns string with IRI.
  "cadastral_area_name"
     my $cadastral_area_name_ar = $obj->cadastral_area_name;
    Get address cadastral area name(s).
    Returns reference to array with Data::Text::Simple instances.
  "conscription_number"
     my $conscription_number = $obj->conscription_number;
    Get address consciption number.
    Returns number.
  "conscription_number_flag"
     my $conscription_number_flag = $obj->conscription_number_flag;
    Get address conscription number type.
    Returns string.
  "district"
     my $district = $obj->district;
    Get address district IRI.
    Returns string with IRI.
  "district_name"
     my $district_name_ar = $obj->district_name;
    Get address district name(s).
    Returns reference to array with Data::Text::Simple instances.
  "element_ruian"
     my $element_ruian = $obj->element_ruian;
    Get address element IRI from the RÚIAN register.
    Returns string with IRI.
  "house_number"
     my $house_number = $obj->house_number;
    Get address house number.
    Returns string.
  "house_number_type"
     my $house_number_type = $obj->house_number_type;
    Get address house number type.
    Returns string.
  "id"
     my $id = $obj->id;
    Get OFN address id.
    Returns number.
  "momc"
     my $momc = $obj->momc;
    Get address city district IRI.
    Returns string with IRI.
  "momc_name"
     my $momc_name_ar = $obj->momc_name;
    Get address city district name(s).
    Returns reference to array with Data::Text::Simple instances.
  "mop"
     my $mop = $obj->mop;
    Get municipal district in the capital city of Prague IRI.
    Returns string with IRI.
  "mop_name"
     my $mop_name_ar = $obj->mop_name;
    Get municipal district in the capital city of Prague name(s).
    Returns reference to array with Data::Text::Simple instances.
  "municipality"
     my $municipality = $obj->municipality;
    Get municipality or military district IRI.
    Returns string with IRI.
  "municipality_name"
     my $municipality_name_ar = $obj->municipality_name;
    Get municipality or military district name(s).
    Returns reference to array with Data::Text::Simple instances.
  "municipality_part"
     my $municipality_part = $obj->municipality_part;
    Get part of the village IRI.
    Returns string with IRI.
  "municipality_part_name"
     my $municipality_part_name_ar = $obj->municipality_part_name;
    Get part of the village name(s).
    Returns reference to array with Data::Text::Simple instances.
  "psc"
     my $psc = $obj->psc;
    Get zip code.
    Returns number.
  "street"
     my $street = $obj->street;
    Get street IRI.
    Returns string with IRI.
  "street_name"
     my $street_name_ar = $obj->street_name;
    Get street name.
    Returns reference to array with Data::Text::Simple instances.
  "text"
     my $text_ar = $obj->text;
    Get address text.
    Returns reference to array with Data::Text::Simple instances.
  "vusc"
     my $vusc = $obj->vusc;
    Get higher territorial self-governing unit IRI.
    Returns string with IRI.
  "vusc_name"
     my $vusc_name_ar = $obj->vusc_name;
    Get higher territorial self-governing unit name(s).
    Returns reference to array with Data::Text::Simple instances.
ERRORS
     new():
             From Mo::utils::check_array_object():
                     Cadastral area name isn't 'Data::Text::Simple' object.
                             Value: %s
                             Reference: %s
                     District name isn't 'Data::Text::Simple' object.
                             Value: %s
                             Reference: %s
                     MOMC name isn't 'Data::Text::Simple' object.
                             Value: %s
                             Reference: %s
                     MOP name isn't 'Data::Text::Simple' object.
                             Value: %s
                             Reference: %s
                     Municipality name isn't 'Data::Text::Simple' object.
                             Value: %s
                             Reference: %s
                     Municipality part name isn't 'Data::Text::Simple' object.
                             Value: %s
                             Reference: %s
                     Street name isn't 'Data::Text::Simple' object.
                             Value: %s
                             Reference: %s
                     Text isn't 'Data::Text::Simple' object.
                             Value: %s
                             Reference: %s
                     VUSC name isn't 'Data::Text::Simple' object.
                             Value: %s
                             Reference: %s
                     Parameter 'cadastral_area_name' must be a array.
                             Value: %s
                             Reference: %s
                     Parameter 'district_name' must be a array.
                             Value: %s
                             Reference: %s
                     Parameter 'momc_name' must be a array.
                             Value: %s
                             Reference: %s
                     Parameter 'mop_name' must be a array.
                             Value: %s
                             Reference: %s
                     Parameter 'municipality_name' must be a array.
                             Value: %s
                             Reference: %s
                     Parameter 'municipality_part_name' must be a array.
                             Value: %s
                             Reference: %s
                     Parameter 'street_name' must be a array.
                             Value: %s
                             Reference: %s
                     Parameter 'text' must be a array.
                             Value: %s
                             Reference: %s
                     Parameter 'vusc_name' must be a array.
                             Value: %s
                             Reference: %s
             From Mo::utils::check_length_fix():
                     Parameter 'psc' has length different than '%s'.
                             Value: %s
             From Mo::utils::check_regexp():
                     Parameter 'address_place' does not match the specified regular expression.
                             String: %s
                             Regexp: (?^:^https://linked\.cuzk\.cz/resource/ruian/adresni-misto/\d+$)
                     Parameter 'cadastral_area' does not match the specified regular expression.
                             String: %s
                             Regexp: (?^:^https://linked\.cuzk\.cz/resource/ruian/katastralni-uzemi/\d+$)
                     Parameter 'district' does not match the specified regular expression.
                             String: %s
                             Regexp: (?^:^https://linked\.cuzk\.cz/resource/ruian/okres/\d+)
                     Parameter 'element_ruian' does not match the specified regular expression.
                             String: %s
                             Regexp: (?^:^https://linked\.cuzk\.cz/resource/ruian/parcela/\d+$)
                     Parameter 'momc' does not match the specified regular expression.
                             String: %s
                             Regexp: (?^:^https://linked\.cuzk\.cz/resource/ruian/momc/\d+$)
                     Parameter 'mop' does not match the specified regular expression.
                             String: %s
                             Regexp: (?^:^https://linked\.cuzk\.cz/resource/ruian/mop/\d+$)
                     Parameter 'municipality' does not match the specified regular expression.
                             String: %s
                             Regexp: (?^:^https://linked\.cuzk\.cz/resource/ruian/obec/\d+$)
                     Parameter 'municipality_part' does not match the specified regular expression.
                             String: %s
                             Regexp: (?^:^https://linked\.cuzk\.cz/resource/ruian/cast-obce/\d+$)
                     Parameter 'psc' does not match the specified regular expression.
                             String: %s
                             Regexp: ^\d+$
                     Parameter 'street' does not match the specified regular expression.
                             String: %s
                             Regexp: (?^:^https://linked\.cuzk\.cz/resource/ruian/ulice/\d+$)
                     Parameter 'vusc' does not match the specified regular expression.
                             String: %s
                             Regexp: (?^:^https://linked\.cuzk\.cz/resource/ruian/vusc/\d+$)
             From Mo::utils::check_strings():
                     Parameter 'house_number_type' must be one of defined strings.
                             String: %s
                             Possible strings: 'č.p.', 'č.ev.'
             From Mo::utils::Number::check_positive_natural():
                     Parameter 'address_place_code' must be a positive natural number.
                             Value: %s
                     Parameter 'conscription_number' must be a positive natural number.
                             Value: %s
                     Parameter 'house_number' must be a positive natural number.
                             Value: %s
                     Parameter 'id' must be a positive natural number.
                             Value: %s
EXAMPLE
     use strict;
     use warnings;
     use Data::OFN::Address;
     use Data::Text::Simple;
     use Unicode::UTF8 qw(decode_utf8 encode_utf8);
     my $obj = Data::OFN::Address->new(
             'address_place' => 'https://linked.cuzk.cz/resource/ruian/adresni-misto/83163832',
             'address_place_code' => 83163832,
             'cadastral_area' => 'https://linked.cuzk.cz/resource/ruian/katastralni-uzemi/635448',
             'cadastral_area_name' => [
                     Data::Text::Simple->new(
                             'lang' => 'cs',
                             'text' => 'Fulnek',
                     ),
             ],
             'conscription_number' => 123,
             'conscription_number_flag' => 'a',
             'district' => 'https://linked.cuzk.cz/resource/ruian/okres/3804',
             'district_name' => [
                     Data::Text::Simple->new(
                             'lang' => 'cs',
                             'text' => decode_utf8('Nový Jičín'),
                     ),
             ],
             'element_ruian' => 'https://linked.cuzk.cz/resource/ruian/parcela/91188411010',
             'house_number' => 386,
             'house_number_type' => decode_utf8('č.p.'),
             'id' => 7,
             'municipality' => 'https://linked.cuzk.cz/resource/ruian/obec/599352',
             'municipality_name' => [
                     Data::Text::Simple->new(
                             'lang' => 'cs',
                             'text' => 'Fulnek',
                     ),
             ],
             'municipality_part' => 'https://linked.cuzk.cz/resource/ruian/cast-obce/413551',
             'municipality_part_name' => [
                     Data::Text::Simple->new(
                             'lang' => 'cs',
                             'text' => 'Fulnek',
                     ),
             ],
             'psc' => 74245,
             'street' => 'https://linked.cuzk.cz/resource/ruian/ulice/309184',
             'street_name' => [
                     Data::Text::Simple->new(
                             'lang' => 'cs',
                             'text' => decode_utf8('Bílovecká'),
                     ),
             ],
             'text' => [
                     Data::Text::Simple->new(
                             'lang' => 'cs',
                             'text' => decode_utf8('Bílovecká 386, 74245 Fulnek'),
                     ),
             ],
             'vusc' => 'https://linked.cuzk.cz/resource/ruian/vusc/132',
             'vusc_name' => [
                     Data::Text::Simple->new(
                             'lang' => 'cs',
                             'text' => decode_utf8('Moravskoslezský kraj'),
                     ),
             ],
     );
     sub _text {
             my $obj = shift;
             return encode_utf8($obj->text.' ('.$obj->lang.')');
     }
     # Print out.
     print 'Address place: '.$obj->address_place."\n";
     print 'Address place code: '.$obj->address_place_code."\n";
     print 'Cadastral area: '.$obj->cadastral_area."\n";
     print 'Cadastral area name: '._text($obj->cadastral_area_name->[0])."\n";
     print 'Conscription number: '.$obj->conscription_number."\n";
     print 'Conscription number flag: '.$obj->conscription_number_flag."\n";
     print 'District: '.$obj->district."\n";
     print 'District name: '._text($obj->district_name->[0])."\n";
     print 'Element RUIAN: '.$obj->element_ruian."\n";
     print 'House number: '.$obj->house_number."\n";
     print 'House number type: '.encode_utf8($obj->house_number_type)."\n";
     print 'Id: '.$obj->id."\n";
     print 'Municipality: '.$obj->municipality."\n";
     print 'Municipality name: '._text($obj->municipality_name->[0])."\n";
     print 'Municipality part: '.$obj->municipality_part."\n";
     print 'Municipality part name: '._text($obj->municipality_part_name->[0])."\n";
     print 'PSC: '.$obj->psc."\n";
     print 'Street: '.$obj->street."\n";
     print 'Street name: '._text($obj->street_name->[0])."\n";
     print 'Text: '._text($obj->text->[0])."\n";
     print 'VUSC: '.$obj->vusc."\n";
     print 'VUSC name: '._text($obj->vusc_name->[0])."\n";
     # Output:
     # Address place: https://linked.cuzk.cz/resource/ruian/adresni-misto/83163832
     # Address place code: 83163832
     # Cadastral area: https://linked.cuzk.cz/resource/ruian/katastralni-uzemi/635448
     # Cadastral area name: Fulnek (cs)
     # Conscription number: 123
     # Conscription number flag: a
     # District: https://linked.cuzk.cz/resource/ruian/okres/3804
     # District name: Nový Jičín (cs)
     # Element RUIAN: https://linked.cuzk.cz/resource/ruian/parcela/91188411010
     # House number: 386
     # House number type: č.p.
     # Id: 7
     # Municipality: https://linked.cuzk.cz/resource/ruian/obec/599352
     # Municipality name: Fulnek (cs)
     # Municipality part: https://linked.cuzk.cz/resource/ruian/cast-obce/413551
     # Municipality part name: Fulnek (cs)
     # PSC: 74245
     # Street: https://linked.cuzk.cz/resource/ruian/ulice/309184
     # Street name: Bílovecká (cs)
     # Text: Bílovecká 386, 74245 Fulnek (cs)
     # VUSC: https://linked.cuzk.cz/resource/ruian/vusc/132
     # VUSC name: Moravskoslezský kraj (cs)
DEPENDENCIES
    Error::Pure Mo, Mo::utils, Readonly, Unicode::UTF8.
REPOSITORY
    
AUTHOR
    Michal Josef Špaček 
    
LICENSE AND COPYRIGHT
    © 2023-2025 Michal Josef Špaček
    BSD 2-Clause License
VERSION
    0.01