1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
use Test::More;
use strict;
use warnings;
use RDF::aREF qw(aref_query aref_query_map);
use RDF::aREF::Query;
use Scalar::Util qw(reftype);
BEGIN {
eval { require JSON; 1; }
or plan skip_all => "test requires JSON";
}
my $rdf = JSON::from_json(do { local (@ARGV, $/) = "t/doi-example.json"; <> });
my $uri = "http://dx.doi.org/10.2474/trol.7.147";
my @res = aref_query($rdf, $uri, '.');
is reftype $res[0], 'HASH';
# FIXME:
# is_deeply [ aref_query($rdf, $uri, '@') ], [ ], 'empty query (@)';
is_deeply [ aref_query($rdf, $uri, '') ], [ $uri ], 'empty query';
is_deeply [ aref_query($rdf, $uri, 'dct_title') ],
['Frictional Coefficient under Banana Skin'], 'dct_title';
is_deeply [ aref_query($rdf, $uri, RDF::aREF::Query->new(query => 'dct_title')) ],
['Frictional Coefficient under Banana Skin'], 'dct_title (RDF::aREF::Query)';
is_deeply [ aref_query($rdf, $uri, 'dct_title@') ],
['Frictional Coefficient under Banana Skin'], 'dct_title@';
is_deeply [ aref_query($rdf, $uri, 'dct_title^xsd_string') ],
['Frictional Coefficient under Banana Skin'], 'dct_title^xsd_string';
is_deeply [ aref_query($rdf, $uri, 'dct_title@en') ],
[ ], 'dct_title@';
is_deeply [ sort(aref_query($rdf->{$uri}, 'dct_publisher')) ], [
'Japanese Society of Tribologists',
'http://d-nb.info/gnd/5027072-2',
], 'dct_publisher';
is_deeply [ aref_query($rdf->{$uri}, 'dct_publisher.') ], [
'http://d-nb.info/gnd/5027072-2',
], 'dct_publisher.';
is_deeply [ aref_query($rdf->{$uri}, 'dct_date') ], ["2012"], 'dct_date';
is_deeply [ aref_query($rdf->{$uri}, 'dct_date^xsd_gYear') ], ["2012"], 'dct_date^xsd_gYear';
is_deeply [ aref_query($rdf->{$uri}, 'dct_date^xsd_foo') ], [], 'dct_date^xsd_foo';
foreach my $query (qw(dct_creator dct_creator.)) {
is_deeply [ sort (aref_query($rdf, $uri, $query)) ], [
"http://id.crossref.org/contributor/daichi-uchijima-y2ol1uygjx72",
"http://id.crossref.org/contributor/kensei-tanaka-y2ol1uygjx72",
"http://id.crossref.org/contributor/kiyoshi-mabuchi-y2ol1uygjx72",
"http://id.crossref.org/contributor/rina-sakai-y2ol1uygjx72",
], $query;
}
is join(' ',sort(aref_query($rdf,$uri,'dct_creator.foaf_familyName'))),
"Mabuchi Sakai Tanaka Uchijima", 'dct_creator.foaf_familyName';
my %names = (
'dct_creator.foaf_name' => 4,
'dct_creator.foaf_name@' => 4,
'dct_creator.foaf_name@en' => 4,
'dct_creator.foaf_name@ja' => 0,
);
while ( my ($query, $count) = each %names ) {
my @names = aref_query( $rdf, $uri, $query );
is scalar @names, $count, $query;
}
foreach my $query ( "dct_title@#", "dct_date^_" ) {
eval { RDF::Query->new($query) };
ok $@, 'error in aREF query';
}
{
my $rdf = {
'http://example.org/book' => {
dct_creator => [
'http://example.org/alice',
"Bob"
]
},
'http://example.org/alice' => {
foaf_name => "Alice"
},
};
my $uri = 'http://example.org/book';
is_deeply [ sort(aref_query($rdf, $uri, 'dct_creator')) ],
[qw(Bob http://example.org/alice)], 'literal and URI';
my $record = aref_query_map( $rdf, $uri, {
'dct_creator@' => 'creator',
'dct_creator.foaf_name' => 'creator',
});
is_deeply [ sort @{$record->{creator}} ], [qw(Alice Bob)], 'aref_query_map';
}
done_testing;
|