The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use utf8;
use Test::More;
use DAIA;

my %NS = (
  rdfs    => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
  daia    => 'http://purl.org/ontology/daia/',
  dcterms => 'http://purl.org/dc/terms/',
  frbr    => 'http://purl.org/vocab/frbr/core#',
);
sub iri {
    my $uri = shift;
    if ($uri =~ /^([a-z0-9]+):(.+)$/) {
        $uri = ($NS{$1} . $2) if $NS{$1};
    }
    return $uri;
}
sub irihash { return { value => iri(shift), type => 'uri' } }
sub literal { return { value => shift, type => 'literal' } }

sub pdump { eval {
    my $s = explain(shift);
    $s =~ s/    / /g;
    print $s."\n";
} }

#my $a = unavailable(expected=>'2010-02-13');
#pdump($a->rdfhash);

# Item, with URI
my $item = item( id => 'my:id' );
my $item_rdf = { 'my:id' => {  iri('rdfs:type') => [ irihash('frbr:Item') ] } }; 
is_deeply( $item->rdfhash, $item_rdf, 'empty item as rdf' );

# Response without institution
my $daia = DAIA::Response->new();
$daia->document(id =>'x:y');
ok( $daia->rdfhash->{'x:y'}, "response with document" );

done_testing;

__END__

# Storage, without URI
my $storage = storage('foo');
my $rdf = $storage->rdfhash;
my $blank;
is( scalar keys %$rdf, 1 );
($blank,$rdf) = each(%$rdf);
like( $blank, qr/^_:storage\d+$/ );

my $storage_rdf = { 
   iri('rdfs:type') => [ irihash('daia:Storage') ],
   iri('dcterms:title') => [ literal("foo") ], 
};
is_deeply( $rdf, $storage_rdf, 'storage as rdf' );

# institution and department should work like storage
# TODO: limitation should be different with extended limitations

$item->add( $storage );

my ($k,$v) = each(%$storage_rdf);
$item_rdf->{$blank} = $storage_rdf;
$item_rdf->{"my:id"}->{"unknown:storage"} = [ irihash($blank) ];

# is_deeply( $item->rdfhash, $item_rdf, 'deep item as rdf' );

my $response = response();
my $doc = document( id => 'my:doc1' );
$item = item( id => 'my:id' );
$item->addMessage( en => 'Hi!' );
$item->department( 'dep' );
$doc->addItem( $item );
$response->addDocument( $doc );
$response->institution( 'foo' );
pdump( $response->rdfhash );

__END__
use Data::Dumper;
my $d = DAIA::parse( "t/example.json" );
isa_ok( $d, 'DAIA::Response' );
#is( $d->institution->content, "贛語" );