Using FluidDB with Django

1,867 views
1,754 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
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,867
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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..?

×