Release History

0.4 (future)


With this release, Oort has been split into two separate packages (Eggs actually).

The main package is still called Oort, and is the foundation. It contains the oort.rdfview module, which provides the functionality of mapping RDF to objects. Oort also contains some code and graph utility modules in oort.util.

The other package is OortPub. This is based on Oort but is released independently. It contains the package oort.sitebase, and oort.display, used by the former. OortPub provides tools for publishing graphs on the web, using WSGI. It is much more experimental, and the indent is to clean it up and make it much more REST based etc. OortPub may also (in the future) contain tools for more advanced filesystem-to-graph functionality beyond what is included in the base Oort package.

That said; enjoy these new additions to the core of Oort (who will be much more explained in the new documentation and how-to:s):

  • Made logging slightly more solid.
  • Sorter can now take a callable (as well as a string), which is used to get the key for sorting.
  • The selector now has the classmethod filtered_by, so filters can be added directly for custom selectors.
  • Fixed oort.util.graphs#load_if_modified to add modification time as a proper rdflib.Literal.
  • New QueryContext utility to use the same graph and language (string or callable getter) in a convenient way. Initialize with a list of queries or modules containing queries. This will also use any given RDF_TYPE to dispatch to query by examining the type(s) of the given resource.
  • Added a couple of coventient RdfQuery types to oort.util.queries.
  • Support for (lazily bound) named references to subquery classes when declaring RdfQuery classes. This enables proper cyclic class reference support. Also, the odd use of THIS_QUERY is thus no longer needed - just use the name of the current class (THIS_QUERY may be deprecated or downright removed).
  • Made Selector instances gettable from RdfQuery types. Useful to get at their predicate from an instance.
  • New ExecCache - an execution cache to reuse instances for the same subject/RdfQuery combo (will also make the cyclic stuff much more sane).
  • New RdfQuery.find_by classmethod. Use to find by value for a named selector. (This is also available on proxies returned from QueryContext).

0.3.2 (2007-02-12)

  • Kept fixing parts of the paster template, which obviously needed some love. This was done while writing the tutorial, so those should be in sync now.
  • oort.rdfview: fixed potential bug(?) with using modules as namespaces on selectors..
  • Added support for setting _rdfbase_ and/or RDF_TYPE on RdfQuery. This enables some fun stuff with association of rdf:type and an RdfQuery (planned).
  • Added Selector.__set__, to be able to set "cooperative" values for RdfQuery instances. Uses the type_raw_value template method to determine type (URIRef or Literal), set language and datatypes etc. Very rudimentary now though.
  • Added the RdfQuery.from_dict classmethod, used to create objects from dicts. These can be serialized into proper graphs too.
  • Added Aspect.using, sets self.queries and returns self.
  • Some API improvements in oort.sitebase and oort.displays.
  • Fixed configurable reloading of Genshi templates (use reload_templates = True in the ini-file).
  • Added some logging support (level configurable).

0.3.1 (2006-12-23)

  • Fixed a problem in the paster template -- a hardcoded reference to "myapp" (thanks to Peter Krantz for doing the testing I should have done!)
  • Small changes in e.g. URIs for examples and internal URI usage (using tag URIs with the newly acquired <> domain name).
  • Added one_where_self_is and each_where_self_is for getting at resources pointing to current subject. (A good match for the "is ... of" in N3 syntax).
  • Improved ort.util.graphs somewhat (nicer code and added load_dir, a simple recursive path walking loader).
  • Changed webapp.ini in the paste template dir to use evalerror only on a new composite app called "dev" (a little more secure if an oort app is public and still running the basic paste deploy setup in that file).
  • Turned ugly debugging off by default (to be improved..).
  • Renamed oort.util.code.Slotted to SlotStruct.
  • Tiny refactoring of oort.sitebase.
  • Backwards incompatible cleanup in oort.rdfview -- removed the odd pattern of moving predicate around in the selector-using code. This eliminated the dumb, always empty last argument to selectors using the @selector decorator. Also, selector implementations use their predicate attribute directly, instead of superfluously getting it when called.
  • Added some simple code to always use doctypes when rendering genshi-templates with one of the (x)html output methods.
  • Renamed AspectBase.initialize to AspectBase.post_init_setup. That's what it does, really.

0.3 (2006-10-03)

  • Fixed to include certain data files (thanks to Rick Thomas for spotting the missing testdata.n3).
  • Corrected certain parts of oort.__doc__.
  • Implemented support for filtering a Selector result (Filter and Sorter).
  • Renamed Selector.reverse to .back_to_graph
  • Fixed error in i18n_dict.back_to_graph (didn't work)
  • Replaced Kid with Genshi (also with a hard-wired dependency since localized_xml depends on template specific code).
  • Added an entry point for paste.paster_create_template with a basic Oort web app skeleton (use paster create -t oort_app).
  • Renamed LiteralSelector to UnarySelector (it wasn't used for literals only!)

0.2 (2006-09-29)

  • Slightly backwards-incompatible refactoring of oort.rdfview.
  • Added some operator overloading sugar to oort.rdfview.RdfQuery.
  • Added RdfDisplay and JsonDisplay to dust.rdfview.
  • Added some examples to oort.__doc__.

0.1 (2006-09-27)

  • Initial public release