fluidinfo in a nutshell

36
http://www.flickr.com/photos/max78/104677840/ Fluidinfo in a Nutshell

Upload: fluidinfo

Post on 22-Apr-2015

7.394 views

Category:

Technology


1 download

DESCRIPTION

Introducing key concepts and use cases for Fluidinfo.

TRANSCRIPT

Page 1: Fluidinfo in a Nutshell

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

Fluidinfoin a

Nutshell

Page 2: Fluidinfo in a Nutshell

Fluidinfo is an openly writeable hosted service for

storing, sharing, searching and annotating data.

While this is accurate, it’s not the whole story...

Page 3: Fluidinfo in a Nutshell

•Simple & easy•Openly writeable• Intuitively searchable •No pre-defined schema•Maintain ownership & control

Fluidinfo aims:

So what motivates us..?

Page 4: Fluidinfo 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 5: Fluidinfo in a Nutshell

Objects are tagged with information

http://ntoll.org/images/93.jpg

Page 6: Fluidinfo 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 their own top-level namespace. Every namespace and tag is itself represented by an object (facilitating meta-tagging).

Page 7: Fluidinfo in a Nutshell

Namespaces/tags

ntoll/ratingterrycojones/books/reviewamazon.com/book/titleamazon.com/book/authoramazon.com/book/isbnesteve/books/covertimoreilly/has_read

Trusted domain

Good reputation

Namespaces link domains to data and create trust. Users whose username is a domain name must own the domain in question (so only Amazon could use the namespace amazon.com).

Page 8: Fluidinfo in a Nutshell

Namespaces/tags

ntoll/ratingterrycojones/books/reviewamazon.com/book/titleamazon.com/book/authoramazon.com/book/isbnesteve/books/covertimoreilly/has_read

Who the hell..?

Seems like a nice guy

Dodgy geezer

Domains on data allow you to make a judgement on reliability.

Page 9: Fluidinfo in a Nutshell

An object

about = “book: Dune”

id =“e127475b-eb93-48e1-a24f-dde6825b9ed8”

Objects (in Fluidinfo) 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 10: Fluidinfo 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 identified by the about tag value.

Page 11: Fluidinfo 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 12: Fluidinfo in a Nutshell

primitive = JSON

Simple

Page 13: Fluidinfo in a Nutshell

image/png

Really simple.

Page 14: Fluidinfo 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 we want to make Fluidinfo openly writeable. So we do something different...

Page 15: Fluidinfo 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 16: Fluidinfo in a Nutshell

Permissions apply to namespaces, tags and values. Users retain control of their data.

Fluidinfo stays writeable.

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 17: Fluidinfo in a Nutshell

Fluidinfo is the database with the heart

of a wiki

Nivi http://venturehacks.com/

Sort of... :-) A wiki is openly writable just like Fluidinfo.

Page 18: Fluidinfo in a Nutshell

As Wikipedia is to traditional encyclopaedias so Fluidinfo is to traditional databases.

But a wiki doesn’t have permissions to facilitate privacy and ownership, a query language like a database, nor does it provide an instant API for data.

Page 19: Fluidinfo in a Nutshell

An instant API for data..? A simple way to share and re-use data..?

Page 20: Fluidinfo 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

Fluidinfo has an simple and consistent API for application developers. End users create an account on Fluidindo but use applications to access, update, search and annotate Fluidinfo.

Page 21: Fluidinfo in a Nutshell

Simply by importing data various organisations and cultural artefacts (The Bible) now have an API.

Page 22: Fluidinfo in a Nutshell

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

Fluidinfo has a simple yet powerful query language (so simple, it fits on this slide) that can be used to extract data.

Page 23: Fluidinfo in a Nutshell

has boingboing.net/authors/markfrauenfelder and boingboing.net/year=2010

A BoingBoing.net example. All the articles Mark wrote in 2010.

Page 24: Fluidinfo in a Nutshell

>>> headers, body = fluidinfo.call('GET', '/values', tags=['boingboing.net/title', 'boingboing.net/created_on','boingboing.net/categories'], query="has boingboing.net/authors/markfrauenfelder and boingboing.net/year=2010")

Using a Python based client library (notice how I specify which tag values to return)

Page 25: Fluidinfo in a Nutshell

https://fluiddb.fluidinfo.com/values?query=has+boingboing.net%2Fauthors%2Fmarkfrauenfelder+and+boingboing.net%2Fyear%3D2010&tag=boingboing.net%2Ftitle&tag=boingboing.net%2Fcreated_on&tag=boingboing.net%2Fcategories

The client library makes a call to this URL...

Page 26: Fluidinfo in a Nutshell

{  "results": {    "id": {      "f2976562-eba6-47e4-94a1-b36ffe9a2ab1": {        "boingboing.net/created_on": {          "value": "2010-10-14 13:14:14"        },         "boingboing.net/categories": {          "value": [            "science",             "technology",             "art and design",             "design"          ]        },         "boingboing.net/title": {          "value": "TED releases iPad app today"        }      },       // etc... for lots of results    }  }}

You get a JSON dictionary back.

Page 27: Fluidinfo in a Nutshell

WHERE location NEAR pubs SERVING

SELECT self-catering-cottage FROM

AND pub HAS rating > 7 IN

Another example... It’s currently NOT possible to create queries like this on the web. Data is stored in walled gardens behind websites. Fluidinfo is different because data is stored in context (i.e. it’s tagged to a shared object).

Page 28: Fluidinfo in a Nutshell

WHERE location NEAR pubs SERVING

SELECT self-catering-cottage FROM

AND pub HAS rating > 7 IN

IMPOSS

IBLE

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 29: Fluidinfo in a Nutshell

has boingboing.net/mentioned and has readwriteweb.com/mentioned and has unionsquareventures.com/portfolio

Which USV companies have been mentioned in articles on BoingBoing.net and ReadWriteWeb..?

Page 30: Fluidinfo in a Nutshell

http://www.twitter.comhttp://www.etsy.comhttp://www.boxee.tvhttp://www.meetup.com

objects about:

Objects whose about value is a domain have all been annotated with USV, BoingBoing and RWW information. We found four matches relating to four companies.

Page 31: Fluidinfo in a Nutshell

{u'boingboing.net/mentioned':     {u'value': [u'http://boingboing.net/2009/11/06/vampireotherkinenerg.html',                     u'http://boingboing.net/2010/01/11/ny-times-on-urban-ca.html',                     u'http://boingboing.net/2010/10/26/ron-paul-supporter-w.html',                     u'http://boingboing.net/2002/06/27/meetup-meatspace-cam.html',                     u'http://boingboing.net/2004/03/17/wired-rave-awards.html',                     u'http://boingboing.net/2006/01/05/net-pug-nabbed-by-cr.html']},u'fluiddb/about':     {u'value': u'http://www.meetup.com'},u'readwriteweb.com/mentioned':     {u'value':  [u'http://www.readwriteweb.com/archives/meetup_the_secret_campaign_weapon.php']}}

And we can ask Fluidinfo to return what those articles were... (the values of the mentioned tags). Here’s the result for the object about http://www.meetup.com

Page 32: Fluidinfo 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 33: Fluidinfo in a Nutshell

object-centred-social

In conclusion, openly writable objects are tagged with data from lots of different sources.

Page 34: Fluidinfo 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

A network of annotated data arises.

Page 35: Fluidinfo 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 36: Fluidinfo in a Nutshell

http://fluidinfo.com/