Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Using FluidDB with Django

2,052 views

Published on

Slides from my introductory talk to the Django User Group: London (DJUGL) talk in July 2010 at the Guardian.

Published in: Technology
  • Login to see the comments

  • Be the first to like this

Using FluidDB with Django

  1. 1. Using FluidDB with Django (making data “social” with FluidDB). Nicholas Tollervey ntoll@fluidinfo.com
  2. 2. The Agenda: What? Why? How? Where? Django?
  3. 3. What?
  4. 4. FluidDB is a platform for the web of things, each represented by an openly writable “social” object.
  5. 5. http://www.flickr.com/photos/psd/1428129861/
  6. 6. Why?
  7. 7. http://www.flickr.com/photos/jointhedots/4622191119/
  8. 8. People I know
  9. 9. SELECT self-catering-cottage FROM WHERE location NEAR pubs SERVING AND pub HAS rating > 7 IN
  10. 10. Share, annotate, augment and re-use information.
  11. 11. How?
  12. 12. There is only one FluidDB. All users and applications share the same database.
  13. 13. • Objects - represent things • Tags - define objects’ attributes • Namespaces - organise tags • Permissions - control access
  14. 14. http://ntoll.org/images/93.jpg
  15. 15. Data Structure entity / attribute / value
  16. 16. Data Structure object / tag / value (in FluidDB parlance)
  17. 17. Data Structure object / tag / value (optional)
  18. 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. 19. about = An id = “e127475b-eb93-48e1-a24f-dde6825b9ed8” “book:Dune” object
  20. 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. 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. 22. snoissimreP (seem to be back-to-front)
  23. 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. 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. 25. You control who can see, read or use your tags.
  26. 26. http://www.flickr.com/photos/fixe/3415776837/ Anyone can tag information to an object.
  27. 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. 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. 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. 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/*/*/*
  31. 31. Social data?
  32. 32. http://www.flickr.com/photos/8001265@N08/2259250324/ Let me demonstrate!
  33. 33. Where?
  34. 34. http://fluidinfo.com/
  35. 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. 36. Lots of 3rd party libraries: http://fluidinfo.com/developers/libs Java, Clojure, Lisp, .NET, Perl, Python, Ruby, PHP & Javascript (all open-source)
  37. 37. Django?
  38. 38. http://github.com/fluidinfo/django-fluiddb
  39. 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. 40. Familiar Forms from django_fluiddb.forms import ModelForm class FooForm(ModelForm): class Meta: model = Foo
  41. 41. It’s only the FOM underneath http://bitbucket.org/aafshar/fom-main/
  42. 42. We’re listening to you though the usual caveats apply ;-)
  43. 43. Questions..?

×