Why not adopt me?
NAME
Net::FluidDB::Object - FluidDB objects
SYNOPSIS
use Net::FluidDB::Object;
# create, with optional about
$object = Net::FluidDB::Object->new(
fdb => $fdb,
about => $unique_about
);
$object->create;
$object->id; # returns the object's ID in FluidDB
# get by ID, optionally fetching about
$object = Net::FluidDB::Object->get($fdb, $object_id, about => 1);
# tag
$object->tag("fxn/likes");
$object->tag("fxn/rating", integer => 10);
$object->tag("fxn/avatar", 'image/png' => $image);
# retrieve a tag value
$value = $object->value("fxn/rating");
# retrieve a tag value and its type
($type, $value) = $object->value("fxn/rating");
# remove a tag
$object->untag("fxn/rating");
# search
@ids = Net::FluidDB::Object->search($fdb, "has fxn/rating");
DESCRIPTION
Net::FluidDB::Object
models FluidDB objects.
USAGE
Inheritance
Net::FluidDB::Object
is a subclass of Net::FluidDB::Base.
Class methods
- Net::FluidDB::Object->new(%attrs)
-
Constructs a new object. The constructor accepts these parameters:
This constructor is only useful for creating new objects in FluidDB. Already existing objects are fetched with
get
. - Net::FluidDB::Object->get($fdb, $id, %opts)
-
Retrieves the object with ID
$id
from FluidDB. Options are:- about (optional, default false)
-
Tells
get
whether you want to get the about attribute of the object.If about is not fetched
has_about
will be false even if the object has an about attribute in FluidDB.
Net::FluidDB
provides a convenience shortcut for this method. - Net::FluidDB::Object->search($fdb, $query)
-
Performs the query
$query
and returns a (possibly empty) array of strings with the IDs of the macthing objects.Net::FluidDB
provides a convenience shortcut for this method.
Instance Methods
- $object->create
-
Creates the object in FluidDB.
- $object->id
-
Returns the UUID of the object, or
undef
if it is new. - $object->has_id
-
Predicate to test whether the object has an ID.
- $object->about
- $object->about($about)
-
Gets/sets the about attribute. About can't be modified in existing objects, the setter is only useful for new objects.
Note that you need to set the
about
flag when you fetch an object for this attribute to be initialized. - $object->has_about
-
Says whether the object has an about attribute.
Note that you need to set the
about
flag when you fetch an object for this attribute to be initialized. - $object->tag_paths
-
Returns the paths of the existing tags on the object as a (possibly empty) arrayref of strings.
- $object->tag($tag_or_tag_path)
- $object->tag($tag_or_tag_path, $value)
- $object->tag($tag_or_tag_path, $type => $value)
-
Tags an object.
You can pass either a Net::FluidDB::Tag instance or a tag path in the first argument.
- Native values
-
You need to specify the FluidDB type of native values using one of "null", "boolean", "integer", "float", "string", or "set":
$object->tag("fxn/rating", integer => 7);
If
$value
isundef
or an arrayref this is not required:$object->tag("fxn/tags"); # type null $object->tag("fxn/tags", undef); # type null $object->tag("fxn/tags", ["perl", "moose"]); # type set
The elements of arrayrefs are stringfied, since FluidDB sets are sets of strings.
- Non-native values
-
To tag with a non-native value use a suitable MIME type for it:
$object->tag("fxn/foaf", "application/rdf+xml" => $foaf);
- $object->value($tag_or_tag_path)
-
Gets the value of a tag on an object.
You can refer to the tag either with a Net::FluidDB::Tag instance or a tag path.
This method returns the very value in scalar context:
$value = $object->value("fxn/rating");
and also the type in list context:
($type, $value) = $object->value("fxn/rating");
For native values the type is one of "null", "boolean", "integer", "float", "string", or "set". For non-native values the type is their MIME type.
FLUIDDB DOCUMENTATION
AUTHOR
Xavier Noria (FXN), <fxn@cpan.org>
COPYRIGHT AND LICENSE
Copyright (C) 2009-2010 Xavier Noria
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 382:
'=item' outside of any '=over'