Using FluidDB with Django
-
Upload
nicholas-tollervey -
Category
Technology
-
view
2.007 -
download
0
description
Transcript of Using FluidDB with Django
Using FluidDB with Django(making data “social” with FluidDB).
Nicholas [email protected]
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
WHERE location NEAR pubs SERVING
SELECT self-catering-cottage FROM
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
Data Structure
entity / attribute / value
Data Structure
object / tag / value(in FluidDB parlance)
Data Structure
object / tag / value(optional)
Namespaces/Tags
ntoll/ratingterrycojones/books/reviewamazon.com/book/titleamazon.com/book/authoramazon.com/book/isbnesteve/books/covertimoreilly/has_read
An object
about = “book:Dune”
id =“e127475b-eb93-48e1-a24f-dde6825b9ed8”
An object
about = “book:Dune”
ntoll/rating = 5ter
rycojones/
books/rev
iew =
“I love
sandworm
s”
amazon.com/books/title =
“Dune”
amaz
on.co
m/b
ooks
/aut
hor =
“Fra
nk H
erbe
rt”
amazon.com/books/isbn =
“87-418-7517-6”
timoreilly/has_read
estev
e/boo
ks/co
ver =
id =“e127475b-eb93-48e1-a24f-dde6825b9ed8”
An object
about = “book:Dune”
ntoll/rating = 5ter
rycojones/
books/rev
iew =
“I love
sandworm
s”
amazon.com/books/title =
“Dune”
amaz
on.co
m/b
ooks
/aut
hor =
“Fra
nk H
erbe
rt”
amazon.com/books/isbn =
“87-418-7517-6”
timoreilly/has_read
estev
e/boo
ks/co
ver =
booleanstring (& set)numericopaquenull
id =“e127475b-eb93-48e1-a24f-dde6825b9ed8”
snoissimreP(seem to be back-to-front)
about = “book:Dune”
ntoll/rating = 5ter
rycojones/
books/rev
iew =
“I love
sandworm
s”
amazon.com/books/title =
“Dune”
amaz
on.co
m/b
ooks
/aut
hor =
“Fra
nk H
erbe
rt”
amazon.com/books/isbn =
“87-418-7517-6”
timoreilly/has_read
estev
e/boo
ks/co
ver =
Traditional:
id =“e127475b-eb93-48e1-a24f-dde6825b9ed8”
An object
about = “book:Dune”
ntoll/rating = 5ter
rycojones/
books/rev
iew =
“I love
sandworm
s”
amazon.com/books/title =
“Dune”
amaz
on.co
m/b
ooks
/aut
hor =
“Fra
nk H
erbe
rt”
amazon.com/books/isbn =
“87-418-7517-6”
timoreilly/has_read
estev
e/boo
ks/co
ver =
FluidDB:
id =“e127475b-eb93-48e1-a24f-dde6825b9ed8”
You control who can see, read or use your tags.
Anyone can tag information to an object.
http://www.flickr.com/photos/fixe/3415776837/
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).
{“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 ...]}
Tags attached to the “about:esteve” object.
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/*/*/*
A RESTful API
Social data?
http://www.flickr.com/photos/8001265@N08/2259250324/
Let me demonstrate!
Where?
• 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:
Java, Clojure, Lisp, .NET, Perl, Python, Ruby, PHP & Javascript (all open-source)
http://fluidinfo.com/developers/libs
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 underneathhttp://bitbucket.org/aafshar/fom-main/
We’re listening to youthough the usual caveats apply ;-)
Questions..?