SlideShare una empresa de Scribd logo
1 de 43
Descargar para leer sin conexión
Using FluidDB with Django
     (making data “social” with FluidDB).


            Nicholas Tollervey
           ntoll@fluidinfo.com
The Agenda:

  What?
   Why?
   How?
  Where?
  Django?
What?
FluidDB is a platform
 for the web of things,
each represented by an
openly writable “social”
         object.
http://www.flickr.com/photos/psd/1428129861/
Why?
http://www.flickr.com/photos/jointhedots/4622191119/
People I know
SELECT self-catering-cottage FROM


WHERE location NEAR pubs SERVING




   AND pub HAS rating > 7 IN
Share, annotate, augment
 and re-use information.
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
http://ntoll.org/images/93.jpg
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
about =      An                        id =
                       “e127475b-eb93-48e1-a24f-dde6825b9ed8”
“book:Dune”   object
r=
                                                                                               ove
                                                                                            /c
                                                                                          ks
                                                                                        oo




                                      ntoll/
                                                                                      b
                                                                                   ve/
                                                                                 te
                                                                               es




                                            rating
    am
       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                                                                   .c
                                                                                       om
                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                                                                                     itle
                          k H ok




ter “                                                                                                   =
                      ran /bo
                    “F om




                                                                        ad
                      n.c
                   azo
                am
r=
                                                                                               ove
                                                                                            /c
                                                                                          ks
                                                                                        oo




                                      ntoll/
                                                                                      b
                                                                                   ve/
                                                                                 te
                                                                               es




                                            rating
    am
       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                                                                   .c
                                                                                       om
                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                                                                                     itle
                          k H ok




ter “                                                                                                   =   string (& set)
                      ran /bo
                    “F om




                                                                                                            numeric
                                                                        ad
                      n.c




                                                                                                            opaque
                   azo
                am




                                                                                                            null
snoissimreP
 (seem to be back-to-front)
r=
Traditional:                                                                              oo
                                                                                            ks
                                                                                              /c
                                                                                                 ove




                                        ntoll/
                                                                                        b
                                                                                     ve/
                                                                                   te
                                                                                 es




                                              rating
      am
         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                                                                   .c
                                                                                         om
                  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                                                                                     itle
                            k H ok




  ter “                                                                                                   =
                        ran /bo
                      “F om




                                                                          ad
                        n.c
                     azo
                  am
r=
FluidDB:                                                                                 ks
                                                                                           /c
                                                                                              ove




                                       ntoll/
                                                                                     b oo
                                                                                  ve/
                                                                                te




                                             rating
     am                                                                       es
        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
                       view                                                       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                                                                                   itle
                           k H ok




                                                                 y/has_re




 ter “                                                                                                 =
                       ran /bo
                     “F om
                       n.c




                                                                ad
                    azo
                 am
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
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).
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 ...
    ]}
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/*/*/*
Social data?
http://www.flickr.com/photos/8001265@N08/2259250324/




Let me demonstrate!
Where?
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)
Django?
http://github.com/fluidinfo/django-fluiddb
Familiar Models

from django_fluiddb import models

class Foo(models.Model):
    bar = models.CharField(‘test/namespace/bar_tag’)
    baz = models.IntegerField(‘test/namespace/baz_tag’)
Familiar Forms

from django_fluiddb.forms import ModelForm

class FooForm(ModelForm):
    class Meta:
        model = Foo
It’s only the FOM underneath
   http://bitbucket.org/aafshar/fom-main/
We’re listening to you
  though the usual caveats apply ;-)
Questions..?

Más contenido relacionado

Similar a Using FluidDB with Django

Gourmet Snacks Brochure
Gourmet Snacks BrochureGourmet Snacks Brochure
Gourmet Snacks Brochure
bogoblue
 

Similar a Using FluidDB with Django (10)

An Introduction to FluidDB
An Introduction to FluidDBAn Introduction to FluidDB
An Introduction to FluidDB
 
Plant hormone and responses
Plant hormone and responsesPlant hormone and responses
Plant hormone and responses
 
Gourmet Snacks Brochure
Gourmet Snacks BrochureGourmet Snacks Brochure
Gourmet Snacks Brochure
 
2010 Ram 2500 Buffalo
2010 Ram 2500 Buffalo2010 Ram 2500 Buffalo
2010 Ram 2500 Buffalo
 
Save Publishing
Save PublishingSave Publishing
Save Publishing
 
bad architects group - selection
bad architects group - selection bad architects group - selection
bad architects group - selection
 
2010 Ram 3500 Buffalo
2010 Ram 3500 Buffalo2010 Ram 3500 Buffalo
2010 Ram 3500 Buffalo
 
Crowdsourcing Citizen Science Data Quality with a Human-Computer Learning Net...
Crowdsourcing Citizen Science Data Quality with a Human-Computer Learning Net...Crowdsourcing Citizen Science Data Quality with a Human-Computer Learning Net...
Crowdsourcing Citizen Science Data Quality with a Human-Computer Learning Net...
 
Drupal Optimization
Drupal OptimizationDrupal Optimization
Drupal Optimization
 
The 21st Century Mapping Agency
The 21st Century Mapping AgencyThe 21st Century Mapping Agency
The 21st Century Mapping Agency
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 

Using FluidDB with Django

  • 1. Using FluidDB with Django (making data “social” with FluidDB). Nicholas Tollervey ntoll@fluidinfo.com
  • 2. The Agenda: What? Why? How? Where? Django?
  • 4. FluidDB is a platform for the web of things, each represented by an openly writable “social” object.
  • 9. SELECT self-catering-cottage FROM WHERE location NEAR pubs SERVING AND pub HAS rating > 7 IN
  • 10. Share, annotate, augment and re-use information.
  • 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
  • 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
  • 19. about = An id = “e127475b-eb93-48e1-a24f-dde6825b9ed8” “book:Dune” object
  • 20. r= ove /c ks oo ntoll/ b ve/ te es rating am 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 .c om 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 itle k H ok ter “ = ran /bo “F om ad n.c azo am
  • 21. r= ove /c ks oo ntoll/ b ve/ te es rating am 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 .c om 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 itle k H ok ter “ = string (& set) ran /bo “F om numeric ad n.c opaque azo am null
  • 22. snoissimreP (seem to be back-to-front)
  • 23. r= Traditional: oo ks /c ove ntoll/ b ve/ te es rating am 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 .c om 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 itle k H ok ter “ = ran /bo “F om ad n.c azo am
  • 24. r= FluidDB: ks /c ove ntoll/ b oo ve/ te rating am es 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 view 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 itle k H ok y/has_re ter “ = ran /bo “F om n.c ad azo am
  • 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
  • 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).
  • 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 ... ]}
  • 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/*/*/*
  • 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)
  • 39. Familiar Models from django_fluiddb import models class Foo(models.Model): bar = models.CharField(‘test/namespace/bar_tag’) baz = models.IntegerField(‘test/namespace/baz_tag’)
  • 40. Familiar Forms from django_fluiddb.forms import ModelForm class FooForm(ModelForm): class Meta: model = Foo
  • 41. It’s only the FOM underneath http://bitbucket.org/aafshar/fom-main/
  • 42. We’re listening to you though the usual caveats apply ;-)