4. FluidDB is a platform
for the web of things,
each represented by an
openly writable “social”
object.
But what is an openly writable social object..?
8. People I know
Often you have to duplicate information in each of the different walled gardens.
9. SELECT self-catering-cottage FROM
WHERE location NEAR pubs SERVING
AND pub HAS rating > 7 IN
And you usually can’t request information that combines data from the different walled
gardens. For example, selecting all the self-catering cottages endorsed by the Cornish
Tourist Board that are close to good pubs that serve my favourite beer. So how is FluidDB
different..?
10. Share, annotate, augment
and re-use information.
At Fluidinfo we want to make it much easier to share, annotate, augment and re-use
information. FluidDB is designed to make this possible.
18. Namespaces/Tags
ntoll/rating
terrycojones/books/review
amazon.com/book/title
amazon.com/book/author
amazon.com/book/isbn
esteve/books/cover
timoreilly/has_read
Namespaces and tags are pre-defined by users and applications. When you sign up for
FluidDB you’re assigned a namespace corresponding to your username. Every namespace and
tag can have a description and is itself represented by an object within FluidDB so meta-
tagging is possible.
19. about = An id =
“e127475b-eb93-48e1-a24f-dde6825b9ed8”
“book:Dune” object
Every FluidDB object has a Universally Unique ID (this allows applications to operate on a
specific object) and an optional unique “about” tag that can be used to indicate what the
object represents.
20. r=
ove
/c
ks
oo
ntoll/
b
e/
ev
st
rating
am e
azo
n.c
“87 om/b
- 41 ook
=
8-7
517 s/isbn
5
- 6” =
about = An id =
“e127475b-eb93-48e1-a24f-dde6825b9ed8”
“book:Dune” object
= am
az
iew on
timoreill
v
/re s”
r=
s .com
ok rm
er tho
/bo wo “D /bo
nes and un ok
erb s/au
ojo ve s e” s/t
t”
y/has_re
ryc I lo it
k H ok
le
ter “ =
ran /bo
“F om
ad
n.c
azo
am
21. r=
ove
/c
ks
oo
ntoll/
b
e/
ev
st
rating
am e
azo
n.c
“87 om/b
- 41 ook
=
8-7
517 s/isbn
5
- 6” =
about = An id =
“e127475b-eb93-48e1-a24f-dde6825b9ed8”
“book:Dune” object
= am
az
iew on
timoreill
v
/re s”
r=
s .com
ok rm
er tho
/bo wo “D /bo
nes and un ok boolean
erb s/au
ojo ve s e” s/t
t”
y/has_re
ryc I lo it
k H ok
le
ter “ = string (& set)
ran /bo
“F om
numeric
ad
n.c
opaque
azo
am
null
There are two “types” of information: primitive (boolean, string, numeric, null etc...) and
opaque (that have an associated mime-type).
22. snoissimreP(seem to be back-to-front)
How does FluidDB ensure that users and applications retain control over their information..?
23. r=
Traditional: oo
ks
/c
ove
ntoll/
b
e/
ev
st
rating
am e
azo
n.c
“87 om/b
- 41 ook
=
8-7
517 s/isbn
5
- 6” =
about = id =
“e127475b-eb93-48e1-a24f-dde6825b9ed8”
“book:Dune”
= am
az
iew on
timoreill
v
/re s”
r=
s .com
ok rm
er tho
/bo wo “D /bo
nes and un ok
erb s/au
ojo ve s e” s/t
t”
y/has_re
ryc I lo it
k H ok
le
ter “ =
ran /bo
“F om
ad
n.c
azo
am
The traditional mechanism is to control the thing being written to: a database table or
document for example. But FluidDB’s aim is to make the world writeable so Objects have no
owners or associated permissions.
24. r=
FluidDB: ks
/c
ove
ntoll/
b oo
e/
ev
st
rating
am e
azo
n.c
“87 om/b
=
- 41 ook
8-7
517 s/isbn
5
- 6” =
about = An id =
“e127475b-eb93-48e1-a24f-dde6825b9ed8”
“book:Dune” object
= am
az
v iew on
/re s” .c
r=
timoreill
s om
ok rm
er tho
/bo wo “D /bo
nes and un ok
erb s/au
ojo ve s e” s/t
t”
ryc I lo it le
k H ok
y/has_re
ter “ =
ran /bo
“F om
n.c
ad
azo
am
Permissions only apply to the namespaces, tags and tag-values. Therefore users and
applications retain control over who sees, reads, writes or creates data without inhibiting the
writability of FluidDB.
27. Permissions
• Apply to namespaces, tags and tag-values not objects
• Scoped by actions (e.g. “see”, “create”, “read”)
• Either “open” or “closed” with a list of exceptions
It’s a bit like the unix filesystem where permissions on directories and files are also scoped
by action (read, write and execute) and apply to specific users or groups.
28. 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).
Use the very simple query language to search for information. The current specification fits
onto this slide.
29. Tags attached to the “about:esteve” object.
{“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 ...
]}
Another way to find information is to ask FluidDB for tags that are attached to interesting
objects.
30. A RESTful API
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/fluidDB/api/*/*/*
Users and applications interact with FluidDB via a RESTful HTTP API.
31. Social data?
But what exactly do we mean by social data? Let’s look at a few examples:
A high-level, non-technical overview of the concepts behind FluidDB
...is FluidDB
But what is an openly writable social object..?
An example of an openly “writable” social object in the real world. FluidDB just allows this in the digital world.
Most interesting information is currently in walled gardens sitting in databases behind applications, APIs or in weird proprietary formats.
Often you have to duplicate information in each of the different walled gardens.
And you usually can’t request information that combines data from the different walled gardens. For example, selecting all the self-catering cottages endorsed by the Cornish Tourist Board that are close to good pubs that serve my favourite beer. So how is FluidDB different..?
At Fluidinfo we want to make it much easier to share, annotate, augment and re-use information. FluidDB is designed to make this possible.
FluidDB is conceptually very simple.
Openly writable objects are simply tagged with information.
Namespaces and tags are pre-defined by users and applications. When you sign up for FluidDB you’re assigned a namespace corresponding to your username. Every namespace and tag can have a description and is itself represented by an object within FluidDB so meta-tagging is possible.
Every FluidDB object has a Universally Unique ID (this allows applications to operate on a specific object) and an optional unique “about” tag that can be used to indicate what the object represents.
There are two “types” of information: primitive (boolean, string, numeric, null etc...) and opaque (that have an associated mime-type).
How does FluidDB ensure that users and applications retain control over their information..?
The traditional mechanism is to control the thing being written to: a database table or document for example. But FluidDB’s aim is to make the world writeable so Objects have no owners or associated permissions.
Permissions only apply to the namespaces, tags and tag-values. Therefore users and applications retain control over who sees, reads, writes or creates data without inhibiting the writability of FluidDB.
It’s a bit like the unix filesystem where permissions on directories and files are also scoped by action (read, write and execute) and apply to specific users or groups.
Use the very simple query language to search for information. The current specification fits onto this slide.
Another way to find information is to ask FluidDB for tags that are attached to interesting objects.
Users and applications interact with FluidDB via a RESTful HTTP API.
But what exactly do we mean by social data? Let’s look at a few examples:
Tickery, WeMetAt, TunkRank.
...can you find out more information and get involved?