Provided by: librdf-helper-perl_2.0-1_all 

NAME
RDF::Helper - Provide a consistent, high-level API for working with RDF with Perl
SYNOPSIS
use RDF::Helper;
my $rdf = RDF::Helper->new(
BaseInterface => 'RDF::Trine',
namespaces => {
dct => 'http://purl.org/dc/terms/',
rdf => "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
'#default' => "http://purl.org/rss/1.0/",
}
);
DESCRIPTION
This module intends to simplify, normalize and extend Perl's existing facilities for interacting with RDF
data.
RDF::Helper's goal is to offer a syntactic sugar which will enable developers to work more efficiently.
To achieve this, it implements methods to work with RDF in a way that would be familiar to Perl
programmers who are less experienced with RDF.
It builds on RDF::Trine, which in turn provides the low-level API which is closer to RDF.
CONSTRUCTOR OPTIONS
my $rdf = RDF::Helper->new(
BaseInterface => 'RDF::Trine',
namespaces => {
dc => 'http://purl.org/dc/terms/',
rdf => "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
'#default' => "http://purl.org/rss/1.0/",
},
ExpandQNames => 1
);
BaseInterface
The "BaseInterface" option expects a string that corresponds to the class name of the underlying Perl RDF
library that will be used by this instance of the Helper. RDF::Trine is the default, but "RDF::Redland"
is retained as an option for historical reasons, but may be removed in the future. If you have a Redland-
based database, you can use RDF::Trine::Store::Redland.
Model
The "Model" option expects a blessed instance object of the RDF model that will be operated on with this
instance of the Helper. Obviously, the type of object passed should correspond to the BaseInterface used
(RDF::Trine::Model for a BaseInterface of RDF::Trine, etc.). If this option is omitted, a new, in-memory
model will be created.
namespaces
The "namespaces" option expects a hash reference of prefix/value pairs for the namespaces that will be
used with this instance of the Helper. The special '#default' prefix is reserved for setting the default
namespace.
For convenience, the RDF::Helper::Constants class will export a number of useful constants that can be
used to set the namespaces for common grammars:
use RDF::Helper;
use RDF::Helper::Constants qw(:rdf :rss1 :foaf);
my $rdf = RDF::Helper->new(
BaseInterface => 'RDF::Trine',
namespaces => {
rdf => RDF_NS,
rss => RSS1_NS,
foaf => FOAF_NS
},
ExpandQNames => 1
);
ExpandQNames
Setting a non-zero value for the "ExpandQNames" option configures the current instance of the Helper to
allow for qualified URIs to be used in the arguments to many of the Helper's convenience methods. For
example, given the namespaces option for the previous example, with "ExpandQNames" turned on, the
following will work as expected.
$rdf->assert_resource( $uri, 'rdf:type', 'foaf:Person' );
With "ExpandQNames" turned off, you would have to pass the full URI for both the "rdf:type" predicate,
and the "foaf:Person" object to achieve the same result.
base_uri
If specified, this option sets what the base URI will be when working with so called abbreviated URIs,
like "#me". If you do not specify an explicit base_uri option, then one will be created automatically
for you. See http://www.w3.org/TR/rdf-syntax-grammar/#section-Syntax-ID-xml-base
<http://www.w3.org/TR/rdf-syntax-grammar/#section-Syntax-ID-xml-base> for more information on abbreviated
URIs.
METHODS
new_resource
$res = $rdf->new_resource($uri)
Creates and returns a new resource object that represents the supplied URI. In many cases this is not
necessary as the methods available in RDF::Helper will automatically convert a string URI to the
appropriate object type in the back-end RDF implementation.
new_literal
$lit = $rdf->new_literal($text)
$lit = $rdf->new_literal($text, $lang)
$lit = $rdf->new_literal($text, $lang, $type)
Creates and returns a new literal text object that represents the supplied string. In many cases this is
not necessary as the methods available in RDF::Helper will automatically convert the value to the
appropriate object type in the back-end RDF implementation.
When it is necessary to explicitly create a literal object is when you want to specify the language or
datatype of the text string. The datatype argument expects a Resource object or a string URI.
new_bnode
$bnode = $rdf->new_bnode()
Creates and returns a new "Blank Node" that can be used as the subject or object in a new statement.
assert_literal
$rdf->assert_literal($subject, $predicate, $object)
This method will assert, or "insert", a new statement whose value, or "object", is a literal.
Both the subject and predicate arguments can either take a URI object, a URI string.
Additionally, if you used the "ExpandQNames" option when creating the RDF::Helper object, you can use
QNames in place of the subject and predicate values. For example, "rdf:type" would be properly expanded
to its full URI value.
assert_resource
$rdf->assert_resource($subject, $predicate, $object)
This method will assert, or "insert", a new statement whose value, or "object", is a resource.
The subject, predicate and object arguments can either take a URI object, or a URI string.
Like "assert_literal", if you used the "ExpandQNames" option when creating the RDF::Helper object, you
can use QNames in place of any of the arguments to this method. For example, "rdf:type" would be
properly expanded to its full URI value.
remove_statements
$count = $rdf->remove_statements()
$count = $rdf->remove_statements($subject)
$count = $rdf->remove_statements($subject, $predicate)
$count = $rdf->remove_statements($subject, $predicate, $object)
This method is used to remove statements from the back-end RDF model whose constituent parts match the
supplied arguments. Any of the arguments can be omitted, or passed in as "undef", which means any value
for that triple part will be matched and removed.
For instance, if values for the predicate and object are given, but the subject is left as "undef", then
any statement will be removed that matches the supplied predicate and object. If no arguments are
supplied, then all statements in the RDF model will be removed.
The number of statements that were removed in this operation is returned.
update_node
$rdf->update_node($subject, $predicate, $object, $new_object)
This method is used when you wish to change the object value of an existing statement. This method acts
as an intelligent wrapper around the "update_literal" and "update_resource" methods, and will try to
auto-detect what type of object is currently in the datastore, and will try to set the new value
accordingly. If it can't make that determination it will fallback to "update_literal".
Keep in mind that if you need to change a statement from having a Resource to a Literal, or vice versa,
as its object, then you may need to invoke the appropriate update method directly.
update_literal
$rdf->update_literal($subject, $predicate, $object, $new_object)
Updates an existing statement's literal object value to a new one. For more information on the operation
of this method, see "update_node".
update_resource
$rdf->update_resource($subject, $predicate, $object, $new_object)
Updates an existing statement's resource object value to a new one. For more information on the
operation of this method, see "update_node".
get_statements
@stmts = $rdf->get_statements()
@stmts = $rdf->get_statements($subject)
@stmts = $rdf->get_statements($subject, $predicate)
@stmts = $rdf->get_statements($subject, $predicate, $object)
This method is used to fetch and return statements from the back-end RDF model whose constituent parts
match the supplied arguments. Any of the arguments can be omitted, or passed in as "undef", which means
any value for that triple part will be matched and returned.
For instance, if values for the predicate and object are given, but the subject is left as "undef", then
any statement will be returned that matches the supplied predicate and object. If no arguments are
supplied, then all statements in the RDF model will be returned.
Depending on which back-end type being used, different object types will be returned. For instance, if
RDF::Trine is used, then all the returned objects will be of type RDF::Trine::Statement.
get_triples
@stmts = $rdf->get_triples()
@stmts = $rdf->get_triples($subject)
@stmts = $rdf->get_triples($subject, $predicate)
@stmts = $rdf->get_triples($subject, $predicate, $object)
This method functions in the same way as "get_statements", except instead of the statements being
represented as objects, the statement's values are broken down into plain strings and returned as an
anonymous array. Therefore, an individual element of the returned array may look like this:
[ "http://some/statement/uri", "http://some/predicate/uri", "some object value" ]
resourcelist
@subjects = $rdf->resourcelist()
@subjects = $rdf->resourcelist($predicate)
@subjects = $rdf->resourcelist($predicate, $object)
This method returns the unique list of subject URIs from within the RDF model that optionally match the
predicate and/or object arguments. Like in "get_statements", either or all of the arguments to this
method can be "undef".
exists
$result = $rdf->exists()
$result = $rdf->exists($subject)
$result = $rdf->exists($subject, $predicate)
$result = $rdf->exists($subject, $predicate, $object)
Returns a boolean value indicating if any statements exist in the RDF model that matches the supplied
arguments.
count
$count = $rdf->count()
$count = $rdf->count($subject)
$count = $rdf->count($subject, $predicate)
$count = $rdf->count($subject, $predicate, $object)
Returns the number of statements that exist in the RDF model that matches the supplied arguments. If no
arguments are supplied, it returns the total number of statements in the model are returned.
include_model
$rdf->include_model($model)
Include the contents of another, already opened, RDF model into the current model.
include_rdfxml
$rdf->include_rdfxml(xml => $xml_string)
$rdf->include_rdfxml(filename => $file_path)
This method will import the RDF statements contained in an RDF/XML document, either from a file or a
string, into the current RDF model. If a "base_uri" was specified in the RDF::Helper constructor, then
that URI is used as the base for when the supplied RDF/XML is imported. For instance, if the hash
notation is used to reference an RDF node (e.g. "<rdf:Description rdf:about="#dahut"/>"), the "base_uri"
will be prepended to the "rdf:about" URI.
serialize
$string = $rdf->serialize()
$string = $rdf->serialize(format => 'ntriple')
$rdf->serialize(filename => 'out.rdf')
$rdf->serialize(filename => 'out.n3', format => 'ntriple')
Serializes the back-end RDF model to a string, using the specified format type, or defaulting to
abbreviated RDF/XML. The serialization types depends on which RDF back-end is in use. The RDF::Trine
support within RDF::Helper supports the following serialization types:
• ntriples
• nquads
• rdfxml
• rdfjson
• ntriples-canonical
• turtle
new_query
$query_object = $obj->new_query( $query, [$base_uri, $lang_uri, $lang_name] );
Returns an instance of the class defined by the QueryInterface argument passed to the constructor (or the
default class for the base interface if none is explicitly set) that can be used to query the currently
selected model.
PERLISH CONVENIENCE METHODS
property_hash
$hash_ref = $rdf->property_hash($subject)
For instances when you don't know what properties are bound to an RDF node, or when it is too cumbersome
to iterate over the results of a "get_triples" method call, this method can be used to return all the
properties and values bound to an RDF node as a hash reference. The key name will be the predicate URI
(QName-encoded if a matching namespace is found), and the value will be the object value of the given
predicate. Multiple object values for the same predicate URI will be returned as an array reference.
It is important to note that this is a read-only dump from the RDF model. For a "live" alternative to
this, see "tied_property_hash".
deep_prophash
$hashref = $rdf->deep_prophash($subject)
This method is similar to the "property_hash" method, except this method will recurse over children
nodes, in effect creating a nested hashref data structure representing a node and all of its
associations.
Note: This method performs no checks to ensure that it doesn't get stuck in a deep recursion loop, so be
careful when using this.
tied_property_hash
$hash_ref = $rdf->tied_property_hash($subject)
$hash_ref = $rdf->tied_property_hash($subject, \%options)
Like "property_hash", this method returns a hash reference containing the predicates and objects bound to
the given subject URI. This method differs however in that any changes to the hash will immediately be
represented in the RDF model. So if a new value is assigned to an existing hash key, if a new key is
added, or a key is deleted from the hash, that will transparently be represented as updates, assertions
or removal operations against the model.
Optionally a hash can be passed to this method when tieing a property hash to give additional
instructions to the RDF::Helper::RDFRedland::TiedPropertyHash object. Please see the documentation in
that class for more information.
get_object
$obj = $rdf->get_object($subject, %options)
$obj = $rdf->get_object($subject, \%options)
Returns an instance of RDF::Helper::Object bound to the given subject URI. This exposes that RDF node as
an object-oriented class interface, allowing you to interact with and change that RDF node and its
properties using standard Perl-like accessor methods. For more information on the use of this method,
please see RDF::Helper::Object.
arrayref2rdf
$obj->arrayref2rdf(\@list, $subject, $predicate);
$obj->arrayref2rdf(\@list, undef, $predicate);
Asserts a list of triples with the the subject $subject, predicate $predicate and object(s) contained in
"\@list". It the subject is undefined, a new blank node will be used.
hashref2rdf
$object->hashref2rdf( \%hash );
$object->hashref2rdf( \%hash, $subject );
This method is the reverse of "property_hash" and "deep_prophash" in that it accepts a Perl hash
reference and unwinds it into a set of triples in the RDF store. If the $subject is missing or undefined
a new blank node will be used.
hashlist_from_statement
@list = $rdf->hashlist_from_statement()
@list = $rdf->hashlist_from_statement($subject)
@list = $rdf->hashlist_from_statement($subject, $predicate)
@list = $rdf->hashlist_from_statement($subject, $predicate, $object)
Accepting a sparsely populated triple pattern as its argument, this methods return a list of subject/hash
reference pairs for all statements that match the pattern. Each member in the list will have the
following structure:
[ $subject, $hash_reference ]
ACCESSOR METHODS
model
$model = $rdf->model()
$rdf->model($new_model)
An accessor method that can be used to retrieve or set the back-end RDF model that this RDF::Helper
instance uses.
query_interface
$iface = $rdf->query_interface()
$rdf->query_interface($iface)
Accessor method that is used to either set or retrieve the current class name that should be used for
composing and performing queries.
SEE ALSO
RDF::Helper::Object; RDF::Trine, RDF::Redland; RDF::Query
SUPPORT
There is a mailing list at <http://lists.perlrdf.org/listinfo/dev>.
A bunch of people are also hanging out in "#perlrdf" on "irc.perl.org".
AUTHOR
Kip Hampton, <khampton@totalcinema.com<gt>
COPYRIGHT AND LICENSE
Copyright 2004-2011 by Kip Hampton, Chris Prather, Mike Nachbaur
This library is free software; you can redistribute it and/or modify it under the same terms as Perl
itself.
perl v5.14.2 2011-06-24 RDF::Helper(3pm)