Catmandu-RDF
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/Catmandu/Importer/RDF.pm view on Meta::CPAN
package Catmandu::Importer::RDF;
use open ':std', ':encoding(utf8)';
use namespace::clean;
use Catmandu::Sane;
use Moo;
use RDF::Trine::Parser;
use RDF::Trine::Model;
use RDF::Trine::Store::SPARQL;
use RDF::Trine::Store::LDF;
use RDF::Trine::Store;
use RDF::Query;
use RDF::LDF;
use RDF::aREF;
use RDF::aREF::Encoder;
use RDF::NS;
use IO::Pipe;
use JSON;
use LWP::UserAgent::CHICaching;
our $VERSION = '0.32';
with 'Catmandu::RDF';
with 'Catmandu::Importer';
has url => (
is => 'ro'
);
has base => (
is => 'ro',
lazy => 1,
builder => sub {
defined $_[0]->file ? "file://".$_[0]->file : "http://example.org/";
}
);
has encoder => (
is => 'ro',
lazy => 1,
builder => sub {
my $ns = $_[0]->ns;
RDF::aREF::Encoder->new(
ns => (($ns // 1) ? $ns : { }),
subject_map => !$_[0]->predicate_map,
);
}
);
has sparql => (
is => 'ro',
lazy => 1,
trigger => sub {
my ($sparql, $ns) = ($_[1], $_[0]->ns);
$sparql = do { local (@ARGV,$/) = $sparql; <> } if $sparql =~ /^\S+$/ && -r $sparql;
my %prefix;
# guess requires prefixes (don't override existing). Don't mind false positives
$prefix{$_} = 1 for ($sparql =~ /\s([a-z][a-z0-0_-]*):/mig);
delete $prefix{$_} for ($sparql =~ /PREFIX\s+([^:]+):/mg);
$_[0]->{sparql} = join "\n", (map { $ns->SPARQL($_) } keys %prefix), $sparql;
}
);
has sparql_result => (
is => 'ro',
default => sub { 'simple' }
);
has predicate_map => (
is => 'ro',
);
has triples => (
is => 'ro',
);
has cache => (
is => 'ro',
default => sub { 0 }
);
has cache_options => (
is => 'ro',
default => sub { +{
driver => 'Memory',
global => 1 ,
max_size => 1024*1024
} }
);
has speed => (
is => 'ro',
);
sub BUILD {
my ($self) = @_;
if ($self->cache) {
my $options = $self->cache_options // {};
my $cache = CHI->new( %$options );
my $ua = LWP::UserAgent::CHICaching->new(cache => $cache);
RDF::Trine->default_useragent($ua);
}
}
sub generator {
my ($self) = @_;
if ($self->sparql) {
return $self->sparql_generator;
} else {
return $self->rdf_generator;
}
}
view all matches for this distributionview release on metacpan - search on metacpan
( run in 0.908 second using v1.00-cache-2.02-grep-82fe00e-cpan-2c419f77a38b )