RDF-TrineX-Serializer-MockTurtleSoup
view release on metacpan or search on metacpan
lib/RDF/TrineX/Serializer/MockTurtleSoup.pm view on Meta::CPAN
package RDF::TrineX::Serializer::MockTurtleSoup;
use 5.010001;
use strict;
use warnings;
use utf8;
BEGIN {
$RDF::TrineX::Serializer::MockTurtleSoup::AUTHORITY = 'cpan:TOBYINK';
$RDF::TrineX::Serializer::MockTurtleSoup::VERSION = '0.006';
}
use Carp;
use Sort::Key;
use RDF::Trine;
use RDF::Trine::Namespace qw( rdf rdfs );
use RDF::Prefixes;
use match::smart qw(match);
use parent 'RDF::Trine::Serializer';
sub new
{
my $class = shift;
my $self = bless { @_==1 ? %{$_[0]} : @_ } => $class;
$self->{prefixes} ||= delete $self->{namespaces};
$self->{labelling} //= $rdfs->label->uri;
$self->{priorities} ||= undef;
$self->{abbreviate} //= undef;
$self->{prefixes} ||= {};
$self->{colspace} //= 20;
$self->{indent} ||= "\t";
$self->{repeats} //= 0;
$self->{encoding} ||= "utf8";
$self->{apostrophe} //= 0;
croak("Bad indent")
unless $self->{indent} =~ /^\s+$/;
croak("Bad encoding: expected 'utf8' or 'ascii'")
unless $self->{encoding} =~ /^(ascii|utf8)$/;
return $self;
}
sub serialize_model_to_file
{
my $self = shift;
my ($fh, $model) = @_;
local $self->{model} = $model;
local $self->{p} = RDF::Prefixes->new($self->{prefixes});
local $self->{B} = 0;
local $self->{b} = {};
my $bunches = $self->_divvy_up;
$self->_sort_bunches($bunches);
$self->_serialize_bunches($bunches, $fh);
}
sub _is_labelling
{
my $self = shift;
my ($st) = @_;
return 1 if match($st->predicate->uri, $self->{labelling});
return;
}
sub _node
{
my $self = shift;
my ($c, $t, $n) = @_;
$n //= $t->$c;
if ($c eq 'predicate' and $n->equal($rdf->type))
{
return 'a';
}
if ($c eq 'object'
and defined $t
and $t->predicate->equal($rdf->type)
and $n->is_resource)
{
return $_ for grep defined, $self->{p}->get_qname($n->uri);
( run in 1.132 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )