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.4.

Release 6.2.4

Release 6.2.4 is a maintenance release which fixes bugs in version 6.2.3. The changes are described below.

Database internal format unchanged from version 6.2.3

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.4 is unchanged from version 6.2.3. (The format was previously changed in release 6.2.0.) Therefore it is not necessary to upgrade 6.2.3 databases for them to be used with 6.2.4. Note that backing up repositories before moving them to a new version (whether or not upgrading is required) 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.2.3

Release 6.2.3 is a maintenance release which fixes bugs in version 6.2.2. There are also other improvements and optimizations. The changes are described below.

Release 6.2.2

Release 6.2.2 is a maintenance release which fixes bugs in version 6.2.1. There are also other improvements and optimizations. The changes are described below.

Release 6.2.1

Release 6.2.1 is a maintenance release which fixes bugs in version 6.2.0. There are also other improvements and optimizations. The changes are described below.

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.

The Server Load and Performance 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.

6.2.4 Programmer notes

There are no programmer notes for version 6.2.4.

6.2.3 Programmer notes

There are no programmer notes for version 6.2.3.

6.2.2 Programmer notes

6.2.1 Programmer notes

There are no programmer notes for version 6.2.1.

6.2.0 Programmer notes

It is now:

    agtool command arguments-and-options 

although the command name is shortened in most cases (so, for example, agload becomes load).

6.1.6 Programmer notes

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.4

In this maintenance release, the only changes involved the AllegroGraph Server and the SPARQL interface so only those headings are shown.

AllegroGraph Server: General Changes

Rfe15224 - Starting AllegroGraph on a machine with restricted dmesg access

Trying to start AllegroGraph on a machine with restricted dmesg access would fail. This has been fixed.

Bug25115: Agtool export errors when using --parallel and exporting NQX

Attempting to use agtool export with --output nqx and --parallel mode would result in an error like the following:

error `#<consumer-cursor @ #x1000991a312> does not support extended-triples`  
occurred in worker 11  
interrupting... 

This has been fixed.

Bug 24822 - Access to repositories being restored

Access to a repository while it is being restore should have been denied but this was not happening. This is now fixed.

SPARQL

Rfe15644 - Improve probing decision for some queries

AllegroGraph decides at query time whether it is more efficient to scan or probe to evaluate a triple pattern. However, if a pattern had certain constraints on some of its variables, then AllegroGraph was unable to probe. Now AllegroGraph is able to probe in more cases which can greatly improve performance for particular queries.

AllegroGraph 6.2.3

AllegroGraph Server: General Changes

Rfe15101: Restore tlmgr to tlmgr.restored

The tlmgr file contains information about replication jobs. Since the existence of replication job information can result in transaction log files accumulating, the tlmgr file is no longer restored as is. Now it is renamed to tlmgr.restored during a restore. After a restore, replication jobs must be reestablished by the user.

Rfe12408 - Add graph filtering support to agmaterialize

agtool materialize can now limit materialization to a specified list of graphs via the --graph (short form -f -- note that -g specifies the default graph for inferred triples) command line argument. The inferred graph (specified with --inferred-graph or -g) will always be included in the list. See the Materializer document.

Bug24729 - Spaces in filenames prevent server-side file import.

Importing a server-side file with spaces in its path would fail with an error message about illegal characters in a URI. This issue affected both WebView and the HTTP API, but not agtool load and has been corrected.

HTTP API

Bug20772 - Loading JSON format may fail to commit all triples

Using the 'commit=number' parameter when importing statements through the HTTP API could result in some statements not being committed. The issue only affected JSON imports and has been corrected.

SPARQL

Rfe15077 - Signal a query warning when CONSTRUCT tries to generate invalid triples

AllegroGraph will now signal a query warning if any triples produced by the CONSTRUCT template are invalid. Formerly, these triples were silently discarded.

Rfe15075 - Improve parsing efficiency of large USING [NAMED] datasets

The SPARQL parser now parses UPDATE commands with very large dataset specifications using the USING and USING NAMED clauses more efficiently.

Rfe15074 - SPARQL parser has non-linear behavior for large VALUES clauses

Improved the SPARQL parser performance for queries with 1000s of elements inside of VALUES clauses.

Rfe15061 - Improve efficiency of SPARQL queries with large datasets

AllegroGraph now determines at query time whether it would be more efficient to issue getStatements calls for each graph in a dataset or to issue a single getStatements call and filter the results to include only graphs in the dataset. Depending on the triple-store and the dataset, this can be significantly more efficient.

Rfe15006 - Improve GRAPH and PROPERTY PATH query planning and execution

AllegroGraph now handles property path queries inside of GRAPH clauses more efficiently when the graph is a variable and the clause contains no property path queries that use any of the ZeroOrMorePath, OneOrMorePath, or ZeroOrOnePath operators.

Rfe14450 - Improving cross product warning

The warning issued when AllegroGraph detects a cross product in a SPARQL query is now more descriptive.

Bug24779: Constructed triples should not allow blank nodes in the predicate postion

AllegroGraph was incorrectly allowing CONSTRUCT to produce blank nodes in the predicate position of triples. This has been corrected.

Bug24762 - SPARQL DELETE/INSERT/WHERE and Chunk processing could fail

If the chunk size was too small, a SPARQL DELETE/INSERT/WHERE command could fail to correctly process triples.

Bug24755 - Problems in intervalAfterDatetime and intervalBeforeDatetime

The intervalAfterDatetime magic property could fail to find solutions when using a constant datetime rather than a variable. Additionally, both intervalAfterDatetime and intervalBeforeDatetime could fail to find solutions when the intervals were defined on explicit times rather than using named time points.

Bug24709 - FILTER EXISTS and unbound variables on the RHS

AllegroGraph used to return incorrect results for FILTER EXISTS expressions when the RHS contained any unbound variables. This has been corrected.

Bug24704 - Improve strategy used to find unique values in a store

AllegroGraph uses several techniques to determine all of the unique values stored for subject, predicate, object, or graph. Depending on the quads in the store and the shape of the query, one of these techniques can be much more efficient than the others. It was possible, however, for AllegroGraph to choose the wrong technique in some cases. This has been corrected.

Bug24665 - SPARQL queries with :dateTime inequality filters could lose results

Query results could be lost if a SPARQL query used a non-inclusive inequality filter on xsd:dateTimes or xsd:times. This has been corrected.

Bug24455 - Incorrect results when join variables might be unbound

AllegroGraph would sometimes return incorrect results from joins where a part of the join key was unbound.

This has been corrected.

Bug24215 - Unbound values in join keys

When merging solutions during a join, AllegroGraph would sometimes not produce bindings for variables that are only bound on the RHS of the join and are a part of the join key.

For instance when running this query:

select * {  
  { values(?x ?y) {(1 undef)} }  
  { values(?x ?y) {(undef 2)} }  
} 

AllegroGraph would return (?x = 1, ?y = undef) instead of the expected (?x = 1, ?y = 2).

This has been corrected.

AGWebView

No significant changes.

Changes to the Lisp API

Bug24796 - intern-resource error on future-part with unregistered namespace abbreviation

A call to intern-resource on a future-part whose namespace abbreviation was not defined would signal a bus error. This will now signal a condition of type cannot-resolve-namespace-for-future-part-error.

Prolog

No significant changes.

Documentation

No significant changes.

nD Geospatial

No significant changes.

AllegroGraph 6.2.2

AllegroGraph Server: General Changes

Rfe14926: Reserve parentheses characters

Parentheses are no longer allowed in triple store or catalog names. These characters are reserved for use in triple store specifications.

Bug24700 - Unfriendly error message when session ports are unavailable

Previously, if a request to create a session cannot be completed due to lack of an available session port, an unfriendly error message was reported. This has been fixed and now a clear error message is returned.

Bug24687 - Deleting a tlog when free list is full throws error.

Fixes a bug introduced in v6.1.4 where a tlog that was deleted due to the free list being full would be repeatedly deleted by AllegroGraph despite it no longer existing. This bug could prevent the freeing/deletion of old tlogs, causing them to accumulate.

Log entries that indicate this bug, would be similar to the following:

[2017-05-22T13:49:21.800 p17318 tlarchiver] Store "bug24687", free list is full, will just delete "tlog-2477c96f-0579-ba54-b60b-7083f2293fa8-27"  
 
... later ...  
 
[2017-05-22T13:51:34.996 p17318 tlarchiver] Store "bug24687", free list is full, will just delete "tlog-2477c96f-0579-ba54-b60b-7083f2293fa8-27"  
[2017-05-22T13:51:34.999 p17318 E tlarchiver] Store "bug24687", Attempt to delete tlog-27 gave error There is no file named /dbs/bug24687/tlog-2477c96f-0579-ba54-b60b-7083f2293fa8-27: No such file or directory [errno=2].: No such file or directory [errno=2].  

Bug24673 - FTI merger can create empty data file

The FTI merger process sometimes fails and logs an error message similar to the following:

Process 'repo FTI Merger' raised: opening  
#<mapped-file-simple-stream  
#P"/agdata/data/rootcatalog/repo/fti-2-chunk-114-data" mapped  
closed @ #x100054959b2> resulted in error (code 22): Invalid  
argument. 

this has been corrected.

Bug24663 - TriG parser uses the wrong graph on the first blank node

In TriG nested blank nodes can be specified in a graph other than the default graph. When the TriG parser encountered the first nested blank node inside a non-default graph the graph for the triples derived from the parsing of that nested blank node would incorrectly be set to the default graph. This has been fixed to use the correct graph.

Bug24642: Incorrect text index query warning

AllegroGraph v6.1.4 added a check and warning for text index queries which could not possibly match. Under certain circumstances this check would warn even though the query could match. This has been corrected.

Bug24623 - SNA path finding in remote-triple-stores did not suppport blank nodes

If a path contained blank nodes, then the SNA path finding functions would signal an error if used on a remote triple-store. This has been corrected.

Bug24615 - Static filter function not re-esablished when attaching to a store

Previously when opening an existing triple store, the static attribute filter was not reestablished. This has been fixed.

Bug24588 - load-nqx does not properly track line numbers

When an error occurs loading extended triples via load-nqx and agload the incorrect line number is reported. This has been corrected.

Bug24548: TransactionLogArchive directive doesn't create catalog and repository directories when tlarchiver is initiated

AllegroGraph did not previously create the TransactionLogArchive directory when starting a database instance. Instead a "no such file or directory" error was logged when the tlarchiver ran. This has been fixed. The directory (and any subdirectories) are now created when a database instance starts, if needed.

Bug24545 - Store specification containing a remote URL could fail

A "missing value for argument db.agraph::user" error would occur when starting a session using a store specification containing a remote URL without authentication information. This has been fixed.

Bug24342 - load-turtle loses default-attributes for RDF collections

Previously the Turtle parser would fail to include attributes when parsing an RDF collection such as:

prefix : <ex://foo#>  
:a :p (1 2 3) . 

This has been fixed.

Bug21595 - agload bad error message when given a filespec that does not exist

The agload program reported misleading error messages when attempting to load files that did not exist or contained wildcards. This has been improved by reporting an accurate and more useful error message. See Data Loading for more information on agload.

HTTP API

Rfe14967 - Ensure that the statements REST API uses namespace abbreviations

The statements REST API was not using user defined namespaces to abbreviate RDF resources in formats that supported them like turtle or TriG. This has been corrected.

Rfe14930 - Improve error message when a file cannot be accessed

The agload process for loading a local file via the HTTP interface reported misleading and inaccurate error messages when the local file was inaccessible. This has been improved by returning an accurate and useful error message in the HTTP response.

SPARQL

Rfe14978 - Improve efficiency for SPARQL datasets with many graphs

AllegroGraph now operates on SPARQL datasets with many graphs more efficiently.

Rfe14975 - SPARQL dataset validator is inefficient for large dataset specifications

The SPARQL engine validates any dataset specification before it begins execution. This change improves the performance of the validation which helps query speed especially when the dataset has more than a few thousand graphs.

Rfe14974 - SPARQL parser is inefficient for large dataset specifications

SPARQL queries with thousands of FROM and FROM NAMED clauses in their dataset description now parse much more efficiently.

Rfe14931 - Improve how property path queries implement filtering

SPARQL Property Path queries now handle FILTERs more efficiently.

Rfe14899 - Warn if query LIMIT/OFFSET and externally imposed LIMIT/OFFSET conflict

Pursuant with the changes made for Rfe14597 (described below), AllegroGraph will now warn if a query's internal and external LIMITs differ or if a both an internal and external OFFSET are supplied.

Rfe14597 - Reduce confusion between internal and external query limit and offsets

Previously, any externally imposed LIMIT or OFFSET would override the LIMIT or OFFSET in the query string. This was most evident in AGWebView because the web interface uses a dropdown selector to pick the LIMIT and this LIMIT overrode any specified in the query.

Now, AllegroGraph will:

Bug24684 - Property Paths and MINUS could interact badly

It was possible for queries that used MINUS and Property Paths to generate incorrect answers. This has been corrected.

Bug24610 - Trivial equivalence constraints cause an error.

Queries containing trivial equivalence constraints, such as filter(?x = ?x), used to cause the following error:

missing value for argument db.agraph.sbqe::var2 

This has been corrected.

Bug24609 - User attributes set via the SPARQL prefix could be ignored

Depending on how a query was executed, any user attributes set via the userAttributes SPARQL query prefix option could be ignored. This has been corrected.

Bug24608 - Spurious join results.

When performing joins where the left hand side contained unbound values (resulting from the use of OPTIONAL or UNDEF keywords) AllegroGraph could sometimes return the same solution row multiple times. For instance, the following query:

SELECT * {  
  { values (?a ?x ?y) {(0 1 2)} }  
  optional { values (?a ?y ?z) {  
		(0 2 3)  
		(0 undef 4)  
		(undef 2 5) }  
  }  
} 

Would return 4 results, including two copies of the (0 1 2 5) row. This has been corrected.

Bug24599 - concatenated-cursors don't support extended triples

When a SPARQL query which uses attributes-related magic properties is issued against a graph-filtered triple store, an error like the following can occur:

Executing query failed: #<concatenated-cursor @ #x1000732dc52>  
does not support fat-triples 

This has been fixed.

Bug24538 - Invalid effective boolean value of constant strings in filters

A query like:

SELECT * {  
 ?s ?p ?o  
 FILTER ("bruce")  
} 

was returning no results when it should have returned every row in the store. Non-blank strings are supposed to have an effective boolean value of "true". Blank strings have an effective boolean value of "false". This has been fixed.

Bug24530 - SPARQL-JSON result format does not handle encoded boolean properly

Previously, boolean values in SPARQL-JSON results were represented as the strings "0" and "1". Now boolean values are correctly represented as "false" and "true".

AGWebView

Rfe14968 - Remove the deprecated planner option from AGWebView

Remove the long deprecated planner option from AGWebView's query page. This option has had no effect for some time.

Rfe13239 - Provide "no limit" option for query results in AGWebView

Subject to the resources of the web browser, AGWebView can now return an unlimited number of results from a query. By default, AGWebView will display 1000 results or use the limit specified by the query (if it is smaller than 1000). Because of this, the More Results button has also been removed. See the WebView document for information on AGWebView.

Bug24616 - N-Triples parser errors mention NQX

When trying to load a .nt or .nq file through AGWebView and a parsing error occurs the error message states that a "NQX" parsing error occurred when it should have stated it was an N-Triples (for .nt) or N-Quads (for .nq) parsing error. This has been fixed to report the correct format type.

Changes to the Lisp API

Bug24669 - serialize-nqx does not work on remote-triple-stores

Serialization of attributed triples was not working correctly for remote-triple-stores. This has been corrected.

Bug24658 - load-nqx fails on remote-triple-stores

An error would occur if no default attributes were passed to load-nqx on a remote-triple-store. This has been corrected.

In order to reduce future confusion, the :attributes argument to the various load functions in the Lisp API has been changed to :default-attributes. Note this is an incompatible change. Code using :attributes will signal an error. See the 6.2.2 Programmer Notes for more information.

Bug24549: open-store-from-specification does not work

Previously, attempting to open a triple store using a URL could fail like so:

(open-triple-store "http://localhost:10443/repositories/kennedy")  
Error: Invalid character in triple-store name  
       "//localhost:10443/repositories/kennedy".  
The name may not contain these characters /, \, ~, :,  
Space, $, {, }, <, >, *, +, |, [, ]. 

This has been fixed.

Prolog

No significant changes.

Documentation

No significant changes.

Python Client

Bug24680 - Tonativestring is broken on Python 2

The Python client sometimes failed while processing values with non-ascii characters, showing the following error message:

UnicodeEncodeError: 'ascii' codec can't encode characters in position ??: ordinal not in range(128) 

This has been corrected.

Bug24443 - getStatements sometimes breaks for raw Python values

The getStatements function can be called with a raw Python value, instead of an RDF term, as its third argument (object filter). For instance, the following call:

conn.getStatements(None, somePredicate, True) 

would retrieve all triples with the predicate of somePredicate and the object equal to "true"^^xsd:boolean.

This mechanism did not work correctly if the second argument (predicate filter) was None. In that case an AttributeError exception would be raised.

This has been corrected.

Java Client

Rfe14990 - Provide methods to download query results

The Java client now contains methods to download and save query results to a file. The new methods are:

Both methods have multiple overloads, allowing for the output path and desired output format to be passed in a variety of ways.

Rfe14970 - Speed up AllegroGraph java client connection pools.

Depending on the connection pool configuration, many unnecessary requests could be made to the AllegroGraph server when borrowing/returning connections to/from a connection pool.

These calls have been cleaned up, resulting in improved connection pool performance.

Bug24648 - inferredGraph parameter missing from AGMaterializer

