Wikibase::Datatype::Struct::Utils - Wikibase structure serialization utilities.
use Wikibase::Datatype::Struct::Utils qw(obj_array_ref2struct struct2snaks_array_ref); my $snaks_hr = obj_array_ref2struct($snaks_ar, $key, $base_uri, $snak_obj, $struct_snak_obj); my $snaks_ar = struct2snaks_array_ref($struct_hr, $key, $struct_snak_obj);
obj_array_ref2struct
my $snaks_hr = obj_array_ref2struct($snaks_ar, $key, $base_uri, $snak_obj);
Helper subroutine for converting list of Snak objects to snaks structure. This subroutine is used in Statement and Reference module. $base_uri is base URI of Wikibase system (e.g. http://test.wikidata.org/entity/). $snak_obj is object for snak (default value is 'Wikibase::Datatype::Snak'). $struct_snak_obj is object for struct snak (default value is 'Wikibase::Datatype::Struct::Snak').
$base_uri
$snak_obj
$struct_snak_obj
Returns structure with multiple snaks.
struct2snaks_array_ref
my $snaks_ar = struct2snaks_array_ref($struct_hr, $key, $struct_snak_obj);
Helper subroutine for converting snaks structure to list of Snak objects. This subroutine is used in Statement and Reference module. $struct_snak_obj is object for struct snak (default value is 'Wikibase::Datatype::Struct::Snak').
Returns reference to array with snaks objects.
obj_array_ref2struct(): Base URI is required. Object isn't 'Wikibase::Datatype::Snak'. struct2snaks_array_ref(): From Wikibase::Datatype::Snak::new(): From Wikibase::Datatype::Utils::check_required(): Parameter 'datatype' is required. Parameter 'datavalue' is required. Parameter 'property' is required. From Wikibase::Datatype::Utils::check_isa(): Parameter 'datavalue' must be a 'Wikibase::Datatype::Value::%s' object. Parameter 'datatype' = '%s' isn't supported. Parameter 'property' must begin with 'P' and number after it. Parameter 'snaktype' = '%s' isn't supported. From Wikibase::Datatype::Struct::Snak::struct2obj(): From Wikibase::Datatype::Struct::Value::struct2obj(): Entity type '%s' is unsupported. Type doesn't exist. Type '%s' is unsupported.
use strict; use warnings; use Data::Printer; use Wikibase::Datatype::Snak; use Wikibase::Datatype::Struct::Utils qw(obj_array_ref2struct); use Wikibase::Datatype::Value::Item; use Wikibase::Datatype::Value::String; my $snak1 = Wikibase::Datatype::Snak->new( 'datatype' => 'wikibase-item', 'datavalue' => Wikibase::Datatype::Value::Item->new( 'value' => 'Q5', ), 'property' => 'P31', ); my $snak2 = Wikibase::Datatype::Snak->new( 'datatype' => 'math', 'datavalue' => Wikibase::Datatype::Value::String->new( 'value' => 'E = m c^2', ), 'property' => 'P2534', ); # Convert list of snak objects to structure. my $snaks_ar = obj_array_ref2struct([$snak1, $snak2], 'snaks', 'http://test.wikidata.org/entity/'); # Dump to output. p $snaks_ar; # Output: # \ { # snaks { # P31 [ # [0] { # datatype "wikibase-item", # datavalue { # type "wikibase-entityid", # value { # entity-type "item", # id "Q5", # numeric-id 5 # } # }, # property "P31", # snaktype "value" # } # ], # P2534 [ # [0] { # datatype "math", # datavalue { # type "string", # value "E = m c^2" # }, # property "P2534", # snaktype "value" # } # ] # }, # snaks-order [ # [0] "P31", # [1] "P2534" # ] # }
use strict; use warnings; use Wikibase::Datatype::Struct::Utils qw(struct2snaks_array_ref); my $struct_hr = { 'snaks' => { 'P31' => [{ 'datatype' => 'wikibase-item', 'datavalue' => { 'type' => 'wikibase-entityid', 'value' => { 'entity-type' => 'item', 'id' => 'Q5', 'numeric-id' => 5, }, }, 'property' => 'P31', 'snaktype' => 'value', }], 'P2534' => [{ 'datatype' => 'math', 'datavalue' => { 'type' => 'string', 'value' => 'E = m c^2', }, 'property' => 'P2534', 'snaktype' => 'value', }], }, 'snaks-order' => [ 'P31', 'P2534', ], }; # Convert snaks structure to list of Snak objects. my $snaks_ar = struct2snaks_array_ref($struct_hr, 'snaks'); # Print out. foreach my $snak (@{$snaks_ar}) { print 'Property: '.$snak->property."\n"; print 'Type: '.$snak->datatype."\n"; print 'Value: '.$snak->datavalue->value."\n"; print "\n"; } # Output: # Property: P31 # Type: wikibase-item # Value: Q5 # # Property: P2534 # Type: math # Value: E = m c^2 #
Error::Pure, Exporter, List::MoreUtils.
Wikibase structure serialization.
https://github.com/michal-josef-spacek/Wikibase-Datatype-Struct
Michal Josef Špaček mailto:skim@cpan.org
http://skim.cz
© 2020-2022 Michal Josef Špaček
BSD 2-Clause License
0.09
To install Wikibase::Datatype::Struct, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Wikibase::Datatype::Struct
CPAN shell
perl -MCPAN -e shell install Wikibase::Datatype::Struct
For more information on module installation, please visit the detailed CPAN module installation guide.