RDF::Closure - pure Perl RDF inferencing
use RDF::Trine::Iterator qw[sgrep]; use RDF::Closure qw[iri mk_filter FLT_NONRDF FLT_BORING]; my $data = iri('http://bloggs.example.com/foaf.rdf'); my $foaf = iri('http://xmlns.com/foaf/0.1/index.rdf'); my $model = RDF::Trine::Model->temporary_model; my $p = 'RDF::Trine::Parser'; $p->parse_url_into_model($data->uri, $model, context => $data->uri); $p->parse_url_into_model($foaf->uri, $model, context => $foaf->uri); my $cl = RDF::Closure::Engine->new('rdfs', $model); $cl->closure; my $filter = mk_filter(FLT_NONRDF|FLT_BORING, [$foaf]); my $output = &sgrep($filter, $model->as_stream); print RDF::Trine::Serializer ->new('RDFXML') ->serialize_iterator_to_string($output);
This distribution is a pure Perl RDF inference engine designed as an add-in for RDF::Trine. It is largely a port of Ivan Herman's Python RDFClosure library, though there has been some restructuing, and there are a few extras thrown in.
Where one of the Perl modules has a direct equivalent in Ivan's library, this is noted in the POD.
This package inherits from RDF::Trine and exports the same functions, plus:
mk_filter($basic_filters, $ignore_contexts)
Creates a filter (coderef) suitable for use with sgrep from RDF::Trine::Iterator.
sgrep
$basic_filters is an integer which can be assembled by bitwise-OR-ing the constants FLT_NONRDF and FLT_BORING.
$basic_filters
FLT_NONRDF
FLT_BORING
$ignore_contexts is an arrayref of RDF::Trine::Node objects, each of which represents a context that should be filtered out.
$ignore_contexts
use RDF::Trine::Iterator qw[sgrep]; use RDF::Closure qw[iri mk_filter FLT_NONRDF FLT_BORING]; my $foaf = iri('http://xmlns.com/foaf/0.1/index.rdf'); my $filter = mk_filter(FLT_NONRDF|FLT_BORING, [$foaf]); my $remaining = &sgrep($filter, $model->as_stream); # $remaining is now an iterator which will return all triples # from $model except: those in the FOAF named graph, those which # are non-RDF (e.g. literal subject) and those which are boring.
Which triples are boring? Any triple of the form { ?x owl:sameAs ?x .}, { ?x owl:equivalentProperty ?x .}, { ?x owl:equivalentClass ?x .}, { ?x rdfs:subPropertyOf ?x .} or { ?x rdfs:subClassOf ?x .} is boring (i.e. where these statements have the same term in subject and object position). Any triple where the subject, predicate and object nodes are all in the RDF, RDFS, OWL or XSD namespaces is boring. Other triples are not boring.
For convenience, RDF::Closure also exports variables called $RDF, $RDFS, $OWL and $XSD which are RDF::Trine::Namespace objects.
RDF::Closure
$RDF
$RDFS
$OWL
$XSD
RDF::Closure::Engine, RDF::Closure::Model, RDF::Trine::Parser::OwlFn.
RDF::Trine, RDF::Query.
http://www.perlrdf.org/.
http://www.ivan-herman.net/Misc/2008/owlrl/.
Toby Inkster <tobyink@cpan.org>.
Copyright 2011-2012 Toby Inkster
This library is free software; you can redistribute it and/or modify it under any of the following licences:
The Artistic License 1.0 http://www.perlfoundation.org/artistic_license_1_0.
The GNU General Public License Version 1 http://www.gnu.org/licenses/old-licenses/gpl-1.0.txt, or (at your option) any later version.
The W3C Software Notice and License http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231.
The Clarified Artistic License http://www.ncftp.com/ncftp/doc/LICENSE.txt.
THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
To install RDF::Closure, copy and paste the appropriate command in to your terminal.
cpanm
cpanm RDF::Closure
CPAN shell
perl -MCPAN -e shell install RDF::Closure
For more information on module installation, please visit the detailed CPAN module installation guide.