Why is this FAQ incomplete
It got long quickly.
I decided it might be useful to publish it before I’d answered
all the questions fully.
Feel free to add more in the comments, or to mail, or whatever,
or suggest clarifications or suggestions.
What is Fluidinfo?
Fluidinfo
is a social, on-line data store based on tags with values.
It allows anyone to store information about anything,
to query it, and to control who can see it/write to it.
The Fluidinfo service is offered by
Fluidinfo Inc.,
which is headquartered in New York.
What is FluidDB?
Originally, the company was called Fluidinfo and the
data store itself was called FluidDB.
The data store itself has been renamed Fluidinfo,
but the URL for the API remains as http://fluiddb.fluidinfo.com,
and the system user is still called fluiddb and the
about tag, fluiddb/about remains in the fluiddb namespace.
Unix users may find it helpful to think of the fluiddb user
as being a bit like root on Unix systems.
How do I get an account for Fluidinfo?
You can sign up for an account at http://fluidinfo.com/accounts/new/.
How do I query Fluidinfo directly?
If you know the ID for a Fluidinfo object, you can go directly
to the object at the URL formed by appending the ID to the URL
http://fluiddb.fluidinfo.com/objects/.
For example, there is an object for the book Animal Farm
at
http://fluiddb.fluidinfo.com/objects/1529c459-f3f2-45e1-90f4-3ff3040ad6df.
The result of doing an HTTP GET on that URL will be a JSON string
containing a list of the public tags on that object.
Some browsers will show the JSON if you put the URL into the address bar:
{"tagPaths": ["miro/class", "fluiddb/about", "miro/books/surname",
"miro/books/title", "njr/rating", "njr/index/about",
"miro/books/forename", "miro/books/guardian-1000",
"miro/books/year", "girafind/books/author", "girafind/books/title",
"girafind/books/language", "miro/books/author"]}
Alternatively, if you know the about tag for the object,
you can add a percent-encoded version of it to the end of the
URL http://fluiddb.fluidinfo.com/about/.
For example, the about tag for Animal Farm is
book:animal farm (george orwell),
so you can GET http://fluiddb.fluidinfo.com/about/book%3aanimal%20farm%20%28george%20orwell%29.
How do I query Fluidinfo using a programming language?
There are libraries available for many languages including
python, ruby, perl, java, Go, Clojure, PHP, Lisp and Smalltalk.
A list is maintained at
http://fluidinfo.com/developers/documentation#libraries.
How do I query Fluidinfo using from the command line?
If you have curl (cURL) on your system, you can query Fluidinfo
using it. For example, to get the object with ID
1529c459-f3f2-45e1-90f4-3ff3040ad6df you can say:
curl http://fluiddb.fluidinfo.com/objects/1529c459-f3f2-45e1-90f4-3ff3040ad6df
or to get it by its about tag, you can say:
curl http://fluiddb.fluidinfo.com/about/book%3aanimal%20farm%20%28george%20orwell%29
There are also Fluidinfo-specific tools available that allow command
line access to Fluidinfo. Specifically, both FOM and
fdb provide
different shell-like tools for reading from and writing to Fluidinfo.
How do I query Fluidinfo from the web?
Probably the most powerful, general-purpose way of reading from and writing
to Fluidinfo through a web browser is using the
Fluidinfo Explorer
There are a number of other online applications for doing particular
kinds of Fluidinfo operations including:
What is the about tag?
Most objects in Fluidinfo have a special tag called fluiddb/about,
generally referred to as the about tag,
which is a unique unicode string.
The about tag has the following special properties (guaranteed by
the system user, fluiddb, which controls it):
- About tags are unique: only one object in Fluidinfo can have
any given (unicode) string as its about tag.
- About tags are permanent: they can’t be deleted or changed
after creation.
- Objects with about tags can be uniquely specified and directly
queried using their about tags instead of their IDs.
The information sharing paradigm in Fluidinfo is for different
tags to be attached to a single object to show that
the data in the tags is related.
The about tag is the usual way to choose an appropriate object
for storing information that is “about” some particular thing.
What is the object ID?
Every object in Fluidinfo has an address, or ID, which is a unique
128-bit integer. This is always formatted as a
UUID (a so-called universally unique identifier),
i.e. as a 32-digit hexadecimal value (using lower case for a–f)
broken into blocks of 8-4-4-4-12 digits,
e.g. 88888888-4444-4444-4444-cccccccccccc.
Fluidinfo uses Version 4, UUIDs, i.e. they are randomly generated,
the 13th digit (start of third block) is always a 4, and the
17th digit (start of fourth block) is always 8 or higher.
In what sense is Fluidinfo “a database with the heart of a wiki”?
- Key similarities between Fluidinfo and a wiki are:
- They are both online data stores
- Essentially anyone can add data to both
- Both can store data about “anything”; in some sense, both also
have an object/location for everything (or at least, a potential
object/location for Everything).
- Key differences include:
- Users normally write data to their own data space in Fluidinfo,
rather than editing a common version of the truth: there is thus
little room for edit wars in Fluidinfo.
- Fluidinfo is primarily concerned with structured rather than
unstructured data, i.e. tag values in Fluidinfo are typed and
are often numeric, boolean, or more complex types like lists
or images, rather than always being text.
- The core Fluidinfo service is only accessible through its API,
rather than through an (HTML) web site (though applications
exist to allow ordinary web access).
- Fluidinfo has a permissions system allowing users to control
exactly who can read and write which data.
- Fluidinfo has a query langage, whereas wikis normally only have
free text search.
Why do I have to “create” a tag before using it?
Because Terry says so.
More seriously: In Fluidinfo, information is stored by attaching
a tag, usually with a value, to an object. As a trivial example,
I (njr) have attached my rating tag (njr/rating)
to the book Animal Farm, by George Orwell, and set its value to the
number 10.
Whereas in a simpler tagging system like
delicious or flickr,
tags are just words, and are created on demand,
Fluidinfo makes a fairly strong distinction (under the hood)
between what we might call the abstract tag njr/rating
and various uses of the tag to attach a particular value
to an object.
The Fluidinfo API itself requires the tag to be created before it can
be used. The stated justification for this requirement
is to reduce the likelihood that a user will
inadvertently bring an unintended (abstract) tag into existence
by making a typographical error.
Some libraries (including fdb and FOM, mentioned above)
hide this from the user and just create tags as they are used.
It is possible that at some point in the future, the API might
be modified to create tags automatically on first write.
What is a tag and how do I create a tag?
The basic unit of information storage in Fluidinfo is the tag.
Tags have names, which are unicode strings.
The full name for a tag always includes a namespace,
which might be heirerchical. For example, my username in
Fluidinfo is njr and my top-level tags are things like
njr/rating, njr/has-read etc.
Tag names can be any combination of unicode letters and
digits and may include colons, periods, hyphens and underscores (only).
The total length of a tag name, including its namespace,
is limited to
233 characters.
Namespaces can be thought of a bit like folders or directories
in file systems, and can be nested.
For example, I could have a private rating as well a public rating,
and might keep the private one in a namespace njr/private,
giving a full tag path of njr/private/rating.
In terms of the raw HTTP API, a tag called this-tag is created in
namespace ns
by saying:
- In order for this to work:
- The namespace ns must already exist
- The user must have permission to create the tag
- In practice, this usually means that the user must provide
authentication.
In the specific case of a user called jacqui creating a top-level
tag called rating, given password pwd, the appropriate curl
command would be
curl -X POST https://jacqui:pwd@fluiddb.fluidinfo.com/tags/jacqui/rating
(It is possible to add a description too, but that involves sending
a JSON payload.)
Note that in Fluidinfo, it is possible to have a tag and a namespace
that share the same path, i.e. it is possible to have a tag
called jacqui/rating and a namespace called jacqui/rating.
Why do I have to “create” a namespace before using it?
As with tags, the real answer is “because Terry says so”.
Also, as with tags, some libraries (like fdb and FOM)
handle this for you.
What is a namespace and how do I create one?
In general, namespaces are ways of keeping different entities
with the same ‘name’ separate. One familiar example is
local vs. global variables. You could also regard directories
as implementing namespaces for files, in the sense that two files
can have the same name as long as they live in different directories.
In Fluidinfo, each tag lives in some namespace.
All of a user’s tags live in that user’s namespace; for example,
my tags all live in the namespace njr.
Fluidinfo’s system user, fluiddb, keeps important system
tags under the fluiddb user’s namespace, which is why,
for example, the about tag has the path fluiddb/about.
Namespaces may be nested, like directories, so I can have,
for example, a private and a public area with namespaces
njr/public and njr/private.
This would allow me, if I really wanted, to have three rating tags,
njr/rating, njr/public/rating and njr/private/rating.
As with tags, namespaces must be explicitly created through the API
before they can be used (though the system creates each user’s
top-level namespace when it creates the user).
Creating a namespace is remarkably similar to creating a user.
It is achieved, by an permitted/authenticated user by POSTing
to http://fluiddb.fluidinfo.com/namespaces.
Using curl, user jacqui, with password pwd,
can create a second-level private
namespace by saying:
curl -X POST https://jacqui:pwd@fluiddb.fluidinfo.com/namespaces/jacqui/private
What’s the difference between permissions and policies?
Each namespace and tag has a set of permissions that govern
who can read from and write to them.
The default is that all data can be read by anyone,
but only its owner can write data.
Permissions are implemented as a combination of a policy,
which is either open (accessible) or closed (inaccessible),
and a set of exceptions—a list of users to whom the policy
does not apply.
Thus the read actions (read on tags, list on namespaces)
have an open policy by default, and an empty exception list.
The write actions (create, update and delete) have,
by default, closed policies, with an exception list containing
only the user in whose namespace they live.
Permissions are stored and updated using through
http://fuiddb.fluidinfo.com/permissions.
There is also a set of default permissions for each user,
consisting of a default policy and a default exception list.
Slightly confusingly, these default permissions are stored and
updated through
http://fuiddb.fluidinfo.com/policies.
Can I use a tag without a value?
Strictly, no; a value must always be supplied.
However, the value may be NULL (JSON null).
For most purposes, we think of a tag with a NULL value
as being a valueless tag.
The Fluidinfo query language includes a has primitive,
which tests whether a tag is present on an object,
and is useful for tags without values (i.e. tags with NULL values).
How can I keep information in Fluidinfo private?
You can use the permissions system to keep any or all data
(as opposed to metadata) private, and you can also hide the
presence of a tag on an object using the permissions system.
You should be aware, however, that there are various ways
for anyone to see the existence of tags and namespaces,
so you should regard namespace names or tag names themselves
as private.
Do all objects have to have an about tag?
No. When an object is first created, whoever requests it
can either specify an about tag or not.
If none is specified, the object will not have an about tag,
and will be forever without one.
How do I know what conventions to use for about tags?
The About Tag blog is largely
concerned with that very question.
There are no rules: you can use whatever conventions you like.
The posts in this blog tagged conventions
have lots of suggestions,
the About Tag web application
has several online resources for constructing about tags,
and the abouttag.py library
has python code for producing normalized, canonical suggested
about tags for various kinds of entities.
Can I have a username that is a URL?
The owner of a domain can normally have that domain as a username
in Fluidinfo. In that way, users can gain
a level of confidence about the provenance of information
under such URL namespaces.
If you do not own the domain in question, you will not normally
be permitted to register a domain-like username.
How do I tag an object in Fluidinfo?
This is achieved using a PUT on either the relevant
/about or /objects path for the object.
It is slightly tricky using the raw HTTP API as you have
to send a JSON payload.
See http://fluidinfo.com/cookbook/#putvalue.
With fdb, you just say:
fdb tag -a "book:animal farm (george orwell)" njr/rating=10
or, if you know, prefer to user the object ID,
fdb tag -i 1529c459-f3f2-45e1-90f4-3ff3040ad6df njr/rating=10
if you have it configured to require full tag paths, and it will even
create the tag for you if it doesn’t exist.
How do I get the value of a tag from Fluidinfo?
To get the rating njr/rating from the book Animal Farm
you just do an HTTP GET on the relevant /about or /objects path,
adding njr/rating to the end. So either:
GET https://fluiddb.fluidinfo.com/objects/1529c459-f3f2-45e1-90f4-3ff3040ad6df/njr/rating
or, for the about version,
GET https://fluiddb.fluidinfo.com/about/http://fluiddb.fluidinfo.com/about/book%3aanimal%20farm%20%28george%20orwell%29/njr/rating
Using curl, this becomes:
curl https://fluiddb.fluidinfo.com/objects/1529c459-f3f2-45e1-90f4-3ff3040ad6df/njr/rating
or alternatively:
curl https://fluiddb.fluidinfo.com/about/http://fluiddb.fluidinfo.com/about/book%3aanimal%20farm%20%28george%20orwell%29/njr/rating
Using fdb, configured to require full paths, you do
fdb show -i 1529c459-f3f2-45e1-90f4-3ff3040ad6df njr/rating
or, more simply
fdb show -a 'book:animal farm (george orwell)' njr/rating
How do I search Fluidinfo?
Fluidinfo provides a
query language
that allows rather precise
querying of information in Fluidinfo.
For something more akin to a web search on about tags, try
try http://abouttag.appspot.com/search.
How does string matching work in Fluidinfo?
The matches operator in Fluidinfo’s query language is based
on Lucene’s text matching.
Matches are whole-word, case insensitive and ignore punctuation.
Why don’t numeric comparisons work in Fluidinfo?
Fluidinfo currently regards floating point values and
integers as entirely separate domains and comparisons
between the two fail. This is bug.
Thus, at moment, if njr/rating is 5 on an object
and njr/rat.ing is 5.0 the folling matches will FAIL:
njr/rating = njr/rat.ing CURRENTLY FALSE
njr/rating < 6.0 CURRENTLY FALSE
njr/rat.ing < 6 CURRENTLY FALSE
njr/rating = 5 CURRENTLY FALSE
njr/rating = 5.0 CURRENTLY FALSE
njr/rat.ing > 1 CURRENTLY FALSE
njr/rating > 1.0 CURRENTLY FALSE
(Booleans are also not available for any kind of numeric
matching; in fact, booleans aren’t available for any
kind of mathing at all at the moment, which is also a bug.)
How do I limit the number of results from a Fluidinfo query?
This is not currently possible.
How do I perform a more powerful string match in Fluidinfo?
Only basic Lucene string matching is currently available
using the matches operator, though obviously this can
be combined with other query terms.
A number of enhancements are under consideration.
How do I know an about tag won’t change in Fluidinfo?
The system guarantees that about tags will never change.
What if several objects in Fluidinfo have the same about tag?
The system guarantees that about tags are unique and immutable.
How do I store more complex information in Fluidinfo?
So-called primitive types are first-class citizens in Fluidinfo.
These are things like nulls, booleans, integers, floats, unicode
strings and set of strings.
They may be used as the basis for queries with comparison operators,
and are exchanged using the Content-Type
application/vnd.fluiddb.value+json
Fluidinfo can store data of any type as an “opaque” value,
meaning that it can be stored and retrieved, but Fluidinfo
doesn’t ever look inside the content.
To do this, simply specify the content type as any MIME type
except application/vnd.fluiddb.value+json.
If you want to represent more complex data structures in Fluidinfo
using primitive types, it’s just a question of deciding conventions.
For example, some suggestions on storing structured tabular data
and forming links between objects are given in
this blog post.
Where can I get the API documentation or Fluidinfo?
The most detailed information is available at
http://api.fluidinfo.com/html/api.html.
Higher level documentation is available at
http://doc.fluidinfo.com/fluidDB/api/http.html.
Even higher level documentation is available at
http://doc.fluidinfo.com/fluidDB/.
Who is behind Fluidinfo?
Fluidinfo is a New York company founded by Terry Jones.
It has funding from both institutions and individuals.
Some details are available at http://fluidinfo.com/investors/.
Information on the team is available at http://fluidinfo.com/team/.
Where can I get help on Fluidinfo if I get stuck?
There are usually friendly and helpful people available on the
#fluidinfo IRC Channel
at Freenode.
There are Google Groups at
fluidinfo-users
and
fluidinfo-discuss.
Everyone involved in Fluidinfo seems to be on Twitter, and most are
pretty responsive. See a list of users
at http://fluidinfo.com/developers/documentation#community.
What is the Fluidinfo Explorer?
The Fluidinfo Explorer
is a web-based interface to Fluidinfo that has some similarities
to Windows Explorer or the Mac Finder.
It is the brainchild of P A Parent
(paparent).
It is the most comprehensive online interface to Fluidinfo
currently available, and allows both browsing and (if you log in)
writing of data to Fluidinfo (for registered users).
Can I see a visual representation of a Fluidinfo object?
Of course. Try http://abouttag.appspot.com.
How do I change the permissions on a tag?
This is described in the cookbook.
How do I change the permissions on a namespace?
See the cookbook.
What is /values?
/values provides an access mechanism for getting or setting
the values for all objects that match a given query.
It can be dramatically more efficient than getting or setting
values one at a time.
It is described at http://blog.abouttag.com/2011/04/fdbpy-130-embryonic-values-api-support.html.
What is /about?
/about is the end of a base path for accessing objects
directly using their about tags. For example, you can find
the tags on the object with the about tag paris by using
GET http://fluiddb.fluidinfo.com/about/paris
What is /objects?
All objects can be accessed through the /objects path
if you know their addresses.
For example, you can find
the tags on th object with the about tag paris by using
GET http://fluiddb.fluidinfo.com/objects/881d95b2-e9f0-40c8-a11e-964f349e01b1
gets the tags on the object with about tag paris, whose ID
is used in the URL.
Why is Fluidinfo so slow? And will it get faster?
It’s a very early version of a rather flexible system.
Improved performance is the top priority for the development team;
expect improvements.
Can I use wildcards in Fluidinfo?
Not yet.
How do I match a boolean value in Fluidinfo?
You can’t, at the moment. This is a bug.
Are there any useful videos on Fluidinfo?
Yes! There are lots.
There’s a YouTube channel at http://www.youtube.com/fluiddb
and Google video search finds
even more.
Are there are any useful slide shows on Fluidinfo?
Yes! http://www.slideshare.net/fluidinfo.
Are there any blogs on Fluidinfo?
- Yes!
-
Is there an IRC channel for Fluidinfo?
Yes. #fluidinfo IRC Channel
at Freenode.
Why is it called Fluidinfo?
Terry hates computers and think they make working with information
too rigid and unnatural for humans.
Fluidinfo aims to make it easier for people to annotate the world
with comments, snippets of information and so forth,
in a much more flexible, human, fluid manner.
What is the sandbox?
The sandbox is a secondary instance of Fluidinfo that can be used
for testing, both by the community and the company.
Unlike the main instance, you should expect that the sandbox
will sometimes have its data removed, and it will usually
get an updated version of the API before the main instance is
upgraded.
To user the sandbox, replace http://fluiddb.fluidinfo.com
with http://sandbox.fluidinfo.com in all URLs.
Not all main instance users currently have sandbox access,
but if you haven’t and would like it, get in touch with
the team and they’ll make it happen.
How do I find out whether Fluidinfo is up (the server status)?
The team tries to post a message on the front page at
http://fluidinfo.com has a message when we know
the server is down.
In practice, a message usually appears on Twitter
(@fluidinfo) even sooner.
Is there a test user for Fluidinfo?
Yes. The test user is called test.
Its password is the same as its username.
It exists on both the main instance and in the sandbox.
How do I destroy a Fluidinfo Object?
You can’t. Fluidinfo objects are shared and eternal.
How do I make a Fluidinfo Object private?
You can’t. All Fluidinfo objects are shared.
However, if you create a new object without an about tag,
it will be accessible only to those who know or can guess
its ID (which is a 128-bit integer) and to those who can
find it by query. If you use only private tags on the object,
it is unlikely anyone else will find/use it.
How do I hide a tag completely?
You can’t. You can use the permissions system to stop other
people seeing which objects a tag has been used on,
and to stop them seeing any of its values data,
but the existence of the tag is visible to any Fluidinfo user
who knows where to look.
What is Fluidinfo’s query language?
Fluidinfo’s query language is pretty simple and is
documented at http://doc.fluidinfo.com/fluidDB/queries.html.
Examples include:
has jacqui/rating (returns objects tagged with any jacqui/rating)
jacqui/rating > 7
jacqui/rating >= 7
jacqui/rating = 7
jacqui/rating <= 7
jacqui/rating < 7
fluiddb/about contains "film" (whole-word, case-insensitive string match)
jacqui/rating > 7 except has njr/has-read (return objects with a jacqui rating over 7
only if they don't have an njr/has-read tag)
jacqui/rating > 7 AND thelonious/rating > 7
jacqui/rating > 7 OR has thelonious/has-read
- Notes:
- Numeric comparisons between floating point and integer values
all fail at the moment. (This is a bug.)
- Booleans cannot be treated as numeric values. (This is apparently a feature.)
- No comparison operators are currently available at all for boolean values (though has can be used). (The lack of comparison operators is a bug.)
- The match operator ignores case and discards punctuation and is
“whole-word” oriented.
There is no way to override this behaviour at the moment.
- There is no not operator and no not equal operator.
This is largely to make accidental writing of queries that return
most of the objects in the system harder.
The except operator can often be used to achieve ends that
might more naturally be achieved using not or is not equal to.
How do I report a bug in Fluidinfo?
In practice, jumping onto the
#fluidinfo channel on
IRC and discussing it with one of the
developers in there will often be the best way.
Or discuss it in one of the Google Groups
(fluidinfo-users
or
fluidinfo-discuss)
If you’d rather send a mail, for the moment, just send it to
info@fluidinfo.com for the moment.
Are there any Google groups associated with Fluidinfo?
There are Google Groups at
fluidinfo-users
and
fluidinfo-discuss.
Is Fluidinfo open source or free software?
Not currently. This may change.
(Free in this context refers to Richard Stallman’s notion of
free software—free
as in “free speech”, rather than free as in “free beer”.
Fluidinfo does not charge for use of the Fluidinfo service at present.)
Is Fluidinfo Inc. a non-profit company?
Fluidinfo is a “for-profit” company; but it has not yet made a profit.
What are the terms of service for Fluidinfo?
These are available at http://fluidinfo.com/terms/.
What is the “payload” that the Fluidinfo documentation talks about?
Everyone knows that when you do an HTTP GET, you get a lump of
data back.
In the case of an ordinary web page, this consists of a few headers
followed by the HTML for the page.
It’s less widely known that other HTTP actions, like PUT and POST
can include data in the same way.
This data is known as the payload.
In the case of Fluidinfo, the payload is most commonly serialized
JSON data with the Content-Type set to
application/vnd.fluiddb.value+json.
More complex data can have other MIME types.
Most Fluidinfo operations that involve writing data to the system
require the data to be sent as the payload.
What is JSON and how do I use it?
JSON is the
JavaScript Object Notation.
It provides a simple way to serialize various basic (“primitive”)
types, such as nulls, booleans, integers, floats and unicode strings,
lists, and associative arrays (hashes/dictionaries) as strings
and is widely used on the web as a way of exchanging structured data.
(Ironically, most so-called
AJAX
sites now use JSON to exchange data,
rather than XML, suggesting that it might be more accurately known
as AJAJ.)
Primitive types are passed to and from Fluidinfo using serialized JSON
with the Content-Type set to application/vnd.fluiddb.value+json.
Other MIME types may also be used, but are opaque to Fluidinfo.
What is the results format for /values queries?
Here’s an example, in which I’ve formatted the output to try to emphasize
the structure:
curl http://fluiddb.fluidinfo.com/values?query=fluiddb/about%20matches%20%22dadgad%22&tag=fluiddb/about
{
"results": {
"id": {
"296ad46c-ec88-42ae-ae05-3a9d00ab3718": {"fluiddb/about": {"value": "'DADGAD'"}},
"1fb8e9cb-70b9-4bd0-a7e7-880247384abd": {"fluiddb/about": {"value": "DADGAD"}},
"4d98a0de-b19e-4ae4-bb31-967d7a2920d7": {"fluiddb/about": {"value": "dadgad"}}
}
}
}
As you can see, it’s a JSON hash with the single key results.
That item is another hash containing the key id
(which later might be able to be about).
This item in turn is another hash with keys that are the IDs of the
matching items.
The values of those items are a hash with the requested
tags as keys and their values as a hash keyed on value.
It’s slightly verbose, but flexible.
Is Fluidinfo on Twitter?
Oh yes.
There is an official Fluidinfo user
(@fluidinfo),
the entire development team is on twitter
(see http://fluidinfo.com/developers/documentation#community)
and most if not all the investors are there too.
There’s also a Fluidinfo-based application,
Tickery that lets you explore the Twitter
social graph with the help of Fluidinfo.
Does Fluidinfo use Unicode?
Yes. All string data in Fluidinfo is unicode.
How do I use accents and non-European characters with Fluidinfo?
All string data in Fluidinfo is unicode.
You would normally encode as UTF-8 during interchange.
What’s all this stuff about MIME types in Fluidinfo?
Most values stored in Fluidinfo have simple types, the main examples
being nulls, booleans, integers, floating point values and
unicode strings.
Fluidinfo also supports a type that is a set of unicode strings.
These are known as primitive values.
Primitive values in Fluidinfo have the Content-Type
application/vnd.fluiddb.value+json, indicating that they are
serialized JSON representations of these primitive types.
When you get any primitive value from Fluidinfo, the content type
will be set to this.
Similarly, when you send a primitive value to Fluidinfo, you should
set the content type to application/vnd.fluiddb.value+json.
Fluidinfo will happily store store values of any other MIME type.
in these cases, you set the content type to the appropriate MIME
values when writing, and the system will return the same
content type when you retrieve such values.
It would be nice not to care, and if you use an application
or client library, it may hide this for you;
but if you use the native HTTP API, you may need this information.
What does it cost to use Fluidinfo?
Use of Fluidinfo is currently free of charge.
If this makes you very unhappy, get in touch and we’ll try to come
to a more acceptable arrangement for you.
Is there an object for each user in Fluidinfo?
Yes. The object for a user with username thelonious
has the about tag Object for the user named thelonious.
(Use https://abouttag.appspot.com/fluiddbobject to find these;
it will also show you which objects Fluidinfo uses to store
information about tags and namesapces, each of which has a
corresponding object.)
Are there any cool apps I should know about for Fluidinfo?
- Yes!
-
and many more besides.
Are there any mobile apps for Fluidinfo (iPhone/Android)?
Not yet, as far as I know, though some sites like
http://abouttag.appspot.com work pretty well on mobiles.
Is there an easy way to import data into Fluidinfo in bulk?
Try flimp
(described at
http://blogs.fluidinfo.com/fluidinfo/2010/11/19/importing-data-into-fluiddb-with-flimp/).
What is tickery?
Tickery is a Fluidinfo web application that lets
you explore the social graph from Twitter.
Why is there so much data on Twitter users in Fluidinfo?
Tickery stores its data in Fluidinfo.
Is the id for an object a tag in Fluidinfo?
No.
What is a UUID?
Every object in Fluidinfo has an address, or ID, which is a unique
128-bit integer. This is always formatted as a
UUID (a so-called universally unique identifier),
i.e. as a 32-digit hexadecimal value (using lower case for a–f)
broken into blocks of 8-4-4-4-12 digits,
e.g. 88888888-4444-4444-4444-cccccccccccc.
Fluidinfo uses Version 4, UUIDs, i.e. they are randomly generated,
the 13th digit (start of third block) is always a 4, and the
17th digit (start of fourth block) is always 8 or higher.
Who or what is the fluiddb user?
Fluidinfo stores its data in Fluidinfo under the namespace
of a system user called fluiddb.
For example, the about tag is actually fluiddb/about.
The reason for the name fluiddb is historical;
originally, the company was Fluidinfo and the data store
was FluidDB. Changing it now would be painful.
How do I authenticate to Fluidinfo using curl (cURL)?
An example is
curl -X POST https://jacqui:pwd@fluiddb.fluidinfo.com/tags/jacqui/rating
where jacqui is the username and pwd is the password.
Is it tags or values that are typed in Fluidinfo?
Values.
The same tag can have different types of values
when applied to different objects.
Can I set permissions for a particular tag on a particular object?
No. Permissions operate at the level of tags (and namespaces),
not “tag instances” (the tagging of a particular object with a value
using a given (abstract) tag).
Who is Terry (@terrycojones)?
The Terry Jones mentioned in this FAQ and blog is the founder
of Fluidinfo Inc., and the conceiver of the Fluidinfo system.
He is @terrycojones,
he blogs in various places, but mostly at
http://blogs.fluidinfo.com/fluidinfo/
and his home page is http://jon.es/terry.html.
He has no connection to Monty Python’s Flying Circus and does
not threaten to burn holy texts.
What is application/vnd.fluiddb.value+json and should I care?
Most values stored in Fluidinfo have simple types, the main examples
being nulls, booleans, integers, floating point values and
unicode strings.
Fluidinfo also supports a type that is a set of unicode strings.
These are known as primitive values.
Primitive values in Fluidinfo have the Content-Type
application/vnd.fluiddb.value+json, indicating that they are
serialized JSON representations of these primitive types.
When you get any primitive value from Fluidinfo, the content type
will be set to this.
Similarly, when you send a primitive value to Fluidinfo, you should
set the content type to application/vnd.fluiddb.value+json.
Fluidinfo will happily store store values of any other MIME type.
in these cases, you set the content type to the appropriate MIME
values when writing, and the system will return the same
content type when you retrieve such values.
It would be nice not to care, and if you use an application
or client library, it may hide this for you;
but if you use the native HTTP API, you may need this information.
I’ve lost my password for Fluidinfo. How do I recover/reset it?
Go to https://fluidinfo.com/accounts/password_reset/
Is there a tutorial introduction to Fluidinfo?
Try the cookbook.
Are there any books available on Fluidinfo?
Not yet. But watch this space.
Can a company get its own private instance of Fluidinfo?
It’s not out of the question.
Get in touch with Terry
(@terrycojones) to discuss that.
Can I invest in Fluidinfo?
It’s not out of the question.
Contact Terry (@terrycojones) Jones
or Russell (@rustlem) Manley
to discuss that.
Fluidinfo is supercool: how can I help?
Get an account
and do something cool with it.
Write a killer Fluidinfo application.
Join us.
Put up some interesting data (we can help).
Write a blog, tell your friends, tweet about it.
Get in touch and give us feedback.
I’m not very technical but like the look of Fluidinfo: is there a way for me to use it?
That should get easier over time.
For now, try the applications like Tickery,
Search,
the Explorer,
the Chrome extension for the O’Reilly API
etc.
Where can I find the API for O’Reilly books?
Read http://blogs.fluidinfo.com/fluidinfo/2011/03/21/the-structure-of-oreilly-book-and-author-data-in-fluidinfo/.
Where can I find the boingboing API?
Read http://blogs.fluidinfo.com/fluidinfo/2011/01/27/how-we-made-an-api-for-boingboing-in-an-evening/.
Where can I find the read/write-web API?
Read http://blogs.fluidinfo.com/fluidinfo/2011/02/23/readwriteweb-readwriteapi/
I’ve heard Fluidinfo is like a universal API. What does that mean?
This post explains what it means. http://blogs.fluidinfo.com/fluidinfo/2011/02/23/how-to-make-an-api-in-fluidinfo/