SlideShare a Scribd company logo
1 of 38
Download to read offline
An Introduction to
     FluidDB
  (A social database in the cloud).

       Nicholas Tollervey
      ntoll@fluidinfo.com




                              http://fluidinfo.com/
The Agenda:

                                   What?
                                   Why?
                                   How?
                                   Where?

A high-level, non-technical overview of the concepts behind FluidDB
What?
...is FluidDB
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..?
http://www.flickr.com/photos/psd/1428129861/




An example of an openly “writable” social object in the real world. FluidDB just allows this in
the digital world.
Why?
http://www.flickr.com/photos/jointhedots/4622191119/




Most interesting information is currently in walled gardens sitting in databases behind
applications, APIs or in weird proprietary formats.
People I know




Often you have to duplicate information in each of the different walled gardens.
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..?
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.
How?
There is only one
FluidDB. All users and
applications share the
    same database.
• Objects - represent things
                  • Tags - define objects’ attributes
                  • Namespaces - organise tags
                  • Permissions - control access


FluidDB is conceptually very simple.
http://ntoll.org/images/93.jpg



Openly writable objects are simply tagged with information.
Data Structure


entity / attribute / value
Data Structure


object / tag / value
   (in FluidDB parlance)
Data Structure


object / tag / value
              (optional)
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.
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.
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
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).
snoissimreP(seem to be back-to-front)




How does FluidDB ensure that users and applications retain control over their information..?
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.
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.
You control who can see,
 read or use your tags.
http://www.flickr.com/photos/fixe/3415776837/



Anyone can tag information
      to an object.
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.
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.
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.
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.
Social data?



But what exactly do we mean by social data? Let’s look at a few examples:
http://www.flickr.com/photos/8001265@N08/2259250324/




            Let me demonstrate!
Tickery, WeMetAt, TunkRank.
Where?
...can you find out more information and get involved?
http://fluidinfo.com/
• Twitter: @fluidDB @terrycojones @esteve & @ntoll
• http://youtube.com/fluiddb
• #fluiddb on Freenode IRC
• http://groups.google.com/group/fluiddb-users
• http://groups.google.com/group/fluiddb-discuss
Lots of 3rd party libraries:

http://fluidinfo.com/developers/libs


 Java, Clojure, Lisp, .NET, Perl, Python, Ruby, PHP &
             Javascript (all open-source)
We’re listening to you
                    though the usual caveats apply ;-)




Tell us what you think!
Questions..?

More Related Content

Similar to An Introduction to FluidDB

Zen and-the-art-of-build-script-maintenance-skillsmatter
Zen and-the-art-of-build-script-maintenance-skillsmatterZen and-the-art-of-build-script-maintenance-skillsmatter
Zen and-the-art-of-build-script-maintenance-skillsmatterSkills Matter
 
Save Publishing
Save PublishingSave Publishing
Save PublishingPaul Ford
 
Open Business @ DMY Berlin 2011 - MakerLab
Open Business @ DMY Berlin 2011 - MakerLabOpen Business @ DMY Berlin 2011 - MakerLab
Open Business @ DMY Berlin 2011 - MakerLabMassimo Menichinelli
 
Science publishing, record keeping, knowledge transfer
Science publishing, record keeping, knowledge transferScience publishing, record keeping, knowledge transfer
Science publishing, record keeping, knowledge transfervelterop
 
On Open Business @ EDUfashion conference - Ljubljana 02/06/2011
On Open Business @ EDUfashion conference - Ljubljana 02/06/2011On Open Business @ EDUfashion conference - Ljubljana 02/06/2011
On Open Business @ EDUfashion conference - Ljubljana 02/06/2011Massimo Menichinelli
 

Similar to An Introduction to FluidDB (7)

Using FluidDB with Django
Using FluidDB with DjangoUsing FluidDB with Django
Using FluidDB with Django
 
Zen and-the-art-of-build-script-maintenance-skillsmatter
Zen and-the-art-of-build-script-maintenance-skillsmatterZen and-the-art-of-build-script-maintenance-skillsmatter
Zen and-the-art-of-build-script-maintenance-skillsmatter
 
Jan Velterop: Science publishing: the different interests of record keeping a...
Jan Velterop: Science publishing: the different interests of record keeping a...Jan Velterop: Science publishing: the different interests of record keeping a...
Jan Velterop: Science publishing: the different interests of record keeping a...
 
