Mulgara Project: Issueshttps://code.mulgara.org/https://code.mulgara.org/favicon.ico?15861924492009-02-03T05:55:09ZMulgara Project
Redmine Mulgara - Bug #180 (Closed): CONSTRUCT queries only handle 3 columnshttps://code.mulgara.org/issues/1802009-02-03T05:55:09ZPaula Gearon
<p>CONSTRUCT may work with any multiple of 3 elements, however Mulgara only handles a single set of 3.</p>
<p>e.g. The following query:<br /><pre>
construct { $s a ns:item; dc:text $o } where { $s ns:pred $o }
</pre><br />Gives an error of:<br /><pre>
cannot construct graph with 6 columns.
</pre></p> Mulgara - Bug #179 (Closed): Doing a FILTER REGEX with 2 parameters gives an errorhttps://code.mulgara.org/issues/1792009-02-03T05:44:42ZPaula Gearon
<p>Simple queries with 2 parameter regex filters fail with NPE. e.g.:<br /><pre>
select * where { ?s ?p ?o filter regex(?o, ".*sold.*") }
</pre></p>
<pre></pre> Mulgara - Bug #169 (Closed): CREATE on the SPARQL protocol should return RDF/XMLhttps://code.mulgara.org/issues/1692008-11-10T21:21:04ZPaula Gearon
<p>CREATE is basically being implemented as a select for 3 columns. That provides the correct data, but in the wrong format.</p>
<p>We need to use the RDF/XML exporter to convert the data being created into an RDF/XML graph.</p> Mulgara - Bug #155 (Closed): Allow relative URIs in querieshttps://code.mulgara.org/issues/1552008-10-17T22:21:50ZPaula Gearon
<p>Queries current check URIs to see if they are relative or absolute. This is down in the URIReference code, and should be avoided.</p> Mulgara - Feature #140 (Closed): Backup/Restore for XA 1.1 Data Poolhttps://code.mulgara.org/issues/1402008-08-25T17:33:34ZPaula Gearon
<p>Backup/Restore are not supported for the XA 1.1 data pool.</p>
<p>The problem is that the existing implementation dictates the node numbers to be used by the store, while XA 1.1 must assign these numbers.</p>
<p>The solution is to allow the store to assign gNodes, but to map these to the requested gNodes using an IntFile. Then during the statement loading phase the nodes being read from the backup file can be looked up in the IntFile to discover that actual nodes that were stored.</p>
<p>So that the XA 1 and XA 1.1 data (string) pools can both be used, a new interface should be attached to the XAStringPool interface that maps backup gNodes to internal gNodes. The XA 1 implementation will be an identity mapping, while the XA 1.1 implementation will use the IntFile approach just described.</p>
<p>Note that this approach is not efficient for XA 1.1 backup/restore. A new backup format should be created for this.</p> Mulgara - Bug #139 (Closed): base64 encoding for XA 1.1 String Poolhttps://code.mulgara.org/issues/1392008-08-25T17:26:38ZPaula Gearon
<p>The scripted TQL tasks failed to return some data that was encoded with base64. This may be something in the string pool or some strange interaction with something else, as I haven't looked too closely at it yet. Every other data type appears OK, so far.</p>
<p>The problem appears in the tests in jxtest/iTQL/data_types/binary/base64Binary. The third test should give the results in queryResult3.txt, but the results are instead empty (the result is still well formatted, but contains an empty set).</p> Mulgara - Feature #114 (Closed): DESCRIBE querieshttps://code.mulgara.org/issues/1142008-05-17T22:52:54ZPaula Gearon
<p>DESCRIBE queries need to be implemented.</p>
<p>While this can just return a value of "Pink fluffy elephants", something more intelligent will be better.</p>
<p>I am thinking of taking the DESCRIBE variable ($d), and adding the following to the WHERE clause:</p>
<p>AND</p>
<pre><code>(($d $predicate $value AND</code></pre>
<pre><code>$predicate &lt;rdf:label&gt; $property)</code></pre>
<pre><code>OR</code></pre>
<pre><code>($d $property $value MINUS</code></pre>
<pre><code>$property &lt;rdf:label&gt; $label))<br /> AND</code></pre>
<pre><code>$value &lt;rdf:type&gt; &lt;rdfs:Literal&gt; in &lt;sys:type&gt;</code></pre>
<p>This shows all literal properties, using labels for the predicate where possible, and URIs when not.</p> Mulgara - Feature #113 (Closed): ASK querieshttps://code.mulgara.org/issues/1132008-05-17T22:36:44ZPaula Gearon
<p>ASK queries are not yet implemented.</p>
<p>Session should be updated to handle an ASK query. In this way the new "Boolean Answer" can be returned for ASK queries. This is NOT necessary, but will cut dramatically cut down on network bandwidth.</p>
<p>Boolean answers will be a new trivial Answer type that returns a single row. The variable will be called "result", and the value in the single row will be "true" or "false".</p> Mulgara - Feature #112 (Closed): CONSTRUCT SPARQL querieshttps://code.mulgara.org/issues/1122008-05-17T22:32:28ZPaula Gearon
<p>CONSTRUCT queries need to be implemented.</p>
<p>These are almost identical to SELECT. There are 2 differences:</p>
<p>1. Only 3 elements in the selection, and they need not be variables (this is OK in Query, though SPARQL SELECT does not expect it).</p>
<p>2. Variables in the selection clause need to be constrained:</p>
<pre><code>a. variable subjects ($subj) should have a "minus $subj &lt;rdf:type&gt; &lt;rdfs:Literal&gt; in &lt;sys:type&gt;" appended to the WHERE clause.</code></pre>
<pre><code>b. variable predicates should have a "and $pred &lt;rdf:type&gt; &lt;mulgara:URIReference&gt; in &lt;sys:type&gt;" appended to the WHERE clause.</code></pre>
<p>Item (2) can be delayed, though it will result in a non-compliant CONSTRUCT query.</p> Mulgara - Feature #105 (Closed): Duplicate variables in BGPs can be handled in algebrahttps://code.mulgara.org/issues/1052008-05-08T06:06:17ZPaula Gearon
<pre>
Instead, successive instances of the same variable should be renamed, and the constraint should be conjoined with itself with the repeated variables rotated around.
e.g. for 2 variables:
{?x ?x ?y} becomes: {?x ?x2 ?y} AND {?x2 ?x ?y}
{?x ?y ?x} becomes: {?x ?y ?x2} AND {?x2 ?y ?x}
{?y ?x ?x} becomes: {?y ?x ?x2} AND {?y ?x2 ?x}
and for 3 variables:
{?x ?x ?x} becomes: {?x ?x2 ?x3} AND {?x3 ?x ?x2} AND {?x2 ?x3 ?x}
The values of ?x2 and ?x3 can always be ignored since they are identical to ?x.</pre> Mulgara - Feature #102 (Closed): Add timezone support to DateTime literalshttps://code.mulgara.org/issues/1022008-04-18T18:03:24ZPaula Gearon
<p>Timezones need 7 bits for quarter hour accuracy (all that's required). This should be storable in one of the existing fields - or at least at the top of the 64 bits when doing inlining of the literals.</p> Mulgara - Bug #93 (Closed): Console re-running commandshttps://code.mulgara.org/issues/932008-03-26T22:57:23ZPaula Gearon
<p>If a command is incomplete on the console (no ; character) then the previous successful command can be run instead.</p> Mulgara - Bug #64 (Closed): Distributed Blank Nodes not reused for select/inserthttps://code.mulgara.org/issues/642007-06-15T05:39:29ZPaula Gearon
<pre>
<code class="html syntaxhl">Insert/select from one server to another leads to blank nodes not being properly recycled. This means that one blank node used 5 times will be inserted as 5 separate blank nodes.
</code></pre> Mulgara - Bug #63 (Closed): AVLNode being released multiple timeshttps://code.mulgara.org/issues/632007-05-17T21:51:04ZPaula Gearon
<pre>
<code class="html syntaxhl">During backups the following exception may be thrown:
<span class="nt"><br/></span>
<span class="nt"><br/></span>
Caused by: java.lang.AssertionError
<span class="nt"><br/></span>
at org.mulgara.store.xa.Block.dispose(Block.java:524)
<span class="nt"><br/></span>
at org.mulgara.store.xa.Block.release(Block.java:512)
<span class="nt"><br/></span>
at org.mulgara.store.xa.AVLNode.release(AVLNode.java:1030)
<span class="nt"><br/></span>
at org.mulgara.store.stringpool.xa.XAStringPoolImpl$Phase$GNodeTuplesImpl.close(XAStringPoolImpl.java:2728)
<span class="nt"><br/></span>
at org.mulgara.resolver.BackupOperation.backupDatabase(BackupOperation.java:196)
<span class="nt"><br/></span>
at org.mulgara.resolver.BackupOperation.execute(BackupOperation.java:145)
<span class="nt"><br/></span>
at org.mulgara.resolver.MulgaraTransaction.execute(MulgaraTransaction.java:547)
<span class="nt"><br/></span>
... 15 more
<span class="nt"><br/></span>
<span class="nt"><br/></span>
This is happening as an AVLNode is being released twice. The stack trace here shows the second release.
<span class="nt"><br/></span>
<span class="nt"><br/></span>
The AVLNode that is being closed here is a member of XAStringPoolImpl called avlNode. But this class appears to manage the avlNode member correctly. The intermittent nature of the problem is unlikely to come from this class anyway.
<span class="nt"><br/></span>
<span class="nt"><br/></span>
An alternative source of the problem could be in the [[ObjectPool]]. The XAStringPoolImpl class uses a member called writerObjectPool for managing all reusable objects for both reading and writing. It may be that a simultaneous read/write could lead the object pool to passing out the same AVLNode to different phases. Access to writerObjectPool is properly synchronized, so this is not a problem. However, it is usually valid (and desirable) to reuse the same AVLNode when reading and writing on the same phase, and this optimization may be leading to re-use between phases. If true, then this would also explain the intermittent nature of the problem.
</code></pre> Mulgara - Bug #54 (Closed): Blank nodes load incorrectly from N3 fileshttps://code.mulgara.org/issues/542007-04-15T05:04:23ZPaula Gearon
<pre>
<code class="html syntaxhl">Loading the following N3 file (from the SPARQL docs) results in 6 separate blank nodes, when there should be only 2 separate blank nodes:
<span class="nt"><br/></span>
<span class="nt"><br/></span>
<span class="nt"><br/></span>
@prefix foaf: <span class="ni">&lt;</span><span class="nt"><a</span> <span class="na">href=</span><span class="s">"http://xmlns.com/foaf/0.1/"</span><span class="nt">></span>http://xmlns.com/foaf/0.1/<span class="nt"></a></span><span class="ni">&gt;</span> .
<span class="nt"><br/></span>
@prefix rdf: <span class="ni">&lt;</span><span class="nt"><a</span> <span class="na">href=</span><span class="s">"http://www.w3.org/1999/02/22-rdf-syntax-ns#"</span><span class="nt">></span>http://www.w3.org/1999/02/22-rdf-syntax-ns#<span class="nt"></a></span><span class="ni">&gt;</span> .
<span class="nt"><br/></span>
<span class="nt"><br/></span>
_:a rdf:type foaf:Person .
<span class="nt"><br/></span>
_:a foaf:name <span class="ni">&quot;</span>Alice<span class="ni">&quot;</span> .
<span class="nt"><br/></span>
_:a foaf:mbox <span class="ni">&lt;</span>mailto:<span class="nt"><a</span> <span class="na">href=</span><span class="s">'mailto:alice@example.com'</span><span class="nt">></span>alice@example.com<span class="nt"></a></span><span class="ni">&gt;</span> .
<span class="nt"><br/></span>
_:a foaf:mbox <span class="ni">&lt;</span>mailto:<span class="nt"><a</span> <span class="na">href=</span><span class="s">'mailto:alice@work.example'</span><span class="nt">></span>alice@work.example<span class="nt"></a></span><span class="ni">&gt;</span> .
<span class="nt"><br/></span>
<span class="nt"><br/></span>
_:b rdf:type foaf:Person .
<span class="nt"><br/></span>
_:b foaf:name <span class="ni">&quot;</span>Bob<span class="ni">&quot;</span> .
</code></pre>