Introduction
This document lists all changes for the most recent major release (releases with number X.Y) and subsequent minor releases (with numbers X.Y.Z and perhaps further identifiers), including major and important changes and a list of all user-visible modifications. Change History repeats the list of user-visible modifications for this release and includes similar lists for earlier releases.
The release described in the documentation set is 6.2.0.
Release 6.2.0
Release 6.2.0 is a major release with significant changes to various parts of AllegroGraph. The attributes facility has been improved and a new command-line tool, *agtool combines most previous command-line programs into one. The changes are described below. We also list some important changes here.
New agtool command line program. See the agtool document for details. agtool replaces most command-line programs used in earlier releases.
Triple attributes enhancements. The Triple attributes facility, allows each triple to have associated attributes. These can be used for various purposes, such as access control. The facility has been enhanced in various ways in release 6.2.0. See the Triple Attributes document. Individual changes are listed with other 6.2.0 changes below.
New server load charts in AGWebView. Charts displaying aspects of server loading and performance are displayed on the Server Load page in AGWebView. The page is displayed by the View Server Load item on the Utilities menu. Here is a picture of the charts:
Database internal format changed from version 6.1.6
The database format is changed from time to time. When the format is changed, databases must be upgraded to the new format before they can be used. Upgrading is discussed in the Database Upgrading document. The format in version 6.2.0 is changed from version 6.1.6. (The format was previously changed in release 6.1.) Therefore it is necessary to upgrade 6.1.6 and earlier databases for them to be used with 6.2.0. Note that backing up repositories before before upgrading them to a new version is always recommended. Once a database has been used in a later release, it cannot be used in an earlier release regardless of whether the database format is the same.
Release 6.1.6 is a maintenance release which fixes bugs in version 6.1.5 There are also other improvements and optimizations.
Release 6.1.5
Release 6.1.5 is a maintenance release which fixes bugs in version 6.1.4 There are also other improvements and optimizations. The changes are described below.
Release 6.1.4
Release 6.1.4 is a maintenance release which fixes bugs in version 6.1.3 There are also other improvements and optimizations. The changes are described below.
TopBraid Composer (TBC) 5.2 is now available. There is no AllegroGraph plugin for this version of TBC since certain features needed for the plugin are no longer available. Now connections are made using the Sesame 2 connector built into TBC. See the TopBraid Composer Plugin document for more information.
Release 6.1.3
Release 6.1.3 is a maintenance release which fixes bugs in version 6.1.2 There are also other improvements and optimizations. The changes are described below.
Release 6.1.2
Release 6.1.2 is a maintenance release which fixes bugs in version 6.1.1 There are also other improvements and optimizations. The changes are described below.
Release 6.1.1
Release 6.1.1 is a maintenance release which fixes bugs in version 6.1. There are also other improvements and optimizations. The changes are described below.
Release 6.1
Major Changes
Triple attributes: Triples can now have attributes which can provide fine access control. See Triple Attributes for more information.
Java 8 (or later) is required for the Java client. Earlier versions of Java are no longer supported.
Top Braid Composer (TBC) version 5.1.4 is now supported. See TopBraid Composer Plugin.
Database internal format changed from versions 6.0/6.0.1/6.0.2
The database format is changed from time to time. When the format is changed, databases must be upgraded to the new format before they can be used. Upgrading is discussed in the Database Upgrading document. The format in version 6.1 is changed from versions 6.0.2/6.0.1/6.0. Therefore it is necessary to upgrade all databases created by versions prior to 6.1 for them to be used with 6.1. Note that backing data up before using in a new version is always recommended. Once a database has been used in a later release, it cannot be used in an earlier release regardless of whether the database format is the same.
6.2.0 Programmer notes
- Most command-line tools have been combined into a single command-line program named agtool. See the agtool General Command Utility document for more information. In most cases, the argument and options are unchanged. Where before the command was:
command arguments-and-options
It is now:
agtool command arguments-and-options
although the command name is shortened in most cases (so, for example, agload becomes load).
- New user permissions
user-attributes-header
anduser-attributes-prefix
. See the Managing Users section of the WebView document for information on user permissions.
6.1.6 Programmer notes
- The Python client no longer uses the cjson library. Python 2.6 users should install the simplejson library instead to avoid a significant degradation in performance. Other versions of Python are unaffected.
6.1.5 Programmer notes
There are no programmer notes for version 6.1.5.
6.1.4 Programmer notes
There are no programmer notes for version 6.1.4.
6.1.3 Programmer notes
There are no programmer notes for version 6.1.3.
6.1.2 Programmer notes
There are no programmer notes for version 6.1.2.
6.1.1 Programmer notes
See the 6.1 Programmer Notes below if you did not update to 6.1 and thus have not already reviewed them.
Java 8 (or later) is required for the Java client. Earlier versions of Java are no longer supported. This was also true in version 6.1.
6.1 Programmer notes
- Java 8 (or later) is required for the Java client. Earlier versions of Java are no longer supported.
User visible changes
These sections list changes in the current release and in some earlier releases. See the Change History for a list of changes in all earlier releases.
AllegroGraph 6.2.0
AllegroGraph Server: General Changes
Rfe14846 - Revised triple attribute filter operators
There are extensive changes to attribute filter operators, allowing better control when comparing user attributes with triple attributes. New operators include
or, not, empty, overlap, attributes-overlap, subset, superset,
equal, attribute-set\<=, attribute-set<, attribute-set=,
attribute-set>, attribute-set>=
The existing operator attribute>=
has been renamed attribute-set>=
(the old name is still accepted but users are advised to switch to the new name). See Triple Attributes for information on attribute filter operators.
Rfe14806 - Audit attribute and static filter definitions
If auditing is enabled an audit record is made for defining an attribute and for defining the static attribute filter. See the Auditing document for more information on auditing.
The rdf:type of the new records are:
<http://franz.com/allegrograph/4.11/audit-log#defineAttribute>
<http://franz.com/allegrograph/4.11/audit-log#deleteAttribute>
<http://franz.com/allegrograph/4.11/audit-log#defineStaticAttributeFilter>
Rfe14773 - Changes to agraph-control
The agraph-control program that starts and stops AllegroGraph has a new command restart, which requests that the server shut itself down, if running, and then start back up again. The reload command, which reloaded the configuration file, is no longer supported. See the agraph-control section of the Server Configuration and Control document.
Rfe14797 - Add permissions for user-attribute specification
Added user permissions user-attributes-header
(if true, user can send attributes via HTTP as the value of the x-user-attributes
header), and user-attributes-prefix
(if true, user can specify the user attributes via the SPARQL prefix franzOption_userAttributes
. See the Managing Users section of the WebView document for information on user permissions.
Rfe14733 - String comparison operator for attribute filter
Added the attribute=
operator which can be used to compare attributes to other attributes, attributes to strings, or strings to strings. See Triple Attributes for information on attribute filter operators.
Rfe14671 - New configuration option StringTableCompression
The StringTableCompression configuration option allows specifying the compression type (including no compression) for the string table. The default is lzo999
compression. See Server Configuration and Control for information on configuration options.
Rfe14661 - agtool combines many command-line programs
The *agtool program replaces the programs agraph-backup, agmaterialize, agquery, agexport, agload, agraph-recover, agraph-replicate, and convertdb. agtool takes as its first argument the task to perform (usually indicated by a shortened version of the old program name but sometimes quite different -- so agraph-backup becomes archive and convertdb becomes upgrade) and then the various argument and options for that task. For example, in order to load the Ntriples file mytriples.nt into the mystore database in the server listening on port 10035, in earlier releases you ran this command:
% agload --port 10035 mytriples.nt mystore
now you use agtool as follows:
% agtool load --port 10035 mytriples.nt mystore
(Other argument/option combinations will do the same as those shown.) For most tasks, the arguments and options are the same as with the earlier tools, with the following differrences:
agraph-backup (archive), agmaterialize (materialize), The --ext-backup-command
is no longer supported. Otherwise arguments and options are the same.
agraph-recover (recover), convertdb (upgrade), these changes: -c
accepted for --catalog
, -p
accepted for --port
.
agload (load), this change: -u
not accepted as synonym for --base-uri
.
agquery (query) and agexport (export), this change: --username
is now --user
and -u
is a synonym of --user
.
agraph-replicate (replicate), this change: -c
accepted for --catalog
, -u
accepted for --user
.
See the agtool General Command Utility document for more information and links to all the documentation for the individual tasks.
Rfe13254 - Tools for saving and loading metadata
Metadata, that is attribute and static filter definitions, can be saved from a database and loaded into a database. The methods for doing so include using the new --save-metadata
option to agtool export (see Data Export) and the new --metadata
option to agtool load (see Data Loading), along with new Lisp functions and REST API, discussed under Lisp API and HTTP API below.
Bug24425 - install-agraph no longer creates a log/ directory
install-agraph would incorrectly create a log/ directory alongside the lib/ and bin/ directories it creates. It no longer does so, leaving the creation of the log directory to tools like configure-agraph, agraph-control, or the agraph server itself.
HTTP API
Rfe13254 - load/save attribute metadata
GET and POST metadata commands allow obtaining metadata (attribute and static filter definitions) from a repo and loading them into another repo. See the Attributes section of the REST/HTTP interface document for details.
SPARQL
Rfe14812 - Support attributes in INSERT DATA and INSERT/WHERE
The syntax of SPARQL INSERT DATA and DELETE/INSERT/WHERE commands has been extended to support the fine-grained specification of attributes on a per-triple basis. See Triple Attributes for more information on attributes.
Rfe14726 - New prefixes for attributes
The defaultAttributes
SPARQL query option specifies the attributes to be associated with each triple added via the INSERT DATA, DELETE/INSERT/WHERE, or LOAD commands. The userAttributes
query option specifies the user attributes to be used when processing the query. See Triple Attributes for more information on attributes.
Rfe13305 - Old-style SPARQL GEO queries are no longer supported
Because AllegroGraph's magic properties support a richer range of geospatial features than the old-style SPARQL GEO syntax, the old syntax was deprecated in 2014 and has now been removed from the code. Any queries that use the old-style syntax will need to be rewritten.
Magic properties support both the deprecated 2D geospatial encodings and the newer nD ones.
Bug24481 - Wrong results for VALUES with a single variable
When processing a VALUES clause in a SPARQL query AllegroGraph would return incorrect results if there was exactly one variable bound by that clause and the list of values contained either:
An UNDEF value: it would be silently ignored (but other values would still be used).
Duplicates: each value will be matched exactly once, regardless of the number of times it appears inside VALUES.
This has been corrected.
Bug24470 - Spurious results for SELECT DISTINCT on a bound variable
When executing a query which tries to find unique values of an already bound variable like in the example below:
select distinct ?s WHERE {
bind(ex:A as ?s) .
?s ?p ?o .
}
AllegroGraph would ignore the binding and return all results that match the pattern. This error could be observed only if the single-set execution strategy was used.
This has been corrected.
AGWebView
Rfe14576 - Make deleting namespaces easier on AGWebView Query page
You can now delete namespaces on the AGWebView Query page.
Rfe14569 - New vmstat-like server performance charts added to WebView
A new menu item in the WebView Utilities menu brings up a page of performance charts on the server machine. The several charts show approximately the same machine load data printed by the vmstat command, charted for the past five minutes. AGWebView is documented in the WebView document. The new Server Load page is documented here in that document.
Changes to the Lisp API
Rfe14797 - New user-attributes-prefix-permission-p keyword argument to run-sparql
The function run-sparql now have a user-attributes-prefix-permission-p
keyword argument. It must be given a true value in order to run a SPARQL query including "PREFIX franzOption_userAttributes".
Rfe14754 - Allow #\: to be used as the catalog and repository delimiter
In addition to using the slash character (#\/), the colon (#\:) can now be used to designate a triple-store in a different catalog. I.e., the following are equivalent:
(open-triple-store "test" :catalog "production")
(open-triple-store "production/test")
(open-triple-store "production:test")
Note that the format AllegroGraph uses to display triple-stores will now be catalog:name
rather than catalog/name
.
Rfe14705 - The triple-store-user (db.agraph.user) package uses the sparql package
The triple-store-user
package, also named the db.agraph.user
package, now uses the sparql
package which means that symbols in the sparql
package like run-sparql
can be used more easily as they do not need to be package qualified.
Rfe14703 - :return-fat-triples keyword argument is now :return-extended-triples
The return-fat-triples
keyword argument to get-triples, get-triples-list, and freetext-get-triples has been renamed return-extended-triples
. The new functions extended-triple-triple and extended-triple-attributes return the triple and the attributes (respectively) of an extended triple. The new function copy-extended-triple makes a copy of an extended triple.
Rfe13254 - New functions to load/save attribute metadata
The functions get-metadata. set-metadata, load-metadata, and save-metadata allow retrieving metadata (attribute and static filter definitions) from a store and adding metadata to a store. The metadata can be transmitted as a string or written/read from a file.
Prolog
No significant changes.
Documentation
No significant changes.
Python Client
No significant changes.
Java Client
No significant changes.
nD Geospatial
No significant changes.
AllegroGraph 6.1.6
AllegroGraph Server: General Changes
Rfe14785 - Allow default session idle timeout to be set in agraph.cfg
Two new configuration parameters have been defined for controlling the default and the maximum allowed session idle timeout. DefaultSessionTimeout
specifies the default timeout and MaximumSessionTimeout
specifies the maximum timeout. See the description of those directives in the list of top-level directives in Server Configuration and Control for details.
Bug24519 - Path-finding broken on remote-reasoning-triple-store
Path-finding operations (such as depth-first-search) were broken for remote-reasoning-triple-stores since v6.1.4. This has been fixed.
Bug24389 - Bus error when adding triples with unspecified graph to security-filtered-triple-store
Previously, adding a triple to a security-filtered-triple-store could result in a bus error. This has been fixed.
Bug24221 - String table configuration mismatch during restore.
An error would occur when trying to restore a database that was backed up in AllegroGraph prior to version 6 if the catalog it was restored to had a string table size different than the default 16M entries.
The error was:
> String table configuration mismatch: Configured number of slots X
does not match recovered number of slots (16777216)
This has been corrected.
HTTP API
No significant changes.
SPARQL
Bug24463 - Binding produced index out of range error during query
Some queries using BIND used to fail with the above error message. This has been corrected.
AGWebView
No significant changes.
Changes to the Lisp API
No significant changes.
Prolog
No significant changes.
Documentation
Bug24427 - Javadocs missing from agraph server distribution
Previously the Javadocs for the AllegroGraph Java client were missing from the installed documentation set. This has been fixed.
Python Client
Rfe14803 - Support for decimal literals
Literal objects constructed from Python's Decimal values will now have the default datatype of xsd:decimal
.
Rfe14694 - Drop support for cjson
The Python client no longer uses the cjson library. Python 2.6 users should install the simplejson library instead to avoid a significant degradation in performance. Other versions of Python are unaffected.
Bug24428 - Creating literals from time objects with timezone
RepositoryConnection.createLiteral used to raise an error when passed a datetime.time instance that contains time zone information. This has been corrected - such calls will now return literals of type xsd:time with time value converted to UTC.
Bug24405 - Non-ASCII characters in addData()
The Python client used to raise an exception (specifically a UnicodeDecodeError) if the data passed to addData was a Unicode string containing non-ASCII characters.
This has been corrected.
Bug24322 - Python clients reads imported file into memory
When uploading data to the server the Python client used to read the whole file into memory before sending it. This could cause out of memory errors for larger files. To avoid this issue, the client now sends files in chunks. This method requires only a limited amount of memory.
Java Client
No significant changes.
nD Geospatial
No significant changes.
AllegroGraph 6.1.5
AllegroGraph Server: General Changes
Bug24442 - Fix intermittent query failures that report a "broken pipe" error
A bug was introduced in v6.1.3 where requests could fail inappropriately under certain conditions, with a "broken pipe" error message appearing in agraph.log or reported in AG WebView. This has been fixed.
Bug24412: agload incorrect line number reporting on invalid character
The agload program (see Data Loading (agload)) could report incorrect line numbers if errors were encountered when loading large N-Triples and N-Quads files in parallel. This problem could only occur if the files were larger 4MB. This has been corrected.
HTTP API
No significant changes.
SPARQL
Bug24352 - In FILTERs can be handled very inefficiently
SPARQL queries that constrain a particular binding to a set of values could operate very inefficiently in some circumstances. Such queries include ones that use the IN FILTER or that use the VALUES clause to supply a list of possible matches. The inefficiency has been corrected.
AGWebView
Bug24423 - WebView hangs if HTTP tracing is enabled.
Previously AGWebView would hang on page load if HTTP tracing was enabled. This has been fixed.
Changes to the Lisp API
No significant changes.
Prolog
No significant changes.
Documentation
No significant changes.
Python Client
No significant changes.
Java Client
No significant changes.
nD Geospatial
No significant changes.
AllegroGraph 6.1.4
AllegroGraph Server: General Changes
Rfe14558 - If possible increase the file descriptor limit at startup
If the agraph server is started as root it will set the number of file descriptors agraph can use to 65536 thus not being limited by the default operating system setting (which is usually quite low).
If the file descriptor limit is raised you'll see a line like the following in agraph.log just after the server starts:
[2016-11-08T17:07:23.956 p13419 daemon] Set fd limits soft: 65536, hard: 65536
Rfe11277 - Warn when a freetext query tries to match on things that cannot possibly match
AllegroGraph now generates a query warning when a freetext search expression cannot possibly find matches. For example, the default stop words in an AllegroGraph freetext index include the and an so it is impossible to search for matches on the expression (or 'an' 'the')
. This means that a query like
select * { ?s fti:match 'the || an' . }
will return no results. Previously, AllegroGraph would have returned no results without generating a warning. Now, AllegroGraph will warn that The freetext expression
the || an cannot succeed
.
Rfe11046 - Release fds for free text index disk tries
Making use of a free text index will require far fewer file descriptors than before.
Bug24395 - TriG parser errors could print that they were from the Turtle parser
Some TriG parser errors incorrectly indicated that the current parser was using Turtle syntax rather than TriG. This has been corrected.
Bug24349: Transaction log archiving to same filesystem broken
Transaction log archiving was broken in v6.1.2 when archiving to the same filesystem. This problem is now corrected.
Bug23354 - Check SSL cert when frontend starts
If the SSL certificate information you put in your configuration file is not correct AllegroGraph will log an error and exit during server startup. Previously you didn't find out about SSL certificate errors until the first https request came to the server.
Bug24332 - AllegroGraph doesn't fail gracefully if it cannot claim desired ports
Previously, if AllegroGraph was unable to bind the TCP port specified by the Port configuration directive, it would leave some lingering processes after printing the error message. This has been fixed.
Bug24297 - <http://www.w3.org/2005/xpath-functions#:translate> was broken
The XPath translate function could not be used between AllegroGraph 6.0.2 and 6.1. This has been corrected.
If a query attempted to use the translate function, it would get a parse time error.
HTTP API
No significant changes.
SPARQL
Rfe14722 - Improve planning speed for SPARQL queries that use IN filters
The code generated for evaluating SPARQL IN queries has been optimized for some common cases. This will result in faster plan times for such queries.
Bug24383 - Sparql Update can fail if the WHERE part uses string literals
If the WHERE portion of a SPARQL DELETE/INSERT/WHERE command used string literals that were not already interned in the triple-store in FILTER expressions, then it was possible for the UPDATE to fail. This has been corrected.
AGWebView
No significant changes.
Changes to the Lisp API
Rfe14736 - Add graph parameter to SNA path finding functions
The various SNA path finding functions like all-depth-first-search-paths
and bidirectional-distance
all take a new graph/s
parameter. This can specify either a single graph or a list of graphs that will be used to restrict path search to only triples from these graphs.
Rfe14721 - Path finding functions accept lists of predicates as generators
The Lisp API to AllegroGraph's Social Network Analysis path finding algorithms has been extended. Previously, the functions took a generator that must have been previously defined. Now, you can pass a list of predicates in the place of a generator and these will be used to create a generator on the fly. Note that this added flexibility does come at the cost of between 5 and 10 percent slower performance so predefined generators are to be preferred.
The syntax of the predicate list is as follows. Each element in the list must be one of
predicate URI
- (:undirected
predicate URI
) - (:subjects-of
predicate URI
) - (:objects-of
predicate URI
)
For example, we can find the paths between ex:A and ex:B using undirected links on either ex:knows or ex:likes via the following:
(all-breadth-first-search-paths
!ex:A !ex:B
'((:undirected !ex:knows) (:undirected !ex:likes)))
This change also adds a new REST API to the path finding algorithms via sna/paths
. See the HTTP reference for details.
Bug24293 - Some plain literals could be printed incorrectly
Changes in AllegroGraph 6.1 made it possible for some plain literals to print incorrectly in some situations when using remote-triple-stores. For example, the literal a/b/c
could print as a/b"/c
.
This has been corrected.
Prolog
No significant changes.
Documentation
No significant changes.
Python Client
Rfe14693 - Allow data import from strings
A new method named addData has been added to the connection class. This method makes it possible to add RDF data stored in a string to the store. All RDF data formats supported by addFile can be used.
Rfe14692 - Add more RDFFormats
The only formats supported during data import (addFile) used to be N-Triples and RDF/XML. It is now possible to use other formats, namely Turtle, TriG, N-Quads, NQX and TriX. The addFile method is now capable of determining the correct format based on the filename. When using this capability it is also possible to import gzip compressed files.
bug24379: HTTPS in Python does not work with Basic auth
The Python client used to only allow HTTPS connections if a client certificate was used for authentication.
It is now possible to connect to HTTPS servers by passing either a host
value starting with 'https://' or a protocol
value of 'https' when creating the server object.
Java Client
No significant changes.
nD Geospatial
No significant changes.
AllegroGraph 6.1.3
AllegroGraph Server: General Changes
Rfe14363: Add binary-only, non-interactive modes for install-agraph
Two command-line options have been added to install-agraph to support non-interactive installation:
--no-configure
: do a binary-only install. Skips the configure-agraph step.--supersede
: skip interactive prompt and overwrite installation directory if it exists.
Installation and configuration are described in the Server Installation document.
Bug24253 - Triple-store statistics could become stale when new datatypes were added
It was possible for the statistics AllegroGraph keeps on each predicate to become stale if triples were added with heretofore unseen XSD datatypes. This has been corrected.
Bug24245 - Text index word filters and wildcard search do not work together
A freetext index that used word filters like drop-accent
s or the stemmer could fail to find matches when using wildcard searches. This has been corrected.
HTTP API
No significant changes.
SPARQL
Bug24273 - The SPARQL RAND() function was being evaluated at plan time
AllegroGraph was mistakenly evaluating the SPARQL RAND() function at plan time rather than query execution time. This could lead to incorrect results and has been corrected.
Bug24214 - Querying using the direct reification magic property returns at most one match
AllegroGraph's direct reification magic property only returned the first matching triple. This has been corrected so that all matches are returned.
AGWebView
Rfe14205: Maintain and provide information on live HTTP requests
A new page, Admin -> Requests, was added in AGWebView. It shows all the currently running and recently finished HTTP requests handled by AllegroGraph and its subprocesses.
Bug24256 - Regular users cannot see catalogs
The catalogs list displayed on the main WebView page used to contain only the catalogs for which the current user has 'read' access to all repositories therein.
The list now contains catalogs for which the user has 'read' access to at least one repository therein.
Changes to the Lisp API
No significant changes.
Prolog
No significant changes.
Documentation
No significant changes.
Python Client
Bug24300: Python shutdown hang
Previously if a session was created but not closed before Python was ready to exit, the shutdown of Python could be delayed by a very long time. This problem has been fixed. However, it is always best to call closeSession() on a session when it is no longer needed.
Bug24290 - Changes to Python tutorial
The Python tutorial is now configurable using environment varaibles which provide information about the catalog, username, password, etc. See the Python Tutorial for more information.
Java Client
Bug24238 - Java API Unicode issues
The Java client used to incorrectly process non-ascii characters in results of CONSTRUCT queries. Such characters were replaced by question marks. A similar problem could be observed with results of some other calls (e.g. evalInServer) on platforms where the default encoding used by Java is not UTF-8. A notable example is Windows, where the encoding tends to be CP-1252 (although that depends on the language).
Both issues have been corrected.
nD Geospatial
No significant changes.
AllegroGraph 6.1.2
AllegroGraph Server: General Changes
Rfe14561 - Remove the deprecated --encoding option from agload
Previously, the -C/--encoding
option was used to allow agload to process N-Triples and N-Quads files encoded in a character encoding other than UTF-8.
This option has been removed. All N-Triples and N-Quads files with non-standard encoding must be converted with a separate tool, such as iconv, prior to being processed by agload. agload is described in the Data Loading (agload) document.
Bug24233 - Install-agraph.sh errors on tutorial directory when overwriting
When installing AllegroGraph to an existing installation directory, an error would occur when attempting to install the tutorial directory. This is now fixed.
HTTP Client
No significant changes.
SPARQL
No significant changes.
AGWebView
Rfe14407 - Use RDF syntax for displaying namespaces in AGWebView
The display style of namespace abbreviations in AGWebView was changed so that they can now be copied and pasted into a SPARQL query.
Bug24194 - Free text search URI incorrectly parsed slashes in WebView
In WebView, URLs of full-text search and script pages were incorrectly parsed if their arguments contained slashes. This has been corrected.
Bug24172 - Namespace sorting and duplicate inconsistencies in WebView
In AGWebView, namespace abbreviations on the Namespaces and Query pages are now sorted alphabetically. Also, adding a namespace with a duplicate prefix is now forbidden. To modify a namespace, delete it and add it, modified, again.
Bug22807 - WebView error when asking for the plan of a SPARQL update command
AllegroGraph signaled an error when asked to display the plan of a SPARQL Update command. This has been corrected.
Changes to the Lisp API
Bug23492 - with-query-environment is not documented
Documentation has now been added for with-query-environment. That macro ensures all cursors created in its body are discarded when the body completes.
Prolog
No significant changes.
Documentation
No significant changes.
Python Client
No significant changes.
Java Client
No significant changes.
Javascript Client
Bug24207 - Javascript client library could leak cursors
It was possible for scripts using the Javascript client library to leave cursors in an active state. Although these cursors are eventually freed, they use resources and can cause lock contention. The problem is now corrected: Javascript scripts will always close all cursors automatically.
nD Geospatial
No significant changes.
AllegroGraph 6.1.1
AllegroGraph Server: General Changes
Rfe14493 - Print progress messages during long restores.
During a database restore by agraph-backup a progress report is periodically printed to stdout, showing the fraction of the data file which has been processed, the recent processing rate, and an estimate of the completion time. See Backup and Restore.
Bug24168 - Wrong triple count after a delete with duplicate suppression
Deleting an uncommited triple could cause AllegroGraph to report an incorrect triple count (possibly negative) if duplicate suppression was active at commit time.
This has been corrected.
Bug24153 - owl:sameAs interferes with owl:transitiveProperty during materialization
The presence of owl:sameAs assertions could lead to AllegroGraph failing to infer all owl:transitivePropery triples during materialization. This has been corrected. (Note that this problem only occurred using the materializer and not the dynamic RDFS++ reasoner).
Bug24147 - Support "null" as a synonym for the default graph
The remove-graph-uri, insert-graph-uri and using-graph-uri parameters of the SPARQL and Prolog HTTP endpoints now allow the default graph to be referred to by using the string "null" as the URI.
This resolves a problem with the Java client in which SPARQL Update queries issued through the Jena API did not work as expected. Specifically, a WHERE clause would fail to match any triples unless a graph was specified explictly in the query.
HTTP Client
No significant changes.
SPARQL
No significant changes.
AGWebView
Bug24062 - AGWebView uses "Repository" and "Store" interchangeably
In WebView, both "repository" and "store" (and also "triple store) were used to describe repositories. Now, "repository" is used in all places. The documentation has been updated to reflect the change,
Bug24173 - TypeError when going back to query view with saved query result in AGWebView
In AGWebView, going back to a recent query view with cached result caused a harmless error to appear on the browser console. This has been corrected.
Changes to the Lisp API
Bug24179 - Unicode issues in the remote Lisp client.
The remote Lisp client in AllegroGraph 6.1 used to fail in an unpredicatable manner if non-ascii characters were present in query results.
This has been corrected.
Prolog
No significant changes.
Documentation
No significant changes.
Python Client
No significant changes.
Java Client
No significant changes.
nD Geospatial
No significant changes.
AllegroGraph 6.1
Server Changes
Rfe14282 TBC 5.1.4 plugin
AllegroGraph plugin for TopBraid Composer has been updated to be compatible with TBC 5.1.4. See TopBraid Composer Plugin for more information.
Rfe14279 - agraph-backup should shut down instances
Previously, agraph-backup would leave instances open and lingering after performing a backup or restore operation. This could result in hangs due to memory exhaustion when running backup-all or restore-all operations across many repositories. The likelihood of hang would depend on a combination of repository size and the value of the InstanceTimeout directive.
Now, agraph-backup will attempt to shut down the instance process of all repositories it operates on, as soon as the operation has completed. agraph-backup is described in the Backup and Restore document.
Rfe14273 - Reduce repeated query log messages
AllegroGraph was repeating some messages unnecessarily when logging query execution. This repetition has been reduced.
Bug24130 - Access to the system initfile should be protected
It was possible for any user to access the contents of the AllegroGraph init file. This has been corrected. Now only users with superuser
privileges will be allowed to view the file.
Bug24128 - Blank nodes in RDF/XML collections
When parsing an RDF/XML file containing a collection with a blank node as one of its elements, AllegroGraph used to generate an invalid triple (using "li" as the predicate, instead of one of 1, 2, _3, ...).
This has been corrected.
Bug24126 - RDF/XML parser incorrectly handles empty elements.
The RDF/XML parser used to incorrectly handle empty literals encoded as property elements with empty bodies. The parser would generate a blank node instead of an empty literal.
This has been corrected.
Bug24079 - agload with '--error-strategy ignore' and unrecognized file types
agload will now print a warning before ignoring a file of an unrecognized type regardless of the value of the --error-strategy
argument. agload is described in the document Data Loading. Example:
agload --error-strategy ignore repo wrong-file
Cannot guess the format of wrong-file. Use --input to specify it.
Load finished 0 sources in 00:00:01 (1.00 seconds). No triples added.
Terminating agload processes, please wait...
Compare with previous behavior:
agload --error-strategy ignore repo wrong-file
Load finished 0 sources in 00:00:01 (1.00 seconds). No triples added.
Terminating agload processes, please wait...
Bug24066 - Sessions did not close their databases after idle timeout expires
When a session expired after a given timeout, it would not close its database until another session was started. This has been corrected.
Bug23964 - Incorrect escaping of IRIs in Turtle output
AllegroGraph used to incorrectly escape some characters when using the Turtle format. Furthermore, spaces and a few other characters that are not legal in IRIs were not escaped at all. Other characters, such as double quotes, were escaped using an invalid syntax (\" instead of \u0022).
Qualified names were affected by a similar problem.
This has been corrected - all characters are now properly escaped in both IRIs and qualified names.
Bug23960 - gz file import is broken
Importing .gz or .bz2 files using single-threaded import used to cause an error as the file was not correctly uncompressed.
This has been corrected.
Bug23828 - CSRF vulnerability in file upload
The import dialog in AGWebView was not adequately protected against Cross-Site Request Forgery (CSRF) attacks. When a logged-in user visited a malicious web site, an attacker could import arbitrary triples into any store the user can access.
This has been corrected - a CSRF attempt will now result in a password prompt.
Bug23820: Prevent repository access when a restore is in progress
Previously, an attempt to access a repository while it was in the process of being restored could result in random errors and problems, including being unable to close a repository. This change improves the way in which AllegroGraph notes that a repository is being restored, and improves the check for restore-mode so that these issues are prevented.
Bug23705 - A triple-store must be open to define SPIN magic properties
Changes in AllegroGraph 6.0 required that a triple-store be open before any SPIN magic properties could be defined. This has been corrected.
Bug23339 - Canonical escaping in N-Triples
AllegroGraph used to produce invalid escape sequences in URIs when printing triples in the N-Triples format. Some reserved characters, such as double quotes, were escaped with a backslash. Others were not escaped at all.
This has been corrected. All reserved characters are now properly escaped using the \u notation.
In addition, escaping of strings in N-Triples has been modified to make the output match the canonical form described in the standard. The most notable change is that non-ascii characters are no longer escaped.
Bug23181 - Consistency bug when backing up deleted bitmap
If a triple was deleted while backup was in progress, that triple would also be marked as deleted in the restored store. This has been fixed, backup now represents a consistent state of the store at the time it was started.
Bug22115: Fix configure-agraph handling of passwords.
configure-agraph could crash when entering passwords that contain certain non-alphanumeric characters in them. This bug has now been fixed.
Bug21655 - serialize-rdf/xml can emit illegal xml characters
In XML, control characters (e.g. NUL, BEL, STX, ...) cannot be represented in any form. The RDF/XML serializer (with the Lisp function serialize-rdf/xml, used by agexport when passed --output rdfxml
) used to silently output such characters, producing files that could not be parsed.
This has been corrected - if the serialized data contains any invalid characters an error will be reported, as in the following example:
bash-4.2$ agexport -o rdfxml store output.rdf
open the triple-store store on port 10035 and export to ...
Warming up the store
Error Unable to escape character U+0008 (Backspace). occurred during processing
logging error to /.../agexport.log
Bug20220 - Fix bug when validating the --loaders argument to agload
The --loaders
argument to agload accepts as a value a positive integer between 1 and 32. On machines with a large number of cores, agload would default to a number of loaders greater than 32 and then error due to the value being too large. This validation bug is now fixed.
HTTP Client
Rfe14445 - Add REST API for [catalogs/CATNAME]/respositories/REPONAME/exists
AllegroGraph's REST API now includes
[catalogs/CATNAME]/respositories/REPONAME/exists
which can be used to determine whether or not the named repository exists. It will return a 404 code if the repository does not exist and a 200 response with the body true
if it does.
Bug23942 - Handle HTTPS scheme for SPARQL UPDATE LOAD command
The SPARQL UPDATE LOAD command would fail when using the HTTPS URL scheme. This has been corrected.
Bug23817 - Running a query that used MINUS repeatedly via REST could error
Under certain circumstances, if a SPARQL query that used MINUS was evaluated more than once using the HTTP REST API, AllegroGraph could signal an error. This has been corrected.
SPARQL
Rfe14278 - Improve SPARQL SERVICE efficiency for AllegroGraph endpoints
AllegroGraph now uses a more efficient binary data format when communicating with AllegroGraph-based SPARQL endpoints. This can lead to large performance improvements for SPARQL SERVICE calls.
Rfe14257 - DISTINCT|REDUCED mode should be passed on to SERVICE calls
When the main query uses DISTINCT or REDUCED, any use of SPARQL federation will pass on the modifier to endpoints. This can greatly reduce overall IO.
Rfe14254 - SERVICE should remove duplicates from any VALUES it passes along
If the main query is using the DISTINCT or REDUCED modifier, then the SERVICE requests should remove duplicate rows from the list of VALUES that is passed to the endpoint. This can make the query much more efficient.
Rfe14086 - New SPARQL functions for performing haversine calculations.
These SPARQL functions accept various combinations of latitude/longitude coordinates and nD encoded literals. They compute distances on the Earth's surface.
- haversineLatLonLatLon
- haversineLatLonLoc
- haversineLocLoc
The individual names indicate the required argument types: a Lat
or Lon
must be a number interpreted as degrees. A Loc
must be an nD literal that encodes a latitude and a longitude. Its nD encoding must be registered in the open database, but is not needed in any of the function calls themselves.
Each of these functions accepts an optional additional argument specifying the units of the computed result. It may be :km (default) or :miles expressed as a resource in the keyword namespace, i.e., <http://franz.com/ns/keyword#km> or <http://franz.com/ns/keyword#miles>.
See the SPARQL functions list in the SPARQL Magic Properties document for a list of SPARQL function with links to further documentation.
Rfe11390 - Modify SPARQL 1.1 lexer/parser to match changes to standard
The SPARQL parser used to fail when the input contained any:
- Qualified names containing backslash escapes in the local part, such as
ns:something\#\.
- Qualified names containing percent escapes in the local part, such as
ns:something%23%2E
- '.' not followed by whitespace, for example:
?s ?p ?o.filter(?o > 42)
- Some expressions containing longer products, such as:
select ?x {bind (1+1*1*1 as ?x)}
All mentioned cases are now parsed correctly, in accordance with the SPARQL grammar.
Bug24161 - Correct possible segmentation faults during SPARQL DELETE operations
Under some circumstances, a SPARQL DELETE command could cause a segmentation fault. This has been corrected.
Bug24103 - Correct problem in nD magic property SPARQL queries
It was possible to get an error when executing a query that combined nD magic properties and other patterns. This has been corrected.
Bug24030 - An empty IN filter is ignored if there are any other IN filters
If a SPARQL query contained two or more IN filters that were associated with the same triple pattern and one of the IN filters was empty, then both IN filters were ignored. This has been corrected.
Bug24026 - Fix query failure when using DISTINCT, SERVICE and magic predicates
It was possible for a query to fail during planning if it used multiple SERVICE clauses, the service clauses used magic predicates, and the query asked for DISTINCT results. This has been corrected.
Bug24020 - Property path queries in saved plans with Chunk-at-a-Time engine can lose solutions
It was possible for some solutions to be lost on subsequent runs of a saved query plan using the Chunk-at-a-Time execution engine if the query used SPARQL OneOrMorePath or ZeroOrMorePath property path expressions. This bug sometimes appeared when running queries in AGWebView because it directs AllegroGraph to use saved plans. This has been corrected.
Bug23988 - Fix query failure in federations of reasoning and non-reasoning stores
Some queries could fail with an error in a federated triple-store composed of a mix of reasoning and non-reasoning leaf stores. This has been corrected.
Bug23949 - Filtering on multiple language tags could fail
The FILTERing machinery in AllegroGraph's SPARQL engine could fail to correctly process collections of language tag checks. For example, a query with a filter like:
FILTER( lang(?x) = 'fr' || lang(?x) = 'en' )
could fail. This has been corrected.
Bug23897 - Query warnings are incorrectly cached
Query warnings saved in SPARQL plans were not being updated to take account of changes in the underlying store.
Bug23893 - Federated-triple-stores and statistics caching could lead to poor plans
The caching of store statistics could lead to incorrect plans when querying a federated-triple-store. This has been corrected.
Bug23889 - Correct breakage in solR magic property queries
The SPARQL magic properties for solR queries were broken in AllegroGraph 6.0. This has been corrected.
Bug23884 - Constant pattern only CONSTRUCT could fail when executed via a saved plan
If a CONSTRUCT query template contained only constant patterns (i.e., no variables), and there was a limit on the query, and the query was being executed via a saved plan, then only the first execution would return results and subsequent executions would return nothing. This has been corrected.
Bug23882 - Algebraic query combines some BGPs too aggressively
The query planner was sometimes combining BGPs and inadvertently producing cross-products which could lead to slower query performance. This has been corrected.
Bug23881 - FILTER clause could be lost in complex SPARQL queries
It was possible for a FILTER clause to be lost during query planning. This has been corrected.
Bug23873 - Neither limit nor planner should require eval permission
Users without 'eval' permissions were unable to choose a planner or limit for a query. This has been corrected.
Bug23870 - Restriction reasoning could cause error during SPARQL query
Depending on the way it was invoked, a SPAQRL query could signal a error when restriction reasoning was used. This has been corrected.
Bug23841 - Do not allow triples in query results to be deleted
It was possible to remove triples from the database by clicking the X icon next to CONSTRUCT or DESCRIBE query results. This possibility has been disabled. CONSTRUCT and DESCRIBE queries do not return enough information to uniquely identify a triple in the triple-store. Offering to delete them is error prone and ambiguous. To delete triples, either use a SPARQL DELETE statement or the node view (click any part of a triple in the results).
Bug23755 - Problem with alternating property path in sub-queries
A sub-query that used a property path pattern with alternation could incorrectly bind the predicate of matched triples to output variables. An example of the problem would have been:
select ?s ?o {
{ select ?s ?o {
?s :hasChild | :hasParent ?o .
} }
}
This query would bind the predicate of matched triples to ?o
. This has been corrected.
AGWebView
Rfe14371 - Allow the number of loaders to be selected in AGWebView
It is now possible to specify the number of loaders when invoking agload through AGWebView.
Rfe13428 - Display query information for CONSTRUCT, DESCRIBE and ASK queries
The query information tab is now displayed alongside results of CONSTRUCT, DESCRIBE and ASK queries.
Bug24047 - WebView: download duplicates ignores mode
The Export duplicate statement command in Store Control ignored the choice of SPO/SPOG. This has been corrected.
Bug23948: Fixed paged behavior after using the browser's back button
Previously, the Download
and Load more
buttons would function incorrectly if used after clicking the browser's back button. This has been corrected.
Bug23888 - Upload progress indicator not showing
AGWebView will now display progress information when uploading a file. This was previously not visible due to a bug. Progress is reported as a text line similar to this:
Uploading file triples.nt(1475 Kb uploaded)
Bug23887 - Automatic scrolling in the AGWebView view server log pane broken
The server log in AGWebView would not auto-scroll when new log data appeared. This has been corrected.
Bug23857 - Load more does not work in Free Text search
Loading the next page of Free Text search results did not work. This has been corrected.
Bug23856 - Repeated text search breaks navigation
Page navigation would sometimes break when a user entered the same query twice in the Free Text search field. This has been corrected.
Bug23840 - Wrong even/odd row coloring when odd limit chosen
Row coloring could appear incorrect when using an odd limit and paging in the query view. This has been corrected.
Bug23839 - Planner selector grayed-out after language detection
It was possible to disable the planner selector in the query view if language autodetection was used. This has been corrected.
Bug23827 - Process list in WebView crashes on Firefox
The process and job list views of AllegroGraph WebView did not display any processes or jobs on Firefox. This has been corrected.
Bug23811 - AGWebView import fails for RDF/XML
Multi-core file import in AGWebView would fail if the chosen format was RDF/XML. This has been corrected.
Bug23810 - Importing via file upload no longer works in AGWebView
The multi-core file import feature in AGWebView was not working unless the file type was set directly. This has been corrected. In addition, AllegroGraph now recognizes application/n-triples and application/n-quads as media-types for the import of N-Triples and N-Quads (respectively).
Bug23800 - Query progress spinner only appears on every other query in Agwebview
The "Loading..." indicator was not displaying the first time that a new SPARQL query was executed via AGWebView's query editor. Now the loading indicator is shown every time.
Bug23774 - CONSTRUCT queries not displaying results in AGWebView
Results from CONSTRUCT queries were not being displayed in Safari under OS X. This has been corrected.
Bug23752 - Agwebview Lisp editor fails when digits are at the end of a line
The Lisp and Prolog script editors would become unresponsive if the last token on a line was a number. The JavaScript console showed the following error:
TypeError: undefined is not an object (evaluating 'stream.peek().toUpperCase')
This has been fixed.
Bug23141 - AGWebView's CONSTRUCT doesn't show the MORE button
Previously, if the number of results of a CONSTRUCT query exceeded the limit set by the user, there was no way to show more results. Now, there is a MORE button at the bottom of the results which functions similarly to the one used for SELECT queries.
Bug22314 - Federated-triples-stores, encoded IDs and AGWebview don't mix
Attempting to use AGWebView to query a federated triple-store whose leaf nodes used encoded IDs led to an error. This has been corrected. Note: Correct behavior of a federation of stores that use encoded IDs assumes that each leaf node has the same definitions for encoded ID prefixes.
Changes to the Lisp API
Rfe11567 - Support store specifications in the Lisp client
In addition to using the catalog
keyword argument, AllegroGraph now accepts store names in the form CATALOG-NAME/STORE-NAME. E.g.,
(open-triple-store "general/test-data")
would open the store test-data
in the catalog general
.
You can also supply a triple-store specification in calls to open-triple-store. This will build a store instance from the specification, bind it to *db*
and return it. In this case, the store instance will be given a name like store12341
.
Finally, you can query store specifications directly using any of the HTTP clients by using a URL encoded version of the specification in place of a simple store name. E.g.,
curl -X GET -v "http://localhost:11040/repositories/%3Ca%3E%2B%3Cb%3E?query=select%20*%20%7B%20%3Fs%20%3Fp%20%3Fo%20%7D%20limit%205"
would send the query
select * { ?s ?p ?o } limit 5
to the federation of triples stores a
and b
(as specified by <a>+<b>
).
Note that in this case, AllegroGraph will not start a new session so Prolog functors or other things defined in the servers initialization file will not necessarily be present.
Bug24105 - Deprecate serialize-rdf-n3 in favor of serialize-turtle
AllegroGraph can serialize data in turtle format but not in N3 so it is better to use the correct name. The now deprecated function serialize-n3-rdf will be removed in a future release and should no longer be used. serialize-turtle should be used instead.
Bug24006 - pcache Lisp module conflicts with AllegroGraph
A package conflict made it impossible to load AllegroCache and pcache in the same Lisp execution as AllegroGraph (without tiresome package manipulation). The problem has been fixed in this release.
Bug23846 - warmup-triple-store does not work in remote-lisp-client
Calling warmup-triple-store on a remote store used to have no effect. The call did not fail, but no operation was performed. The remote client will now correctly pass the request to the server it is connected to, preparing it for subsequent operations.
Prolog
Bug23877 - Prolog select exposes a security hole
There was a remote code execution vulnerability in Prolog query handling code where users without eval permissions could execute arbitrary code on the server. Executing Prolog queries now requires eval permissions. (This bug was fixed in various maintenance releases including version 6.0.2. We repeat it here because of its importance.)
Documentation
Bug23874 - Documentation search in local AllegroGraph docs doesn't work
The documentation search field in the upper left corner of AllegroGraph documentation pages now uses Google to search for the given phrase within:
franz.com/agraph/support/documentation/<version>/
where <version> is vX.Y[.Z] (v6.1 in the case of the current release). This means that even if you have a local copy of the documentation the search is done in the web copy on the Franz Inc. website.
Python Client
RepositoryConnection.createCoordinate arguments renamed
The lat
and long
arguments of RepositoryConnection.createCoordinate
have been renamed latitude
and longitude
.
Bug23901 - RepositoryResult.asList() always returns None
The asList
method in the RepositoryResult
class was buggy and always returned None. It now correctly returns all statements from the result object.
Java Client
No significant changes.
Geospatial
Rfe12345 - Unnecessary geospatial functions removed
The functions geospatial-subtype-index-in-this-image and geospatial-subtype-index-in-db are neither useful nor necessary in the geospatial API. They have been unexported and removed from the documentation.
Bug23933 - Geospatial subtypes could be mistranslated on remote stores
It was possible for encoded geospatial data to be mistranslated when connecting to AllegroGraph via a remote-triple-store in the Lisp environment. This has been corrected.
Bug23848 - nd:inCircle :units incorrectly defaults to :miles, not :km
The :units
argument to get-triples-nd-within-radius in Lisp and the similarly named functor in Prolog, and nd:inCircle
in SPARQL, incorrectly defaulted to :miles
instead of :km
. This has been fixed so the behavior now agrees with the documentation. Since a kilometer is less than a mile, the change may cause previous queries that did not specify :units
now to return fewer results. The extra results before the change were bogus.
Bug23767 - automate-nd-datatype-mappings could fail under parallel load
Spurious metadata conflict errors could be signaled if a store using automatic nD-datatype mappings was being accessed from multiple clients (for example, via agload). This has been corrected.
Bug23584 - nD query support for ISO6709 time
In an nD query, the min and max limits for a :time type ordinate may be expressed as a real number, as a dateTime UPI, or as a string literal in ISO6709 syntax (either as an xsd:dateTime typed string or an untyped string). These are supported in both SPARQL and Lisp/Prolog queries. Previously ISO6709 was not accepted in all contexts.
AllegroGraph 6.0.2
Prolog
Bug23877 - Prolog select exposes a security hole
There was a remote code execution vulnerability in Prolog query handling code where users without eval permissions could execute arbitrary code on the server. Executing Prolog queries now requires eval permission. User permissions are discussed in the section Managing Users in the WebView document.
User-visible changes in earlier releases
See Change History for user-visible changes to earlier releases.