NAME

RDF::Closure - pure Perl RDF inferencing

SYNOPSIS

@@TODO

DESCRIPTION

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.

Functions

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.

    $basic_filters is an integer which can be assembled by bitwise-OR-ing the constants FLT_NONRDF and FLT_BORING.

    $ignore_contexts is an arrayref of RDF::Trine::Node objects, each of which represents a context that should be filtered out.

    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 .} is boring. 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.

SEE ALSO

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/.

AUTHOR

Toby Inkster <tobyink@cpan.org>.

COPYRIGHT

Copyright 2011 Toby Inkster

This library is free software; you can redistribute it and/or modify it under any of the following licences: