+ --------------------------------------------------------------------- | Elda 2.0.2 Minor security update. + --------------------------------------------------------------------- | Elda 2.0.1 Minor update to Tomcat version. + --------------------------------------------------------------------- | Elda 2.0.0 See Elda 1.4.4 -- metadata and dynamic variables. Fixes #215 -- Elda supports forwarding headers. The default is for forwarding to be anbled; this is different from the previous (default) behaviour where Elda ignored such headers. Adds support for standard HTTP headers `X-Forwarded-Proto` and `X-Forwarded-Host`. See the "Forwarded Headers" section of the documentation for details. + --------------------------------------------------------------------- | Elda 1.4.4 (RELEASED) * greater control over generated metadata is available, including suppressing it entirely. * LDA variables can be set by an explicit query to the data source for the specified endpoint. * config files may contain #include lines, allowing configurations to be built from shared components. Changing a file that has been #included will cause all configs that included it to be reloaded. * inverse properties can now appear in view specifications * filters using prefixes min-, max- etc can now be removed from the query through the UI. * /api-config is now working again. + --------------------------------------------------------------------- | Elda 1.4.3 (RELEASED) (BYPASSED) + --------------------------------------------------------------------- | Elda 1.4.2 (RELEASED) Clean up of logging configuration, see reference notes. Fixed issue #188, updated Elda's embedded Qonsole. Fixed issue #197, some resources rendered as ampty elements. Fixed issue #153, count of empty list incorrect in velocity renderer. Fixed issue #200, a URI in standard Elda config was broken because it was not served from the epimorphics pages. Improved handling of _pageSize=invalidvalue. We are now using Java 1.8. + --------------------------------------------------------------------- | Elda 1.4.1 (BYPASSED) + --------------------------------------------------------------------- | Elda 1.4.0 (RELEASED) Elda no longer generates an empty CONSTRUCT{} clause if the view has no property chains. Elda's new _query-id URL parameter carries an arbitrary parameter which is displayed in log messages. When a query parameter X=V is supplied, where X is of resource type then V is expected to be a URI (or a string expanding to a URI), Elda now checks that V('s expansion) is a legal SPARLQ URI. + --------------------------------------------------------------------- | Elda 1.3.25 (RELEASED) json-ld generated for literals with language codes omitted the opening brace - fixed. multiple sort clauses with variables sharing the same property path prefix (eg "x" and "x.f") generated new variables for each such shared prefix rather than sharing the same ones - fixed. + --------------------------------------------------------------------- | Elda 1.3.24 (RELEASED) Corrected absolute path name in standalone/again configuration. + --------------------------------------------------------------------- | Elda 1.3.23 (RELEASED) Fixed error in namespaces for games 'again' example. + --------------------------------------------------------------------- | Elda 1.3.22 (RELEASED, RESTRICTIONS) Use 1.3.23 instead, unless not using elda-standalone -- the examples of the latter have a namespacing problem. #179 -- empty lists defaulted to 404ing, a regression that needed to be fixed. Empty list endpoints now default to rendering as an empty list (item endpoints 404 by default). #177 -- elda stored repeated runs of reloaded configurations which lead to running out of room. The entire SpecManager family of classes has been rewritten so that any given config file has at most as many configurations loaded as were present in the last version of the config file. Because Elda now keeps track of which config has which API endpoints, /lda-config will no longer display configs that have no endpoints rather than displaying them but giving them no endpoints. In earlier versions of Elda, if the initial load of config fails (eg because of a syntax error in the Turtle file) then Elda did not allow access to any endpoints and it was not possible to fix this by updating the config file. The changes for #177 also fix this; broken configs are logged and then treated as empty. + --------------------------------------------------------------------- | Elda 1.3.20 (RELEASED) 1.3.20 contains a fix for #174 whereby page-size parameters were lost in some generated URIs. + --------------------------------------------------------------------- | Elda 1.3.19 (RELEASED) Synchronised access to template list in MatchSearcher (to avoid concurrent modification exceptions when reloading configurations). Ensured term bindings were generated for otherwise unknown predicates in object model. Corrected triple reordering so that text query triples come first and are recognised in accordance with any text search configuration. Likewise corrected generation of WHERE clause from api:where etc so that the components are in order: * any triples with predicate the text:query predicate. * any explicit api:where or _where= text fragments in unspecified order * any other triples and OPTIONAL triples in unspecified order * any FILTERs that have been generated. Copied csv.xsl from assets to allow use in .csv examples (provoked by Eclipse spotting it wasn#t available). Item-template redirection now respects formatters. That is, if a URI X fails to match any URI template, but does match item template Y and so redirects to Z, the URI template for Y, then all the URIs X.F, ie X with known formatter F, will redirect to Z.F. Removed "# Model ..." comments from gold JSON files and the generator of them. + --------------------------------------------------------------------- | Elda 1.3.18 (RELEASED) Experimentally, Elda can now attach licence metadata to the pages it constructs. The metadata is described in the LDA config as a property `elda:licence` of an API or endpoint, either as an explicit URI resource or a property path from the pages selected items to the licence object. The velocity renderer default footer has been modified to display the licences and their labels and images if present. See the reference documentation for details. Similarly, *notices* can be attached to returned pages in metadata using the property `elsa:notice`. The test for whether an empty result set results in a Not Found rather than an empty list has been modified to apply to list endpoints as well as item endpoints; see the reference documentation for details. Elda Standalone is now constructed from elda-lda and elda-assets, so that it no longer maintains its own inconsistent assets data. In a property chain, a shortname may be preceeded by `~`, meaning that the property should be used in reverse, ie as the property inverse. Elda now contains an experimental JSON-LD renderer; see the reference pages for details. + --------------------------------------------------------------------- | Elda 1.3.17 (RELEASED) The Elda config file may specify multiple different labels for the labelled viewers. All such labels, if available, are requsted by the resulting query. TermBindings metadata was not complete. When Elda adds term bindings to the result model's metadata, it does not add bindings that are "not used". It turned out that terms in the metadata were not counting as "used", so terms only appearing in the metadata were not added to the term bindings, and this meant that the XSLT renderer could not seem them and instead used a fall-back representation rather than the term label. Fixed by the term binding adder checking not only the object model but also the union of the other (already created) metadata models. Messages about routers being/not being reloaded have been made DEBUG rather than INFO to reduce log density. Some such messages are no longer issued at all. When the constructed SPARQL queries are syntactically incorrect, the resulting exception in Elda is trapped and generates a proper error page (it used to throw a less helpful message). The stock XSLT stylesheets have been modified to handle the term binding issue if it should arise again. Exception text that appears in error pages may have embeddded braces {} which interacts badly with the use of {var} in the values of bindings -- which are used to send the error text into the Velocity context. To quote the opening brach we introduced the special variable substitution form {\} which expands to itself and is stripped back to { when put into the velocity context. Log messages once again show the appropriate class and line of the log call rather than all appearing to come from ELog. Elog no longer logs but merely provides a way (ELog.message()) to construct log messages with the sequence ID in. When rendering URI-like objects to SPARQL text, spaces are trapped and replaced by %20. + --------------------------------------------------------------------- | Elda 1.3.16 (RELEASED) Fix for issue #153: when the results count is zero, show an appropriate count summary + --------------------------------------------------------------------- | Elda 1.3.15 (RELEASED) Contribution from Piret Lattikas; when configuring the JSON formatter, a new boolean property elda:jsonUsesISOdate, default false, may be set true to have the formatter render DateTime values in ISO **************** format. Elda now has an explict Contributor Licence Agreement at https://github.com/epimorphics/elda/blob/master/CONTRIBUTING.md. Github presents a link to this CLA when a new issue or pull request is requested. Various issues have been resolved, eg #135, #150, #14, #098, #46. + --------------------------------------------------------------------- | Elda 1.3.14 (RELEASED) Updated Saxon-HE to version 9.5.1-8 in order to resolve XSLT performance (large result-sets generating CSV in particular) + --------------------------------------------------------------------- | Elda 1.3.13 (RELEASED) The (obsolete, non-working) built-in HTML renderer has been removed. An HTML renderer must be explicitly specified for the API or its endpoints. The key for the internal Elda cache is the reqest URI without the renderer name (ie any .format or &_format=format is removed), so different renderings of "the same" entity share the same cache entry. Metadata is not cached; it is regenerated on each response. A bug in the (separate) caching of item counts has been removed. Fixes #144. A trailing tomcat>6 dependency has been removed. (We do advise people using tomcat6 to upgrade if possible.) Attempting to render an object value threw an exception if the object was a bnode with no label as a result of code changes that did not completely cover the kinds of rdf node usable as objects. Re-ordered and elements in web.xml to match DTD ordering constraints (they are not supposed to be interleaved - filters first then filter mappings). Cleared up various minor bugs (see the git log). + --------------------------------------------------------------------- | Elda 1.3.12 (RELEASED) Fixed bug with /api-config when there's no prefix-path (the norm) + --------------------------------------------------------------------- | Elda 1.3.11 (RELEASED) Made LogRequestFilter tomcat-6 compatible. + --------------------------------------------------------------------- | Elda 1.3.10-SNAPSHOT (INCOMPLETELY RELEASED) * Fixes bug in /api-config caused by introduction of non-Value Bindings for _servletRequest and _servletResponse. + --------------------------------------------------------------------- | Elda 1.3.9 (RELEASED) (There is no Elda 1.3.6 or .7; .8 is the same as .9 but without javadoc.) * introduced LogRequestFilter which can be configured in web.xml (elda-standalone and elda-common are shipped with it enabled). Each Elda request generates two log lines with a shared ID number (counting up, local to instance, reset on restart). The ID is bound to the API variable _transaction for use in renderers. If LogRequestFilter isn't configured in, then _transaction will be unbound. All requests are logged unless they match the Java regular expression given in the filter's init-param com.epimorphics.lda.logging.ignoreIfMatches The as-shipped value of this parameter is .*/lda-assets/.* * the current HttpServletRequest and HttpServletResponse are bound to the bindings variables _servletRequest and _servletResponse (they must be extracted using getAny(name) not get() or getAsString()) * The API variable _defaultSuffix is bound to the name of the default formatter for the current endpoint, or the name of the parent API specs default formatter if the endpoint doesn't define one, or is otherwise unbound. * the /meta URIs now work as documented (fixed issue #131). * error-page handling revised and corrected. * some ordering dependencies in the tests were fixed following use of Java 8 (which appears to produced results from hashsets in a different order, which the tests are accidentally dependent on). * assorted rendering bug-fixes. + ---------------------------------------------------------------------- | Elda 1.3.5 (RELEASED) Issues closed: * https://github.com/epimorphics/elda/issues/115 Resolved a problem with the Velocity renderer generating hyperlinks for bNode resources, which can't be clicked through (because there's no URL to follow) * https://github.com/epimorphics/elda/issues/116 Resolved a bug with the Velocity renderer, in which it was not detecting and breaking loops in the RDF graph correctly. * https://github.com/epimorphics/elda/issues/117 Resolved a problem with the use of transparent regions in the title bar causing issues for IE9 users. * https://github.com/epimorphics/elda/issues/118 An enhancement to replicate the behaviour of the XSLT renderer - filter actions on item endpoints should apply to the corresponding list endpoint, assumed to be the parent URL calculated by removing the trailing path segment. * Also: removed some order dependencies, see #122. + ---------------------------------------------------------------------- | Elda 1.3.4 (RELEASED) Elda now assumes the SPARQL endpoint supports SPARQL 1.1 and instead of using nested selects to reduce view query size uses VALUES, which is simpler to generate and produces smaller and less complicated queries. Uses of the elda:supportsNestedSelect property of the SPARQL endpoint will generate a warning message but otherwise do nothing. The artifact elda-bundled, which was a single WAR containing both elda-common and elda-assets, has been removed. (Users can construct their own bundle by unpacking comman and assets, merging, and then making a new warfile.) The artifact elda-system-tests has been removed because it no longer did anything. Instead, elda-testing-webapp now performs integratration tests. Users do not need to use this artifact; it is part of the Elda development process. The error-page mechanism introduced in earlier 1.3.* Eldas has been revised as it was unsatisfactory. Instead, error pages are rendered from velocity macros with appropriate names. The pages are found by searching * the user-specified _velocityPath * /etc/elda/conf.d/{APP}/error-pages/velocity/ * the webapps webapp/error_pages/velocity/ This allows elda-common to contain a default set of error-page macros, which can be over-ridden using pages inside /etc or configured in the LDA config file. The supplied default pages inspect the value of the API variable _errorMode. If this is present and "taciturn", then they do not show detail information (eg a reason why a request might be bad). Otherwise they show whatever detail is available. Obsolete .xsl files have been removed. The URI template definitions which include query parameters like path/element?name={spoo} have been generalised so that the value of the query parameter can contain multiple {}-enclosed variables and literal characters such as path/element?where={x},{y} A bug in the handling of default languages with _lang which caused Elda to generate inappropriate SPARQL with unbound variables in it has been fixed. +----------------------------------------------------------------------- | Elda 1.3.3 (RELEASED) Corrected Elda version string (contained obsolete tag). +----------------------------------------------------------------------- | Elda 1.3.2 (RELEASED) Fixes issues 111 and 112. +----------------------------------------------------------------------- | Elda 1.3.1 (RELEASED) Elda's handling of error (non-2xx) pages has changed. Rather than generating a Response with internal Java code, Elda throws exceptions which are then handled by error-page declarations in the web.xml. Elda Common comes with default pages in the webapp/_errors directory for all the exceptions it explicitly throws out. Web containers that can redirect parts (eg _errors) of the web address spaces (eg Tomcat with its Context aliases (pre-version-8) or Context.Resources (version 8) can replace those error pages with their own styled to be consistent with the application as a whole. Regard this feature as experimental; it may change in future releases in the light of experience. +----------------------------------------------------------------------- | Elda 1.3.0 (RELEASED) The Elda velocity renderer has been completely rewritten and has become the default renderer. (The XSLT renderer is still available.) See http://epimorphics.github.io/elda/docs/current/velocity.html for a detailed description. The old velocity templates have been removed. Elda standalone is now built using a maven tomcat plugin and does not unpack itself and launch jetty; instead Tomcat unpacks it into .extract. Some incomplete integration tests directories have been removed and the javadoc improved. Elda now works with Tomcat8 (it was unportably presenting pathnames not starting with / to getRealPath). Elda now uses Jersey 1.18.2. +----------------------------------------------------------------------- | Elda 1.2.35 (RELEASED) 1.2.35 is a cleanup release following 1.2.34 with one bugfix for Window's users using the Saxon toolkit. * Elda is now built over JDK1.7 and a rather more recent version of Jena, with dependent jars updated to match. * Revised documentation links to that quickstart link is consistent and persistent. * A shortname declaration (ie an api:label for a property or class) will raise a log WARN if it does not follow the rules for shortname spelling. This will change to an error in later releases of Elda. * 1.2.34's switch to Saxon exposed an error: under Windows, an XSLT stylesheet that imported another one would fail to locate it. This was traced to RouterRestlet's pathAsURLFactory which did string-bashing to compute file: URLs. This has been replaced by File.toURI.toURL operations. [internal] * the vocabulary class EXTRAS has been deprecated and superceeded by ELDA_API. The latter extends API so that both standard LDA properties (and classes) and Elda extensions can be accessed using just one imported vocabulary class. The ontology file vocabs/extras.ttl has been renamed to elda_api.ttl. * Various compilation warnings, mostly about variables not being declared or methods not called, have been fixed. * Some incomplete/missing tests have been spotted and fixed/written. * Unused incomplete class DivertFilesFilter has been removed. +----------------------------------------------------------------------- | Elda 1.2.34 (RELEASED) * When Elda generates an error message page, external text (such as query parameters or material from the query results) is escaped so that it is not, eg, interpreted as Javascript. * the Velocity configuration file (velocity.properties) has been moved to the vm directory (ie wherever velocityRoot points). (This file does not need to be present and is ignored if it is empty, in which case system defaults are used.) * the mechanisms for generating the Velocity base directory path and for the XSLT template path has been unified. The value of the appropriate property (api:stylesheet, elda:velocityRoot) may be a absolute URL, an absolute path (referring to this machine), or a relative path (relative to this Elda's webapp diretcory). * An API or endpoint may specify a named graph using elda:graphTemplate "variable-string". Variables present in the template are expanded when the query is generated, and so may contain variables bound in the URI template or query parameters. The generated query contains GRAPH to restrict the query to that named graph in the dataset. An Elda URL can contain _graph=graphname to override such the graphTemplate. Note that the results from a DESCRIBE viewer need not be restricted to the named graph; this is a consequence of the weak specification for DESCRIBE in SPARQL. * The XSLT processor supplied for elda-common and elda-bundled has been changed to Saxon 9.5.1-5. The built-in JDK processor had problems with large renderings, as did xalan. + ---------------------------------------------------------------------- | Elda 1.2.33 (RELEASED) Fixed further 404 bug -- it should not apply to list endpoints. + ---------------------------------------------------------------------- | Elda 1.2.32 (RELEASED) Fixed a bug where item endpoints that produce no results did not 404 but instead produced a "dummy" page. + ---------------------------------------------------------------------- | Elda 1.2.31 (RELEASED, replaces 1.2.30) This release of Elda improves cache use in two ways; with Expires headers and with improvements in Elda's internal cache. Expires Headers If a cache expiry time is associated with an Elda request, Elda adds the appropriate Expires: header to the response. A cache expiry time can be associated with a request in the following ways in order: * the view uses properties that have been declared (in the configuration file) as having an expiry time using `elda:cacheExpiryTime TIME`. The smallest such time is the associated time. A DESCRIBE view or a view using the * wildcard implicitly uses all declared properties. * the endpoint has been given a cacheExpiryTime. (If it has, and it is smaller than a views expiry time, the endpoint time is used.) * the API has been given a cacheExpiryTime, which acts as thge cacheExpiryTime for all endpoints that do not explicitly have one. This allows timeouts to be given to any "volatile" properties and these timeouts will be respected by external caches. Item counts are also cached with the expiry time of the query that used them. Internal Cache Elda's internal cache now respects the expiry times mentioned above, rather than blindly allowing entries to persist until the cache is emptied. This means that Elda will age entries out even when it is not being used behind an external cache. (The old two-level structure of Elda's cache has also been abandoned; the cache is keyed from the request URI rather than their being one map from select query to resources and another from resources+view to results. This means that multiple formats for "the same" query are cached independently.) Other Changes The XSLT stylesheets have been revised to avoid deep recursions when escaping characters in large literals when assembling more-like-this links: the links are suppressed. + ---------------------------------------------------------------------- | Elda 1.2.29 (RELEASED) * a bug in RouterRestlet meant that Elda did not recognise stylesheet names that were URLs (or absolute paths), and so it treated them as names of files that it then failed to open. * Optionally Elda will count the total number of items that are selected and make this available as the value of os:totalResults on the page root. (The count is cached so that a count query does not have to be done for every page of next/prev links.) See the documentation on the reference page. + ---------------------------------------------------------------------- | Elda 1.2.28 (RELEASED) * Elda has moved to GitHub. + ---------------------------------------------------------------------- | Elda 1.2.27 (RELEASED) * The cycle detector used by the XML renderer (and hence by the usual HTML renderer) turned out to have dreadful performance on large tangled data because it didn't mark as "done" nodes that it had finished with. Added a new map to CycleFinder and adjusted it during crawl. Also took the opportunity to rename methods hintingly. * The control/clear-cache request may now be a POST, not a GET. The control/show-cache page has been updated with a button that makes such a POST. The response page for a clear-cache is control/show-cache; if the clear was performed using GET then the page warns that this was inappropriate. + ---------------------------------------------------------------------- | Elda 1.2.26 (RELEASED) * The documentation has been improved and restyled. It now includes a cribsheet with summaries of the Elda query parameters and configuration properties, and additional introductory materials. The text search documentation has been updated. The page previously called "advanced" has been renamed to "reference" and given a table-of-contents. The velocity renderer documentation now lives in its own document. Path configuaration options for stylesheets, HTML resouces, and Velocity templates has been clairified. * API.java has moved packages and now lives in com.epimorphics.lda.vocabularies (alongside EXTRAS and the other vocabulary classes). Both API.java and EXTRAS.java are constructed from the corresponding files in elda/vocabs by using `mvn generate-sources`. (If the Java files are up-to-date no generation is done.) * The example velocity templates and atom renderer now trap cycles in the view data. The example Velocity templates for Elda rendering have been substantially improved and documented. The use of api:stylesheet to specify the Velocity template to render with has been replace by elda:velocityTemplate to avoid confusion. * There is limited control over where the text:query triples appear in the generated SELECT query -- this may be helpful to the remote SPARQL engine. * The example games ontology is now published as part of Elda's googlecode pages. The example data has been extended. * Term bindings (ie LDA shortnames) are rewritten according to the URI-renaming rules if any are present, for consistency with the model rewriting. * The separate release notes for each release have been replaced by a single release notes document covering the latest releases and an attic containing older release notes. The "notelets" history has been abandoned. This change makes it easier for us to create release notes that cross-refer. * The JSON renderer will treat a Date literal as a DateTime literal if its lexical form is appropriate, rather than abandoning the rendering with an exception and subsequent status 500. * The long-obsolete documentation for the configuration variable _strip_has has been removed. Documentation for _suppress_ipto has been restored. + ---------------------------------------------------------------------- | Elda 1.2.25 (RELEASED) * A subtle bug where some uses of JSON rendering changed gave the range type rdf:PlainLiteral to properties that have been give no type in the LDA configuration, and continued to use this wrong range in subsequent queries, has been fixed. * Elda will now discard any and all query parameters that have been given an empty value rather than using the empty string as the value. * An EXPERIMENTAL atom feed renderer has been added. For details see the forthcoming on-site documentation. * The undocument and untested and historical _search query parameter now generates jena-text compatible queries as available in later versions of Fuseki. The LARQ code in Elda has been removed. For details see the forthcoming on-site documentation. + ---------------------------------------------------------------------- | Elda 1.2.24 (RELEASED) * Users should use Elda 1.2.24 in place of 1.2.23 to fix a excessive-reloading bug. Otherwise .24 is only slightly different from .23 and the following notes apply without change. * A bug in the config-reload code that meant that Elda 1.2.23 reloaded configs a LOT has been fixed. Users of Elda 1.2.23 should upgrade to 1.2.24. * Various WARN log elements have been changed to DEBUG or eliminated. * The hasFormat links from the current page now preserve the page size & number rather than discarding them. The effect of this is that the formatting links on the XSLT-generated HTML page now link to "the same page but with the selected format", rather than resetting to the first page. * Minor code cleanups and fixes. + ---------------------------------------------------------------------- | Elda 1.2.23 (USE 1.2.24 INSTEAD) * This release of Elda has significant changes in Elda initialisation, configuration, and internal structure. Users who are upgrading their Elda MUST read these release notes and the Elda documentation at http://elda.googlecode.com/hg/docs/E1.2.23-index.html http://elda.googlecode.com/hg/docs/E1.2.23-advanced.html carefully. These changes should make future Elda updates easier to manage. Existing configurations (using the Elda Loader class) should continute to work but support for Loader will be dropped in a future Elda release. NOTE that the artifact previously known as `lda` is now `elda-lda` for consistency with the other elda- artifacts. * The json-rdf module has been absorbed into Elda. The Elda assets have been moved to their own module. An elda-common module provides an externally configurable war. The Elda modules are now For general use: elda-assets scripts, stylesheets, images etc for _resourceRoot elda-common externally configurable WAR file elda-bundled elda-assets + elda-common elda-lda elda's core code (used to be just `lda`) elda-standalone self-contained configurable Elda server For internal use: elda-system-tests elda-testing-webapp elda-regress Developers should see http://elda.googlecode.com/hg/docs/E1.2.23-advanced.html for a description of how to use elda-common, -assets, and -bundled. Existing webapps built on Elda should continue to work as the existing Loader configuration is still operational. * ELDA STANDALONE. The context name for the Elda Standalone servlet is now "standalone", not "elda". * Elda's specification of where config files are to be found now includes globbing; that is, the character * in a pathname means 0 or more non-/ characters. Further, the character sequence {APP} is replaced by the context path that this Elda instance is running on. This allows (a) A single file to contain many configs, (b) a single context path to load multiple configs, and (c) a single container to run many independant webapps (hence configs). * NEW CONFIGURATION SPEC. The preferred way to initialise Elda is for the intialSpecFile parameter to be set in a context-param in the web.xml and for Jersey to be installed as a filter rather than a servlet. See the examples in the documentation. * XSLT stylesheets have been updated and pruned. * AUTO-RELOAD. Whenever a new request comes into Elda and "sufficently long" has passed since the last check, Elda checks to see if the config files have changed since the last check. If so, the current configuration is abandoned and a new one loaded. The DOM cache (for compiled XSLT templates) and the Elda cache for the results of queries) are cleared when a reload occurs. Velocity does its own independant reload-on-changes. * CACHE POLICY. Elda cache policy can be set on the whole API, not just on endpoints. This is mostly so that "default:0" can be set in a configuration to switch off the cache. Elda used to always retain at least one item in its cache. This behaviour has been dropped. * UNSTREAMED RENDERERS. The Turtle, JSON, and XML-driven renderers are no longer streaming: they compute their results early so that failures result in non-200 result statuses rather than producing a broken response body after a 200 OK header. * SHORTNAMES. The shortname code for URIs that arrive without a predeclared shortname have been revised (again), see the documentation. The shortname style can be controlled from the formatter declaration in the config. All cases of multiple uses of the same shortname in a config are reported at once. * FILE LOADING. An Elda webapp can load static files. * SUPPRESSED PREFIXES. The Turtle and RDF/XML renderers discard prefixes that bind to namespaces not used in the URIs of the model. * POMS. Some POM issues have been fixed. json-rdf has been incorporated into lda, which has been renamed to elda-lda. * VELOCITY. Velocity templates loaded from configurable location. Default templates now respect _resourceRoot via []. * JENA. Elda has been updated to use Jena 2.10.1 (with TDB 0.10.1 if using the built-in TDB handler). + ---------------------------------------------------------------------- | Elda 1.2.21 (RELEASED) * The XML renderer's changes to separate object and meta-data did not correctly implement the intended cycle-breaking algorithm, and the cycle detection code had a subtle bug in it. The bug has been removed and the cycle-breaking behaviour is a close match to that found in Elda 12/13. * Fix bug in JSON renderer.