[Mulgara-general] Mulgara 2.0.7 released

Paul Gearon gearon at ieee.org
Sat Dec 13 23:02:38 UTC 2008


On Sat, Dec 13, 2008 at 10:31 PM, David Legg
<david.legg at searchevent.co.uk> wrote:
>
>> I am pleased to announce the release of Mulgara version 2.0.7.
>>
>> Features to note in this release are:
>> - New relative and parameterized graph URIs.
>>
>
> Could someone expand on this new feature?

I'll start with relative URIs...

In the past all graph names were of the form:
  rmi://hostname/server#graphname

The fragment was the only real differentiator, and the rest of the URL
was used to locate an connect to the server (hence, I'm calling it a
URL here, rather than URI). Since the Connection interface was created
the first part of the URL is not as necessary anymore. The
TqlAutoInterpreter still uses the host/server part of a URL to find
the database, but most applications can ignore it.

So if we don't need the first part any more, then that means we can
just use the last portion instead of the whole thing. That means that
the system graph can stop being referred to as:
  <rmi://localhost/server1#>
And instead, it can referred to as <#>. Personally, I think that's
really handy, as it means my queries can remain unchanged, regardless
of where the database is being deployed.

Also, because graph names no longer need to start with
rmi://host/server then we can create graphs with ANY name. For
instance, most of my tests will use graph names of <test:data> or
<foo:bar>.

However, there are occasions where you may want the URI to be a URL
(ie. it describes the location of the data), but <foo:bar> doesn't
help there. So to enable this, we now accept URIs that are similar to
the original form, but instead of a fragment for the name, they use a
parameter named "graph". So to encode <foo:bar> that appears on a
host/server then the URL is:
  <rmi://host/server?graph=foo%3Abar>

> In particular I'm interested to know how this affects Sparql queries and
> what the new URIs should look like in an example command.

One use for this is if you want to send a query to server A, but to
have some of the data come from a graph named <foo:bar> on server B.

prefix ns: <http://namespace/>
select $subject $property $value
from <data:test>
where { $subject a ns:Object .
    graph <rmi://host/server?graph=other$3Adata> { $subject $property $object }
}

> I'm trying some simple code out which used to work in 2.0.6 but fails in
> the trunk code (2.0.7+).  I keep getting the following stack error: -

Doing something similar here worked fine. So I'll have to stop doing
something *similar* and copy it exactly. However, it's a weekend and
family are calling, so I'll get to this tomorrow.

> I'm just wondering if the new parameterized graph URIs have broken
> support for the old graph URIs and I'm not sure how to specify them
> using the new scheme.

No, but there may be corner cases that were overlooked. All the
existing tests are still using graph names of the form
<rmi://host/server#fragment> and everything still passes. So I'll
suspect something else may be your problem, but I'll try to confirm
this first.

Regards,
Paul



More information about the Mulgara-general mailing list