package MooseX::Semantic::Role::RdfObsolescence;
use Moose::Role;
use RDF::Trine qw(iri);
use RDF::Trine::Namespace qw(rdf);
use MooseX::Semantic::Types qw( TrineModel );
with (
'MooseX::Semantic::Role::RdfExport',
);
has obsolescence_model => (
is => 'rw',
isa => TrineModel,
default => sub { RDF::Trine::Model->temporary_model },
);
around 'export_to_model' => sub {
my $orig = shift;
my $self = shift;
my $model = shift;
my %opts = @_;
if ( ! $opts{do_not_recurse_further}) {
# warn "storing old statements in the obsolescence model";
$opts{do_not_recurse_further} = 1;
$self->export_to_model( $self->obsolescence_model, %opts);
# warn "done storing old statements in the obsolescence model";
return $self->$orig( $model, %opts );
}
return $self->$orig( $model, %opts );
};
around '_get_serializer' => sub {
my $orig = shift;
my $self = shift;
my %opts = @_;
if ($opts{format} && $opts{format} eq 'sparqlu') {
my $serializer_opts = $opts{serializer_opts} || {};
$serializer_opts->{delete_model} = $self->obsolescence_model;
$opts{serializer_opts} = $serializer_opts;
}
return $self->$orig( %opts );
};
1;
=head1 AUTHOR
Konstantin Baierer (<kba@cpan.org>)
=head1 SEE ALSO
=over 4
=item L<MooseX::Semantic|MooseX::Semantic>
=back
=cut
=head1 LICENCE AND COPYRIGHT
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself. See perldoc perlartistic.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.