FluidDB in a Nutshell

21
http://www.flickr.com/photos/max78/104677840/ FluidDB in a Nutshell

description

A short (revised) version of FluidDB in a Nutshell with some notes attached.

Transcript of FluidDB in a Nutshell

Page 1: FluidDB in a Nutshell

http://www.flickr.com/photos/max78/104677840/

FluidDBin a

Nutshell

Page 2: FluidDB in 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...

Page 3: FluidDB in a Nutshell

Key Concepts• Objects - represent things*

• Tags - define objects’ attributes

• Namespaces - organise tags

• Permissions - control access

* Not in the object oriented sense of “object”.

Page 4: FluidDB in a Nutshell

Objects are simply tagged with informationhttp://ntoll.org/images/93.jpg

Page 5: FluidDB in a Nutshell

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).

Page 6: FluidDB in a Nutshell

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.

Page 7: FluidDB in a Nutshell

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.

Page 8: FluidDB in a Nutshell

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.

Page 9: FluidDB in a Nutshell

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...

Page 10: FluidDB in a Nutshell

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...

Page 11: FluidDB in a Nutshell

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.

Page 12: FluidDB in a Nutshell

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.

Page 13: FluidDB in a Nutshell

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).

Page 14: FluidDB in a Nutshell

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.

Page 15: FluidDB in a Nutshell

{“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).

Page 16: FluidDB in a Nutshell

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.

Page 17: FluidDB in a Nutshell

Lots of FOSS client libraries:http://fluidinfo.com/developers/libs

Page 18: FluidDB in a Nutshell

Data becomes social!

Openly writable objects are tagged with data from lots of different sources.

Page 19: FluidDB in a Nutshell

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...

Page 20: FluidDB in a Nutshell

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.

Page 21: FluidDB in a Nutshell

http://fluidinfo.com/