Save Publishing
Save PublishingSave Publishing
Save Publishing
 
Open Business @ DMY Berlin 2011 - MakerLab
Open Business @ DMY Berlin 2011 - MakerLabOpen Business @ DMY Berlin 2011 - MakerLab
Open Business @ DMY Berlin 2011 - MakerLab
 
Science publishing, record keeping, knowledge transfer
Science publishing, record keeping, knowledge transferScience publishing, record keeping, knowledge transfer
Science publishing, record keeping, knowledge transfer
 
On Open Business @ EDUfashion conference - Ljubljana 02/06/2011
On Open Business @ EDUfashion conference - Ljubljana 02/06/2011On Open Business @ EDUfashion conference - Ljubljana 02/06/2011
On Open Business @ EDUfashion conference - Ljubljana 02/06/2011
 

Recently uploaded

A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 

An Introduction to FluidDB

  • 1. An Introduction to FluidDB (A social database in the cloud). Nicholas Tollervey ntoll@fluidinfo.com http://fluidinfo.com/
  • 2. The Agenda: What? Why? How? Where? A high-level, non-technical overview of the concepts behind FluidDB
  • 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..?
  • 5. http://www.flickr.com/photos/psd/1428129861/ An example of an openly “writable” social object in the real world. FluidDB just allows this in the digital world.
  • 7. http://www.flickr.com/photos/jointhedots/4622191119/ Most interesting information is currently in walled gardens sitting in databases behind applications, APIs or in weird proprietary formats.
  • 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.
  • 11. How?
  • 12. There is only one FluidDB. All users and applications share the same database.
  • 13. • Objects - represent things • Tags - define objects’ attributes • Namespaces - organise tags • Permissions - control access FluidDB is conceptually very simple.
  • 14. http://ntoll.org/images/93.jpg Openly writable objects are simply tagged with information.
  • 15. Data Structure entity / attribute / value
  • 16. Data Structure object / tag / value (in FluidDB parlance)
  • 17. Data Structure object / tag / value (optional)
  • 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.
  • 25. You control who can see, read or use your tags.
  • 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:
  • 32. http://www.flickr.com/photos/8001265@N08/2259250324/ Let me demonstrate! Tickery, WeMetAt, TunkRank.
  • 33. Where? ...can you find out more information and get involved?
  • 35. • Twitter: @fluidDB @terrycojones @esteve & @ntoll • http://youtube.com/fluiddb • #fluiddb on Freenode IRC • http://groups.google.com/group/fluiddb-users • http://groups.google.com/group/fluiddb-discuss
  • 36. Lots of 3rd party libraries: http://fluidinfo.com/developers/libs Java, Clojure, Lisp, .NET, Perl, Python, Ruby, PHP & Javascript (all open-source)
  • 37. We’re listening to you though the usual caveats apply ;-) Tell us what you think!

Editor's Notes

  1. A high-level, non-technical overview of the concepts behind FluidDB
  2. ...is FluidDB
  3. But what is an openly writable social object..?
  4. An example of an openly “writable” social object in the real world. FluidDB just allows this in the digital world.
  5. Most interesting information is currently in walled gardens sitting in databases behind applications, APIs or in weird proprietary formats.
  6. Often you have to duplicate information in each of the different walled gardens.
  7. 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..?
  8. At Fluidinfo we want to make it much easier to share, annotate, augment and re-use information. FluidDB is designed to make this possible.
  9. FluidDB is conceptually very simple.
  10. Openly writable objects are simply tagged with information.
  11. 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.
  12. 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.
  13. There are two “types” of information: primitive (boolean, string, numeric, null etc...) and opaque (that have an associated mime-type).
  14. How does FluidDB ensure that users and applications retain control over their information..?
  15. 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.
  16. 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.
  17. 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.
  18. Use the very simple query language to search for information. The current specification fits onto this slide.
  19. Another way to find information is to ask FluidDB for tags that are attached to interesting objects.
  20. Users and applications interact with FluidDB via a RESTful HTTP API.
  21. But what exactly do we mean by social data? Let’s look at a few examples:
  22. Tickery, WeMetAt, TunkRank.
  23. ...can you find out more information and get involved?
  24. Tell us what you think!