Upload
nicholas-tollervey
View
5.816
Download
0
Embed Size (px)
DESCRIPTION
A short (revised) version of FluidDB in a Nutshell with some notes attached.
Citation preview
http://www.flickr.com/photos/max78/104677840/
FluidDBin a
Nutshell
FluidDB is an openly writable hosted service
for storing, sharing, searching and annotating
data.
While this is accurate, it’s not the whole story...
Key Concepts• Objects - represent things*
• Tags - define objects’ attributes
• Namespaces - organise tags
• Permissions - control access
* Not in the object oriented sense of “object”.
Objects are simply tagged with informationhttp://ntoll.org/images/93.jpg
Namespaces/tags
ntoll/ratingterrycojones/books/reviewamazon.com/book/titleamazon.com/book/authoramazon.com/book/isbnesteve/books/covertimoreilly/has_read
Tags must be defined before being attached to objects. Every user, application or client starts with a namespace named after their username. Users whose username is a domain name must own the domain in question (so only Amazon could use the namespace amazon.com). Every namespace and tag is itself represented by an object (facilitating meta-tagging).
An object
about = “book: Dune”
id =“e127475b-eb93-48e1-a24f-dde6825b9ed8”
Objects (in FluidDB) represent things
Every object has a unique ID
The unique “about” tag is optional and used to identify what the object represents
A conceptual view of an object. Remember the “about” tag is special, optional and unique.
An object
about = “book:Dune”
ntoll/rating = 5ter
rycojones/
books/rev
iew =
“I love
sandworm
s”
amazon.com/books/title =
“Dune”
amaz
on.co
m/b
ooks
/aut
hor =
“Fra
nk H
erbe
rt”
amazon.com/books/isbn =
“87-418-7517-6”
timoreilly/has_read =
1973/08/19
estev
e/boo
ks/co
ver =
id =“e127475b-eb93-48e1-a24f-
Different users tag data to the object. Their data is given a context by being attached to the same object.
An object
about = “book:Dune”
ntoll/rating = 5ter
rycojones/
books/rev
iew =
“I love
sandworm
s”
amazon.com/books/title =
“Dune”
amaz
on.co
m/b
ooks
/aut
hor =
“Fra
nk H
erbe
rt”
amazon.com/books/isbn =
8741875176
timoreilly/has_read =
1973/08/19
estev
e/boo
ks/co
ver =
id =“e127475b-eb93-48e1-a24f-
Images
Numbers
Text Date/Time
The values can be of a primitive (searchable) type: numbers, text, booleans etc... OR an opaque type: images, audio, video or any other sort of data.
An object
about = “book:Dune”
ntoll/rating = 5ter
rycojones/
books/rev
iew =
“I love
sandworm
s”
amazon.com/books/title =
“Dune”
amaz
on.co
m/b
ooks
/aut
hor =
“Fra
nk H
erbe
rt”
amazon.com/books/isbn =
“87-418-7517-6”
timoreilly/has_read =
1973/08/19
estev
e/boo
ks/co
ver =
id =“e127475b-eb93-48e1-a24f-
What about data control/privacy..? Permissions are usually applied to the “thing” of interest. But Fluidinfo wants to make FluidDB openly writeable. So we do something different...
An object
about = “book:Dune”
ntoll/rating = 5ter
rycojones/
books/rev
iew =
“I love
sandworm
s”
amazon.com/books/title =
“Dune”
amaz
on.co
m/b
ooks
/aut
hor =
“Fra
nk H
erbe
rt”
amazon.com/books/isbn =
“87-418-7517-6”
timoreilly/has_read =
1973/08/19
estev
e/boo
ks/co
ver =
id =“e127475b-eb93-48e1-a24f-
...we move the location of the permissions...
Permissions apply to namespaces, tags and values. Users retain control of their data.
FluidDB stays writable.
Anyone can tag any sort of data to any object. However, users define who can read, create and change their namespaces, tags and data.
FluidDB is the database with the heart of a wiki
Nivi http://venturehacks.com/
Sort of... :-) A wiki is openly writable just like FluidDB. But a wiki doesn’t have permissions to facilitate privacy and ownership, a query language like a database, nor does it have a simple API for application developers.
WHERE location NEAR pubs SERVING
SELECT self-catering-cottage FROM
AND pub HAS rating > 7 IN
It’s currently NOT possible to create queries like this on the web. Data is stored in walled gardens behind websites. FluidDB is different because data is stored in context (i.e. it’s tagged to a shared object).
FluidDB’s Query Language• Equality & Inequality: To find objects based on the numeric values or
exact textual values, e.g., tim/rating > 5, or geo/name = "Llandefalle".
• Textual: To find objects based on text matching their tag values, for example, sally/opinion matches “fantastic”.
• Presence: Use has to request objects that have a given tag. For example, has sally/opinion.
• Set contents: The contains operator can be used to select objects with a matching value in a set of strings. The query mary/product-reviews/keywords contains "kids" would match the object with a tag called /mary/product-reviews/keywords and value ["cool", "kids", "adventure" ].
• Exclusion: Exclude objects with the except keyword. For example has nytimes.com/appeared except has james/seen. The except operator performs a set difference.
• Logic: Query components can be combined with and and or. For example, has sara/rating and tim/rating > 5.
• Grouping: Parentheses can be used to group query components. For example, has sara/rating and (tim/rating > 5 or mike/rating > 7).
FluidDB has a simple yet powerful query language (so simple, it fits on this slide). Because everyone’s data is stored in the context of shared objects it means it’s possible to create interesting queries using data (for which you have permission to read) from lots of different sources.
{“tagPaths”: [" “twitter.com/username”," “twitter.com/fullname”," “tunkrank.com/score”," “ntoll/met”," “terrycojones/met”," “python.org/member”," “ub.edu/alumni”," “ub.edu/bsc”," “uoc.edu/msc”," ... etc ...]}
Tags attached to the “about:esteve” object.
It’s also possible to find information by interrogating an interesting object for all the tags that are attached to it (that you are allowed to read).
https://fluiddb.fluidinfo.com/objects/OBJECT_ID/NAMESPACE(s)/TAG
HTTP ‘GET’ returns the value, HTTP ‘PUT’ adds/updates it etc...
Full API: http://api.fluidinfo.com/
A RESTful API
FluidDB has an elegant and flexible API for application developers. End users create an account on FluidDB but use applications to access, update, search and annotate FluidDB.
Lots of FOSS client libraries:http://fluidinfo.com/developers/libs
Data becomes social!
Openly writable objects are tagged with data from lots of different sources.
ntoll
ceronman
timoreilly
aliafshar
esteve
terrycojones
fluidinfo
scoble
gfcampbell edyson
peacelily
widget
FOM
FOM
northackton
fluidinfo/staff
fluidinfo
/staff
fluidinfo/staff
fluidinfo/staff
fluidinfo
/staff
fluidinfo/investor fluidinfo/investor
nort
hack
ton/
mem
ber
northackton/member
ntoll/met
ntoll/met
ntoll/met
terrycojones/met
terrycojones/met
terrycojones/met
terrycojones/met
scoble
/blogge
d
widget/owns
fom
/dev
elop
er
fom/developer
ntoll/met
fom/user
fom/user
Some user objects...
ceronman
timoreilly
aliafshar
terrycojones
fluidinfo
edyson
peacelily
fluidinfo/staff
fluidinfo
/staff
fluidinfo/staff
fluidinfo/staff
fluidinfo/investor fluidinfo/adviso
r
ntoll/met
ntoll/met
terrycojones/met
terrycojones/met
terrycojones/met
scoble
/blogge
d
fom/developer
fom/user
nivi
terrycojones/met
Esther Dyson http://edventure.com/
http://www.flickr.com/photos/stewtopia/1413191259/
edyson
Where Google explores the digital world as it is, Fluidinfo is more of a distributed intellectual
construction tool. Basically, it's a new kind of database for open, typed data without the overhead of the "ontology" companies, along with a new kind of search engine. It's along the lines of
Metaweb but more flexible, with a very different model of data ownership, and with more focus on regular
people as end users.
A really good summary.