RDFStore::Model - An implementation of the Model RDF API using tied hashes and
implementing free-text search on literals
use RDFStore::NodeFactory;
my $factory= new RDFStore::NodeFactory();
my $statement = $factory->createStatement(
$factory->createResource('http://perl.org'),
$factory->createResource('http://iscool.org/schema/1.0/','label'),
$factory->createLiteral('Cool Web site')
);
my $statement1 = $factory->createStatement(
$factory->createResource("http://www.altavista.com"),
$factory->createResource("http://pen.jrc.it/schema/1.0/','author'),
$factory->createLiteral("Who? :-)")
);
my $statement2 = $factory->createStatement(
$factory->createUniqueResource(),
$factory->createUniqueResource(),
$factory->createLiteral("")
);
use RDFStore::Model;
my $model = new RDFStore::Model( Name => 'store', FreeText => 1 );
$model->add($statement);
$model->add($statement1);
$model->add($statement2);
my $model1 = $model->duplicate();
print $model1->getDigest->equals( $model1->getDigest );
print $model1->getDigest->hashCode;
my $found = $model->find($statement2->subject,undef,undef);
my $found1 = $model->find(undef,undef,undef,undef,'Cool'); #free-text search on literals :)
#get Statements
foreach ( @{$found->elements} ) {
print $_->getLabel(),"\n";
};
#or faster
my $fetch;
foreach ( @{$found->elements} ) {
my $fetch=$_; #avoid too many fetches from RDFStore::Model::Statements
print $fetch->getLabel(),"\n";
};
#or
my($statements)=$found1->elements;
for ( 0..$#{$statements} ) {
print $statements->[$_]->getLabel(),"\n";
};
#get RDFNodes
foreach ( keys %{$found->elements}) {
print $found->elements->{$_}->getLabel(),"\n";
};
# set operations
my $set = new RDFStore::Model( Name => 'setmodel' );
$set=$set->interset($other_model);
$set=$set->unite($other_model);
$set=$set->subtract($other_model);
An RDFStore::Model implementation using RDFStore(3) to store triplets.
The following methods construct/tie RDFStore::Model storages and objects:
- $model = new RDFStore::Model( %whateveryoulikeit );
- Create an new RDFStore::Model object and tie up the RDFStore(3).
The %whateveryoulikeit hash contains a set of
configuration options about how and where store actual data.
Possible additional options are the following:
- Name
- This is a label used to identify a Persistent storage by name. It
might correspond to a physical file system directory containing the
indexes DBs. By default if no Name option is given the storage is
assumed to be in-memory (e.g. RDFStore::Storage::find method return
result sets as in-memory models by default unless specified differently).
For local persistent storages a directory named liek this option is
created in the current working directory with mode 0666)
- Sync
- Sync the RDFStore::Model with the underling Data::MagciTie GDS after each
add() or remove().
- FreeText
- Enable free text searching on literals over a model (see find)
Digest(3) RDFStore(3) RDFStore::Digest::Digestable(3)
RDFStore::Digest(3) RDFStore::RDFNode(3)
RDFStore::Resource(3)
Alberto Reggiori <areggiori@webweaving.org>
Hey! The above document had some coding errors, which are explained
below:
- Around line 1468:
- '=item' outside of any '=over'
- Around line 1488:
- You forgot a '=back' before '=head1'
You forgot a '=back' before '=head1'