When materializing triples through the Java API it is now possible to specify the graph into which the generated triples will be added.

Bug24644 - Fix TriG import via the Java client.

The AllegroGraph Java client would fail when attempting to import TriG data due to the content-type "application/x-trig" being unsupported in the server.

AllegroGraph now supports TriG data imported with a content-type of either "application/trig" or "application/x-trig".

nD Geospatial

No significant changes.

AllegroGraph 6.2.1

AllegroGraph Server: General Changes

Rfe14881 - Cross attribute comparisons

AllegroGraph 6.2.0 added a restriction against using an attribute filter operator with two different types. An attempt to perform such an operation would result in a "Comparisons between attributes of different types is not supported" error message.

This restriction has been removed. Note, however, that ordered comparisons between different attribute types is still not allowed since there is no defined ordering between two ordered attributes. Triple attributes are discussed in Triple Attributes.

Bug24567 - Initial superuser account file owned by root if configure-agraph run as root

Previously, if AllegroGraph was installed, configured, and started as root, the directories and account file for the initial superuser remained owned by root. This resulted in the following error the first time the superuser made access to AllegroGraph:

mkstemp failed: Permission denied [errno=13] 

This has been corrected.

Bug24557 - Fix bug restoring repositories with a non-default stringTableSize.

When restoring repositories with a non-default stringTableSize directive to v6.2.0, a bug in an upgrade step would cause the repo's string table to be set to the default size of 16M. If the stringTableSize was larger than this default, the string table would be truncated, causing data loss and possible corruption.

This bug has been fixed.

Bug24548 - TransactionLogArchive directive doesn't create catalog and repository directories when tlarchiver is initiated

AllegroGraph did not previously create the TransactionLogArchive directory when starting a database instance. Instead a "no such file or directory" error was logged when the tlarchiver ran. This has been fixed. The directory (and any subdirectories) are now created when a database instance starts, if needed.

Bug24342 - load-turtle loses default-attributes for RDF collections

Previously the Turtle parser would fail to include attributes when parsing an RDF collection such as:

prefix : <ex://foo#>  
:a :p (1 2 3) . 

This has been fixed.

HTTP API

No significant changes.

SPARQL

Bug24538 - Invalid effective boolean value of constant strings in filters

A query like:  
SELECT * {  
 ?s ?p ?o  
 FILTER ("bruce")  
} 

was returning no results when it should have returned every row in the store. Non-blank strings are supposed to have an effective boolean value of "true". Blank strings have an effective boolean value of "false". This has been fixed.

Bug24530 - SPARQL-JSON result format does not handle encoded boolean properly

Previously, boolean values in SPARQL-JSON results were represented as the strings "0" and "1". Now boolean values are correctly represented as "false" and "true".

Bug24529 - Some queries using VALUES produce wrong results.

Some queries using the VALUES keyword and joins or unions produced incorrect results. More specifically some rows were missing from the result.

Two examples of such queries are:

select ?x { { values(?x) {(1)} } union { values(?x) {(2)} } } 

and

select ?x ?y ?z { { values (?x ?y ?z) {(1 2 3)} }  
                  { values () {()} }} 

The first one would produce only a single result (2), while the second one would not produce any results. This has been corrected.

Bug24528 - Wrong join results when using the CAAT strategy

When using the chunk-at-a-time execution strategy some queries that performed left joins with the identity set would produce spurious results. One such query is:

select ?a ?b ?c {  
  { ?a ?b ?c } union { ?c ?b ?a }  
  optional { bind(42 as ?x) }  
} 

This has been corrected.

AGWebView

No significant changes.

Changes to the Lisp API

Bug24545 - parse-remote-store-specification returns inconsistent results

A "missing value for argument db.agraph::user" error would occur when starting a session using a store specification containing a remote URL without authentication information. This has been fixed.

Prolog

No significant changes.

Documentation

No significant changes.

Python Client

Rfe14695 - Replace pycurl with requests.

The HTTP library used by the AllegroGraph Python client has been changed from pycurl to requests. This change means that the Python client no longer depends on any libraries that require native extensions. This results in a simpler installation process, as it is no longer necessary to have a working C development environment on the target machine.

Note that pycurl will still be used if it is installed, since it might offer better performance in some scenarios.

Bug24582 - AGRAPH_PROXY variable not used

Proxy settings specified through the AGRAPH_PROXY environment variable used to be ignored.

This has been corrected.

Java Client

No significant changes.

nD Geospatial

No significant changes.

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:

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.

User-visible changes in earlier releases

See Change History for user-visible changes to earlier releases.