Rx4RDF and Rhizome Changelog ============================ Changes in Version 0.6.1 (??, 2006) ---------------------------------------- * zml: fix encoding non-ascii characters in markup mode, better handling of file encodings * raccoon: pass config vars directly to DomStore and Model factory functions * RxPath: more support for named graphs/contexts: ** support removes from specific contexts in NTriples parser ** store version history in separate store (versionModel config settings) ** RxPathNamedGraph module ** add asQuad argument to getStatements() * XUpdate: change xupdate:include href attribute to Attribute Value Template * RxPath: get Redland adapter working again(!) * raccoon: work around for urllib bug in Python 2.5 * rhizome: lozenge effect (requires IE7 javascript library) Changes in Version 0.6.0 (March 31, 2006) ---------------------------------------- * RxPath: Replaced rdf:ID attribute with get-statement-uris() function * RxPath: add rdfdocument() XPath function (invoke from XSLT/RxSLT only) * RxPath: get Redland adapter working again * raccoon: add $__store global request variable * RxPath: preliminary support for named graphs/contexts: ** add context parameter to Model.getStatements api, implement for 4Suite and Redland ** add NTriples parser support via "#!graph uri" comment ** add pushContext/popContext to RxPathDom.Document for adding statements to a context ** no support yet for duplicate statements across contexts ** added get-graph-predicates(graphuri) XPath function * XUpdate: add "to-graph" attribute to XUpdate elements to specify the subgraph for additions. * utils: move RDF-related functions to new module RxPathUtils, cleaned up RDF parsing APIs * raccoon: add uriResolveBlacklist, uriResolveWhitelist and DEFAULT_URI_SCHEMES config settings (restrict URL resolution with URL scheme and by URL regular expression white/blacklists) * utils: change threadlocalattribute to rely on threading.local (and implement threading.local for Python 2.3) * Rhizome: except for new resources, move class-based authentication to fine-grained check * raccoon: DomStore now invalidates affected cache nodes on transaction rollback * raccoon: add support for multiple RDF formats (RDF/XML, NTriples, RxML, Turtle) ** replace save-metadata XPath function with save-rdf ** replace get-rdf-as-xml XPath function with serialize-rdf * Rhizome: better support for RDF formats ** add a NTriples item format (and Turtle if redland is installed) ** enable viewing and editing of RDF in all supported formats on these pages: edit-metadata, default-resource-viewer, view-metadata and search * raccoon: fix bug where uncacheable XSLT stylesheets where being cached * raccoon: fix bug where has- and get-metadata calls weren't being added to XSLT cache keys * RxPath: add MemModel, an efficient in-memory Model; clean up Model constructors * RxPath: remove dependencies on 4Suite Ft.Rdf package; now optional ** enables support for 4Suite 1.0b3 (which has no RDF package) ** add Statement and MutableStatement classes * Rhizome: add shredding support: ** add shred() and shred-with-xslt() XPath functions ** add shredders config variable, default shredders include: *** RDF (any supported format) *** GRDDL *** XHTML: extract hyperlinks, add wiki:links-to statements *** Forrest FAQ XML: extract FAQ resources *** extract doctype out of XML, removed Doctype dropdown from edit.xsl ** save.xml invokes shred() when saving content ** have import command shred unless new --noshred option is used ** add a "Extracted metadata" link on the view-metadata page to view the shredded RDF * Rhizome: Add support for keeping track of links to missing pages. * raccoon: path: URI resolver nows escapes URLs properly * Rhizome: search.xsl - fix property links * RxPath: completed RDFS schema support, including type inference based on rdfs:range or rdfs:domain. * Rhizome: fix the "Save (keep editing)" option on the Edit page. * Rhizome: save current default zml version when creating content and use it later if necessary * Rhizome: inital support for collaborative bookmarks (see the bookmarksetup page) * Rhizome: support for the Akismet anti-spam service (to activate, set the akismetKey and akismetUrl config vars) * XUpdate: get xupdate:include element working * Rhizome: add update-triggers.xml, moved folder creation and cleanup code there. * Rhizome: factored out keyword editing and saving into new edit-tags.xsl and replacetags.xml files * Raccoon: add defaultExpiresIn config setting for setting expires header if its not already set (default: 1 hour) * Raccoon: add -s server.xml command line option to root-config.py * utils: monkey patch Python's HTMLParser to fix bug with comments in script tags * Rhizome: revamped create/edit/view user page, including new UI for joining roles and user groups. * Rhizome: changed auth:with-guard-that-user-can-assign to auth:with-value-account-has-via-this-property * RxPath: add simple but optimizing query engine (queries can run 10x - 1000x faster!) Changes in Version 0.5.1 (Oct 21, 2005) ---------------------------------------- Minor release: * docs: updated docs * utils: replace glock implementation with one that doesn't require win32all * Raccoon: add useFileLock config variable for turning on the inter-process lock (default is off) * setup: include test files in setup * Raccoon: make transaction state thread local * Rhizome: replace footer.xml with base:site-template\wiki:footer-text property * Rhizome: add login-as-user option to the create user page * Rhizome: add css skin files to the data store, add wiki:uses-skin property * Rhizome: various fixes to glitches in themes and skins * Rhizome: display session message in header and display page actions message there * Raccoon: fix a couple of cache related bugs (one caused an endless loop when displaying an empty page) * RxPath: compatibility with 4Suite 1.0b2 Changes in Version 0.5 (Sept 28, 2005) ---------------------------------------- Major changes and bug fixes: * Raccoon: allow multiple applications to be run in one instance ** added root-config.py application for configuring multiple applications ** fixed and renamed ROOT_PATH to appBase ** cookies (including session) are set to the app's path ** separate loggers per application created (see log.config) ** moved defaultPageName from server.cfg to application config ** changed link fixups to uses absolute paths * Rhizome: fixed spurious 'admin password not set' warning * utils: more HTML sanitizer fixes * utils: added white list HTML sanitizer * various: support for 4Suite 1.0b1 * Rhizome: added global check to authorization expression * Rhizome: added optional templates for global read and write protection * Raccoon: refactored raccoon.py: move extension functions, content processors and caching into separate modules * Raccoon: basic support for streaming actions and content processors * Raccoon: added DomStore interface, allow Raccoon to work with XML DOMs * RxPath: added "before triggers" for nodes being added and removed * Raccoon: replaced global on-error trigger with separate ones per trigger * Raccoon: use 2-phase commit transaction coordinator with requests * Raccoon: added 'before-prepare', 'before-commit', and 'after-commit' triggers * Raccoon: removed authorization hooks (use triggers instead) * utils: added invalidation keys and digest keys to MRUCache * utils: added 'xhtml' XSLT output methods based on XSLT 2.0's xhtml output method * Rhizome: fix Javascript error when using IE to open the comments popup * Rhizome: new, much more polished default theme * Rhizome: pages (mostly, nearly) valid XHTML * setup: enable setup.py to be run on files checked straight out of CVS * utils: get MonkeyPatcher metaclass working * Rhizome: added XPath function authorization * RxPath: add StringValue for Document nodes, change createDOM api to pass model URI * Raccoon: made request kw to XPath variable mapping configurable * Rhizome: add support for validation of RDF model using Schematron * RxPath: make is-subproperty-of and is-instance-of follow nodeset equality semantics * RxPath: added is-subclass-of XPath function * Rhizome: refactored Rhizome.py: move authorization, content processing and commands into separate modules * Rhizome: add "request" and "fixup-urls" XPath extension functions * Rhizome: add site-theme.xsl, eliminates the need for a "theme.xsl" alias * Rhizome: Always use fine-grained authentication, including with RxUpdate. To support this, enhance authorization: ** Add new fine-grained permission: auth:permission-new-resource-statement ** Moved class based authorization to a separate step after updates are complete. This eliminates changes with class inferencing during change authorization thus simplying authorization behavior and makes it harder to create privilege escalation holes. ** reauthorize all the properties for all dependent resources when a subproperty of auth:requires-authorization-for is added or removed ** Add several property-value predicates and allow custom property-value predicates to be created (via the new 'auth-value-matches' XPath function). ** The new with-new-resource-value property-value predicate allows for access tokens to only be applied to new resources created during the transaction. This can be used for example, to allow a guest account to create a new user for herself, but not modify or create other objects. ** Add a can-assign-guard property for users and roles and a corresponding with-value-user-can-assign-guard property value predicate. ** Add a auth:grants-rights-to property to allow specific resources to execute with extra privileges ** replaced find-unauthorized XPath function with authorize-statements Changes in Version 0.4.3 (Jan 25, 2005) ---------------------------------------- Major changes and bug fixes: * RxPath: add support for RDF Schema (see RxPath.RDFSSchema for more info) * RxPath: remove the special case rdf:li pseudo-predicate, use rdfs:member instead * Rhizome: various changes for RDF Schema support * Rhizome: remove authPredicates config setting, use auth:requires-authorization-for predicate instead (see docs/Upgrading) * Rhizome: replace wiki:Any with rdfs:Resource * RxPath: fix bugs with comparing attributes to elements that have the same parent * setup: fix install directories, added the "blank" site directory * Rhizome: use foaf:OnlineAccount instead foaf:Person * utils: added class for safely truncating HTML or XML to a maximum number of words or lines * Rhizome: improved UI for summaries, edit, preview, and keyword selection * Raccoon: cache bug fixes (incl. one which broke saving changes to a user profile) * ZML: couple of bug fixes when splitting URIs into QNames and when missing final new line. * Rhizome: allow custom metadata to be saved along with a revision (see save.xml) * Rhizome: enable comments for any type of resource * Rhizome: external links will have rel='nofollow' added unless the content creator has the "create-nospam-token" access token (by default all non-guest users do) * Rhizome: various other bugs fixes (incl. saving binary content) Changes in Version 0.4.2b (Nov. 26, 2004) ----------------------------------------- Bug fix release: * utils: fix embarrassing last-minute breaking of BlackListHTMLSanitizer * Raccoon: make request recording and playback cross platform (pickle as binary files) Changes in Version 0.4.2 (Nov. 24, 2004) ---------------------------------------- Minor release: * Rhizome: fix login.zml * Raccoon: fix request pickling (for -r option) * Raccoon: add validateExternalRequest config setting * Rhizome: for security, disallow form variable names from starting with '__' * test: add framework for black box scripts (see test/rhizomeTest.py) * Rhizome: fix bug where a minor edit change wasn't displayed sometimes * Rhizome: manually set mime type for action handler pages (since auto-detect's broken) * Rhizome: refactored the site-template and added pluggable themes, including a sample theme based on Movable Type's. See Rhizome manual for more info. * Raccoon: cache improvements and bug fixes * Rhizome: fix endless loop when a not found handler trys to include a missing resource. * RxML: bug fixes, including fixing rdf:datatype and xml:lang support * RxPath: add -t command line option for invoking RxSLT transforms * Rhizome: sanitize HTML/XML unless created by a user with proper access token * Raccoon: XSLT processor now strips XML prologue (fix parsing with wiki2html.xsl) * utils: add support for CDATA sections to LinkFixer * Raccoon: better error reporting of invalid command line arguements * setup: fix bugs installing auxillary files * RxPath: handle rdf:ID properly with models that don't support reification (not enabled by default: see BasePredicate.RDF_ID_EXPR in RxPathDOM.py) * Raccoon: fixed bug where trailing slashes at the end of any URL (including URLs to folders) caused broken links. * zml: fix a few bad bugs parsing links and URI tokens * various: fixes for compatibility with 1.0a4 version of 4Suite Changes in Version 0.4.1 (Oct. 13, 2004) --------------------------------------- Minor release: * Rhizome: fix exception when importing .metarx files * Rhizome: fix summary view for search * Rhizome: add --astriples option to export * utils: parseTriples(): properly unescape NTriple literals like '\\\r' * utils: parse/writeTriples(): support @lang and ^^datatype literals * RxPath: support for xml:lang and rdf:datatype predicate attributes * RxPath: add xmlns(prefix=namespaceuri) support to query command-line * Raccoon: configurable server id (see rhizome/server.cfg) * Rhizome: use accept-charset='UTF-8' in forms and UTF-8 output encoding in XSLT * RxPath: support for RDFLib, as RxPath store and as default RDF/XML parser * Raccoon: wf:evaluate XPath function now adds the RxPath DOM namespaces to context * All: various bug fixes throughout to better handle non-ASCII content Changes in Version 0.4 (Aug 30, 2004) --------------------------------------- Major changes and bug fixes: * Raccoon: added content processing-level authorization * Raccoon: added content digest-based authorization (used by default by the now re-enabled Python content processor) * Raccoon: authorization hook for XPath extension functions * Rhizome: added RDF/XML output for search and metadata view, * Rhizome: added RxML to RDF/XML page (RxMLSandbox) * RxPath: use "bnode:" as bnode namespace URI * RxML: added support for rx:a, use "bnode:" * Rhizome: added revision comments and origin hostname * Raccoon: added raccoon-format and raccoon-ignore XML processing instructions * Rhizome: fix IE form bugs * Raccoon: added several new XPath extension functions * Rhizome: summary search view * Raccoon: 'on-error' request-type * Rhizome: added error handler pages (default and XSLT) * Rhizome: added Keyword resource type * Rhizome: added simple UI for editing and browsing keyword metadata * Rhizome: added page for executing ad-hoc content (Sandbox) * Rhizome: various bug fixes for save-contents and renaming pages * Rhizome: conflict detection with externally modified content (logs warning and adds wiki:save-conflict property to revision) * Rhizome: change default PATH to prevent information leakage * Rhizome: added view-source action * ZML: more user-friendly error reporting * Rhizome: added diff view for diffing revisions * Rhizome: new defaults and caching for significant performance improvements * ZML: syntax change: # -> 1. and ; -> # * ZML: allow ; to support multiple logical lines on one physical line * ZML: allow {URIRef} to be used in place of QName (simplifies RxML) * Rhizome: use FOAF ontology for users * Rhizome: full-text indexing using Lupy (optional) * Rhizome: now, by default, only administrators can apply the "released" label * Rhizome: added XPath function to check if actions on resources are authorized * RxUpdate:added for-each element/instruction (use $current for current node) * Rhizome: added a "Save (keep editing)" button to edit page for background saving * Raccoon: _name is URL decoded (so now you can have page names with spaces, etc.) * Rhizome: improve RSS support on search page; use RSS 2.0 * Rhizome: reduce memory bloat in caches: removed dump.xml, added robots meta tag with "noindex,nofollow" to many pages * All: too many minor bug fixes and enhancements to list here Changes in Version 0.3 (May 12, 2004) --------------------------------------- Major changes and bug fixes: Security related: * Raccoon: Python content processor disabled by default * Rhizome: creating python or RxUpdate pages require pre-defined access tokens (see rhizome/save.xml) * Rhizome: admin password digest no longer stored in model * Raccoon: disable unsafe 4Suite XPath/Xslt extension functions * Raccoon: added transaction log/audit trail of changes to the model * Raccoon: added various authorization hooks * Rhizome: added authorization of assign-metadata (see rhizome.authorizeMetadata()) * Rhizome: add fine-grained authorization when modifying the model * Rhizome: add class-based authorization and priority to access tokens * Rhizome: add authorization model with secure defaults * Rhizome: added private seed for generating secure hashes ZML: ** Renamed RhizML to ZML ** made ZML.py standalone (no dependency on rx package) ** added xml to zml option ** added #?zml prolog with optional markup map URI ** lines that begin with #! are ignored ** lines that begin with #? are treated as processor instructions ** leading '<' are treated as spaces ** \Uxxxxxxxx and \uXXXX are converted to character references (&#xXXX;) ** have two modes for parsing: "markup" and "mixed" ** lines like "#?zml markup" or "#?zml" set the parser in and out of markup mode ** in markup mode, wiki text is not allowed ** in mixed mode a line must start with a '<' to be treated as markup, otherwise it's wiki text ** in mixed mode leading space continues the previous line (instead of trailing \ as before) Other: * Rhizome: support for aliases of page names * Rhizome: support for interwiki links (see rhizome/intermap.txt) * Rhizome: added preview option in edit page * Rhizome: added Wiki-style link display options (see rhizome/wiki2html.xsl) * Raccoon: Etag are now set on all responses and If-None-Match honored * Raccoon: the xml/html content processor now fixes up 'site:' URLs * utils: added class for fixing up links in HTML and XML * Raccoon: content processors can now dynamically chain formats based on content (for XSLT and RxSLT stylesheets, use assign-metadata('_format','format')) * RxUpdate:added define-template and call-template elements * Rhizome: added support for hierarchical names and folders * Rhizome: added folder view handler (see rhizome/dir.xsl) * Rhizome: revisions saved as diffs are now saved to disk like other content * RxPath: added sort() extension function that sorts a node set like XSLT's sort element * RxUpdate:attribute values in literal elements are now treated as attribute value templates * Rhizome: default template less ugly * Rhizome: added RxML, RxML Edit, and RxPathDOM output to search * Raccoon: bug fix: convert response status code to an int (fixes login error on IE 6) * Rhizome: enable the creation of anonymous entries (see save.xml) * RxUpdate:added include element * RxPath: RDF containers (rdf:Seq, rdf:Bag, rdf:Alt) are now implemented as described in the RxPath spec. * RxPath: Descendant axes are now implemented as described in the RxPath spec. * utils: Diff and patching bug fixes, add fast diff for sorted lists * Raccoon: Add MRU file cache (disabled by default) * RxPath: diffing and 2-way merge RxPath DOMs and nodes * Rhizome: new defaults to enable viewing, editing, and deleting resources regardless of type * Rhizome: added RxML template disposition for creating new resources * Rhizome: added Recent Changes page * Rhizome: added administration page and new resource templates * RxPath: added core RxPath functions for mapping URIs to QNames (and implemented id()) * RxPath: added "uri" attribute to Predicate elements * Rhizome: added sha1 digest and content length to the model when saving content * Raccoon: added an option whicn adds an identifying statement each time a model is committed. * Rhizome: better handling of content-type response header * Rhizome: new metadata view and search display make browsing the model much easier. * Rhizome: added print view template and link * Raccoon: various minor refactorings for usability and flexibility * Rhizome: added help pages Changes in Version 0.2 (Feb. 29, 2004) --------------------------------------- Major changes and bug fixes: * Rx4RDF: The RxPath engine has been completely rewritten. Changes include: ** much faster ** RDF lists are now implemented as described in the RxPath spec. ** updates underlying model incrementally as changes are made ** loads statements from the underlying model on demand ** simple interface for supporting for multiple RDF model implementations ** support for 4Suite (default) and Redland (experimental) RDF models ** commit/rollback support ** the default memory model now incrementally commits changes to disk instead of re-saving the whole model. * RxUpdate: added new xupdate:replace and xupdate:copy-of element/instructions * RxUpdate: implemented xupdate:variable element/instruction * Racoon: added cacheing of RxPath expression parsing, stylesheet parsing, RxPath evaluation, and Racoon Actions. (See docs/RacoonCaches for config options.) * Racoon: partial support for virtual host names. (See rhizome/server.cfg for config options.) * utils: added iterators and visitors for compiled XPath expressions * utils: utility classes for generating exception classes and patching 3rd-party classes * Rhizome: rewrote saving content logic, including allowing external content to be safely changed by external applications * Rhizome: added config-specific functions to ease extending Rhizome * Rhizome: improved static export (including added $_static var for dynamic content) * Rhizome: added support for revision labels and draft/release workflow Changes in Version 0.1.3 (Dec. 15, 2003) --------------------------------------- Major changes and bug fixes: * utils: added function for creating thread-local properties * utils: add Res class for programmatically building a RDF model * Rhizome: add save content to disk option * Rhizome: smarter '--import' command * Rhizme: generalize request pipeline to handle arbitrary resource types * Rhizome: Added users, roles and associated pages (signup, login, etc.) * RxUpdate: changed semantics of xupdate:value-of to align with xslt's value-of * Rhizome: implemented search, results in HTML or RSS * Racoon: exposed $url, $_base-url, and $_path variables * Racoon: Added support for sessions, improve cookie support * Racoon: Upgrade http server to be based on CherryPy-0.9 (from 0.8) * Racoon: Support for python 2.3 * Rhizml: link annotations * Rhizml: added syntax for
,
 and 
* Rhizome: added authorization infrastructure * Rx4RDF: fixed loading .rdf files from the rdfdom.py command line * Rx4RDF: fixed exceptions with circular reference * All: added logging (includes support for Python 2.2) Changes in version 0.1.2 (Oct. 30, 2003) ---------------------------------------- Everything. (initial public release)