TeamStation AI System Report LATAM IT Salaries 2024
FluidDB in a Nutshell
1. FluidDB
in a
Nutshell
http://www.flickr.com/photos/max78/104677840/
2. FluidDB is an openly
writable hosted service
for storing, sharing,
searching and annotating
data.
While this is accurate, it’s not the whole story...
3. Key Concepts
• Objects - represent things*
• Tags - define objects’ attributes
• Namespaces - organise tags
• Permissions - control access
* Not in the object oriented sense of “object”.
5. 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
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).
6. Objects (in FluidDB)
represent things
Every object has a unique ID
about = An id =
“book: Dune” object “e127475b-eb93-48e1-a24f-dde6825b9ed8”
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.
7. r=
ove
/c
ks
oo
ntoll/
b
ve/
te
es
rating
am
azo
n.c
“87 om/b
- 41 o
=
8-7 oks/i
517 sbn
5
- 6” =
about = An id =
“book:Dune” object “e127475b-eb93-48e1-a24f-
= am
az
v iew on
/re s”
r=
timoreill
s .c
om
ok rm
er tho
/bo wo “D /bo
nes and un ok
1973/08
erb s/au
ojo ve s e” s/t
t”
it
ryc I lo
y/has_re
k H ok
le
ter “ =
ran /bo
/19
“F om
n.c
ad =
azo
am
Different users tag data to the object. Their data is given a context by being attached to the
same object.
8. r=
ove
/c
ks
oo
ntoll/
Numbers ve/
b
te
es
rating
am
azo
n.c
om
874 /bo
=
187 oks
517 /isbn
5
6 = Images
about = An id =
“book:Dune” object “e127475b-eb93-48e1-a24f-
= am
az
v iew on
/re s”
r=
timoreill
s .c
om
ok rm
er tho
/bo wo “D /bo
nes and un ok
1973/08
erb s/au
ojo ve s e” s/t
t”
it
ryc I lo
y/has_re
k H ok
le
ter “ =
ran /bo
/19
“F om
n.c
ad =
azo
Text Date/Time
am
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.
9. r=
ove
/c
ks
oo
ntoll/
b
ve/
te
es
rating
am
azo
n.c
“87 om/b
- 41 o
=
8-7 oks/i
517 sbn
5
- 6” =
about = An id =
“book:Dune” object “e127475b-eb93-48e1-a24f-
= am
az
v iew on
/re s”
r=
timoreill
s .c
om
ok rm
er tho
/bo wo “D /bo
nes and un ok
1973/08
erb s/au
ojo ve s e” s/t
t”
it
ryc I lo
y/has_re
k H ok
le
ter “ =
ran /bo
/19
“F om
n.c
ad =
azo
am
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...
10. r=
ove
/c
ks
oo
ntoll/
b
ve/
te
es
rating
am
azo
n.c
“87 om/b
- 41 o
=
8-7 oks/i
517 sbn
5
- 6” =
about = An id =
“book:Dune” object “e127475b-eb93-48e1-a24f-
= am
az
v iew on
/re s”
r=
timoreill
s .c
om
ok rm
er tho
/bo wo “D /bo
nes and un ok
1973/08
erb s/au
ojo ve s e” s/t
t”
it
ryc I lo
y/has_re
k H ok
le
ter “ =
ran /bo
/19
“F om
n.c
ad =
azo
am
...we move the location of the permissions...
11. 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.
12. 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.
13. SELECT self-catering-cottage FROM
WHERE location NEAR pubs SERVING
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).
14. 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.
15. 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 ...
]}
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).
16. 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 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.
17. Lots of FOSS client libraries:
http://fluidinfo.com/developers/libs
19. northac
kton/m
ember
terryco
jones/m
nto
et
ll/m
et
ff ntoll northackton
per
/sta
nfo scoble
lo
i
uid
eve
fl
d
ntoll/met
fom/
fom/ d
user taf
f
esteve gge
s
widget fo/ blo
in l e/
fluid co
b
er
s
b
em
flui
ceronman din
n/m
fo/s
taff
kto
nt
widget/owns
oll
fluid
c
/m
tha
terr
et
info/st
nor
peacelily
fluidinfo fom
yco
fom /de
velo
aff
FOM
jon
/us per
e r
es/m
te
rr
et
y co
FOM
jon
ff
nfo/sta
fluidi
es
aliafshar
/m
e
/me t
t
ntoll
terrycojones
r
terrycojones/met ve sto timoreilly
estor fo/in
fluidi nfo/inv idin
flu
gfcampbell edyson
Some user objects...
20. i
flu sc
o
flui
ceronman din
Where Google explores the
fo/s
taff
nt
digital world as it is, Fluidinfo is
oll
flu
/m
idinfo/
more of a distributed intellectual
terr
et
peacelily
fluidinfo fom construction tool. Basically, it's a new
yco
/de
staff
m/ velo
jon
use per kind of database for open, typed data
r
es/m
without the overhead of the "ontology"
et
te
rr companies, along with a new kind of
ff
y
o/sta
co
jon
es fluidi
nf search engine. It's along the lines of
aliafshar
met Metaweb but more flexible, with a very
/m
et
terrycojones different model of data ownership,
and with more focus on regular
r
ojones/met iso timoreilly
v people as end users.
estor /ad
nfo/inv nfo
di
fluidi flui
edyson
terry
cojon
es/m
et
edyson
Esther Dyson nivi
http://edventure.com/
http://www.flickr.com/photos/stewtopia/1413191259/
A really good summary.