You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by "Osman, Taha" <ta...@ntu.ac.uk> on 2012/02/25 05:11:51 UTC
UOBM dataset
Hi,
We have been performing some benchmarking experiments on the UOBM dataset
expanding on our previously published paper in ESWC 2010 (attached). The
response times of Oracle and Owlim is somewhat consistent, but we were
surprised that Jena TDB's (0.8.10) response time was extremely slow in
general and did not return any results (Java runs out of heap space) for
all the UOBM queries even while using the least expressive RDFS reasoning.
Can you shed light on the matter?
Here is how we load the dataset (TBox file(s) are loaded first):
jenaModel = TDBFactory.createModel(rootDirPath + repositryName);
InputStream in = FileManager.get().open(dataFile.getCanonicalPath());
...
jenaWatch.start();
jenaModel.read(in, baseURI,formatType);
jenaWatch.stop();
and here is how we fire the queries:
Model jenaModel = TDBFactory.createModel(rootDirPath + repoName);
InfModel jenaInfModel = ModelFactory.createRDFSModel(jenaModel);
...
jenaWatch.start();
iquery = QueryExecutionFactory.create(query,jenaInfModel);
ResultSet iresult = iquery.execSelect();
while(iresult.hasNext()) {
QuerySolution soln = iresult.nextSolution() ;
}
jenaWatch.stop();
We have also tried loading the TDB with the ABox only, then binding the
selected reasoner with the TBox schema (>> reasoner.bindSchema(schema)).
Attached: our ESWC paper, UOBM queries+TBox, Response times (TDB failed to
execute any of the queries).
Best regards
Taha
--
Dr Taha Osman
Computing and Informatics Building
School of Science and Technology
Nottingham Trent University
Clifton Campus
Nottingham NG11 8NS
Tel: +44 (0)115 848 8370
Fax: +44(0)115 848 8429
DISCLAIMER:
This email is intended solely for the addressee. It may contain private
and confidential information. If you are not the intended addressee,
please take no action based on it nor show a copy to anyone. In this case,
please reply to this email to highlight the error. Opinions and
information in this email that do not relate to the official business of
Nottingham Trent University shall be understood as neither given nor
endorsed by the University. Nottingham Trent University has taken steps to
ensure that this email and any attachments are virus-free, but we do
advise that the recipient should check that the email and its attachments
are actually virus free. This is in keeping with good computing practice.
DISCLAIMER: This email is intended solely for the addressee. It may contain private and confidential information. If you are not the intended addressee, please take no action based on it nor show a copy to anyone. In this case, please reply to this email to highlight the error. Opinions and information in this email that do not relate to the official business of Nottingham Trent University shall be understood as neither given nor endorsed by the University. Nottingham Trent University has taken steps to ensure that this email and any attachments are virus-free, but we do advise that the recipient should check that the email and its attachments are actually virus free. This is in keeping with good computing practice.
Re: riot.infer problem
Posted by "Osman, Taha" <ta...@ntu.ac.uk>.
Thanks for this. My schema (T-Box) is split between three files. Is there
any way of using them all without amalgamating them into one file first?
To illustrate: in a folder called 'ont' I have: 001-schema.owl,
002-schema.owl, 003-schema.owl - representing the ontology's T-Box, in a
second folder called 'dataset' I have the data files (A-Box): univ-1.owl,
univ-2.owl, .. Univ-20.owl. How would the pipeline look like? My
understanding so far (assuming my TDB repository is called TDBrepos1):
>bash riot ./dataset/* | infer --rdfs=[001-schema.owl, 002-schema.owl,
>003-schema.owl - how??] | tdbloader --loc=TDBrepos1
Cheers
Taha
On 12/03/2012 15:36, "Andy Seaborne" <an...@apache.org> wrote:
>On 12/03/12 15:02, Osman, Taha wrote:
>> Hi,
>>
>> The riot process is executing fine (I'm passing to RIOT a folder that
>> contains the T-Box as first file, then a number of A-Box files).
>>However,
>> the 'infer --rdfs=vocab' is failing with the error:
>>
>> com.hp.hpl.jena.shared.NotFoundException: Not found: vocab
>> at
>>com.hp.hpl.jena.util.FileManager.readModelWorker(FileManager.java:388)
>> at
>>com.hp.hpl.jena.util.FileManager.loadModelWorker(FileManager.java:299)
>> at
>>com.hp.hpl.jena.util.FileManager.loadModel(FileManager.java:250)
>> at riotcmd.infer.processModulesAndArgs(infer.java:108)
>> at arq.cmdline.CmdArgModule.process(CmdArgModule.java:38)
>> at arq.cmdline.CmdMain.mainMethod(CmdMain.java:84)
>> at arq.cmdline.CmdMain.mainRun(CmdMain.java:47)
>> at arq.cmdline.CmdMain.mainRun(CmdMain.java:34)
>> at riotcmd.infer.main(infer.java:79)
>>
>> Am I doing anything wrong? I'm using bash on a Mac System, and The
>>ARQROOT
>> and CLASSPATH are set correctly.
>> Sorry if this is a basic question, but I could not find detailed
>> documentation/examples for this specific issue.
>
>It's looking for a file called "vocab"
>
>If your RDFS schema is in a file called foobar.rdfs use:
>
>infer --rdfs=foobar.rdfs
>
> Andy
>
>
>>
>>
>> Thanks
>> Taha
>>
>>
>> On 28/02/2012 13:38, "Andy Seaborne"<an...@apache.org> wrote:
>>
>>> On 27/02/12 09:46, Osman, Taha wrote:
>>>> Thanks Andy,
>>>>
>>>> Can you point me to the documentation/examples regarding the
>>>> bulk-loading
>>>> with RDFS forward-chaining that you advise below.
>>>> The only relevant doc I could find is:
>>>>
>>>>
>>>>"http://incubator.apache.org/jena/documentation/tdb/commands.html#tdblo
>>>>ad
>>>> er
>>>> ", which is not very informative.
>>>>
>>>> Regards
>>>> Taha
>>>
>>> The RDFS forward-chaining program is in ARQ: arq.infer:
>>>
>>> infer --rdfs=vocab FILE ...
>>>
>>> It reads from stdin as well so:
>>>
>>> riot FILE .... | infer --rdfs=vocab | tdbloader --loc=Db -- -
>>>
>>> Andy
>>
>> DISCLAIMER: This email is intended solely for the addressee. It may
>>contain private and confidential information. If you are not the
>>intended addressee, please take no action based on it nor show a copy to
>>anyone. In this case, please reply to this email to highlight the error.
>>Opinions and information in this email that do not relate to the
>>official business of Nottingham Trent University shall be understood as
>>neither given nor endorsed by the University. Nottingham Trent
>>University has taken steps to ensure that this email and any attachments
>>are virus-free, but we do advise that the recipient should check that
>>the email and its attachments are actually virus free. This is in
>>keeping with good computing practice.
>
DISCLAIMER: This email is intended solely for the addressee. It may contain private and confidential information. If you are not the intended addressee, please take no action based on it nor show a copy to anyone. In this case, please reply to this email to highlight the error. Opinions and information in this email that do not relate to the official business of Nottingham Trent University shall be understood as neither given nor endorsed by the University. Nottingham Trent University has taken steps to ensure that this email and any attachments are virus-free, but we do advise that the recipient should check that the email and its attachments are actually virus free. This is in keeping with good computing practice.
Re: riot.infer problem
Posted by Andy Seaborne <an...@apache.org>.
On 12/03/12 15:02, Osman, Taha wrote:
> Hi,
>
> The riot process is executing fine (I'm passing to RIOT a folder that
> contains the T-Box as first file, then a number of A-Box files). However,
> the 'infer --rdfs=vocab' is failing with the error:
>
> com.hp.hpl.jena.shared.NotFoundException: Not found: vocab
> at com.hp.hpl.jena.util.FileManager.readModelWorker(FileManager.java:388)
> at com.hp.hpl.jena.util.FileManager.loadModelWorker(FileManager.java:299)
> at com.hp.hpl.jena.util.FileManager.loadModel(FileManager.java:250)
> at riotcmd.infer.processModulesAndArgs(infer.java:108)
> at arq.cmdline.CmdArgModule.process(CmdArgModule.java:38)
> at arq.cmdline.CmdMain.mainMethod(CmdMain.java:84)
> at arq.cmdline.CmdMain.mainRun(CmdMain.java:47)
> at arq.cmdline.CmdMain.mainRun(CmdMain.java:34)
> at riotcmd.infer.main(infer.java:79)
>
> Am I doing anything wrong? I'm using bash on a Mac System, and The ARQROOT
> and CLASSPATH are set correctly.
> Sorry if this is a basic question, but I could not find detailed
> documentation/examples for this specific issue.
It's looking for a file called "vocab"
If your RDFS schema is in a file called foobar.rdfs use:
infer --rdfs=foobar.rdfs
Andy
>
>
> Thanks
> Taha
>
>
> On 28/02/2012 13:38, "Andy Seaborne"<an...@apache.org> wrote:
>
>> On 27/02/12 09:46, Osman, Taha wrote:
>>> Thanks Andy,
>>>
>>> Can you point me to the documentation/examples regarding the
>>> bulk-loading
>>> with RDFS forward-chaining that you advise below.
>>> The only relevant doc I could find is:
>>>
>>> "http://incubator.apache.org/jena/documentation/tdb/commands.html#tdbload
>>> er
>>> ", which is not very informative.
>>>
>>> Regards
>>> Taha
>>
>> The RDFS forward-chaining program is in ARQ: arq.infer:
>>
>> infer --rdfs=vocab FILE ...
>>
>> It reads from stdin as well so:
>>
>> riot FILE .... | infer --rdfs=vocab | tdbloader --loc=Db -- -
>>
>> Andy
>
> DISCLAIMER: This email is intended solely for the addressee. It may contain private and confidential information. If you are not the intended addressee, please take no action based on it nor show a copy to anyone. In this case, please reply to this email to highlight the error. Opinions and information in this email that do not relate to the official business of Nottingham Trent University shall be understood as neither given nor endorsed by the University. Nottingham Trent University has taken steps to ensure that this email and any attachments are virus-free, but we do advise that the recipient should check that the email and its attachments are actually virus free. This is in keeping with good computing practice.
Re: riot.infer problem
Posted by Paolo Castagna <ca...@googlemail.com>.
Hi Taha
Osman, Taha wrote:
> Hi,
>
> The riot process is executing fine (I'm passing to RIOT a folder that
> contains the T-Box as first file, then a number of A-Box files). However,
> the 'infer --rdfs=vocab' is failing with the error:
Replace vocab with the location of an RDFS Schema (a.k.a. RDF vocabulary) on
your disk, for example --rdfs=/path/to/your/vocabulary/filename.ttl
Let me know if this solves your problem.
Paolo
>
> com.hp.hpl.jena.shared.NotFoundException: Not found: vocab
> at com.hp.hpl.jena.util.FileManager.readModelWorker(FileManager.java:388)
> at com.hp.hpl.jena.util.FileManager.loadModelWorker(FileManager.java:299)
> at com.hp.hpl.jena.util.FileManager.loadModel(FileManager.java:250)
> at riotcmd.infer.processModulesAndArgs(infer.java:108)
> at arq.cmdline.CmdArgModule.process(CmdArgModule.java:38)
> at arq.cmdline.CmdMain.mainMethod(CmdMain.java:84)
> at arq.cmdline.CmdMain.mainRun(CmdMain.java:47)
> at arq.cmdline.CmdMain.mainRun(CmdMain.java:34)
> at riotcmd.infer.main(infer.java:79)
>
> Am I doing anything wrong? I'm using bash on a Mac System, and The ARQROOT
> and CLASSPATH are set correctly.
> Sorry if this is a basic question, but I could not find detailed
> documentation/examples for this specific issue.
>
>
> Thanks
> Taha
>
>
> On 28/02/2012 13:38, "Andy Seaborne" <an...@apache.org> wrote:
>
>> On 27/02/12 09:46, Osman, Taha wrote:
>>> Thanks Andy,
>>>
>>> Can you point me to the documentation/examples regarding the
>>> bulk-loading
>>> with RDFS forward-chaining that you advise below.
>>> The only relevant doc I could find is:
>>>
>>> "http://incubator.apache.org/jena/documentation/tdb/commands.html#tdbload
>>> er
>>> ", which is not very informative.
>>>
>>> Regards
>>> Taha
>> The RDFS forward-chaining program is in ARQ: arq.infer:
>>
>> infer --rdfs=vocab FILE ...
>>
>> It reads from stdin as well so:
>>
>> riot FILE .... | infer --rdfs=vocab | tdbloader --loc=Db -- -
>>
>> Andy
>
> DISCLAIMER: This email is intended solely for the addressee. It may contain private and confidential information. If you are not the intended addressee, please take no action based on it nor show a copy to anyone. In this case, please reply to this email to highlight the error. Opinions and information in this email that do not relate to the official business of Nottingham Trent University shall be understood as neither given nor endorsed by the University. Nottingham Trent University has taken steps to ensure that this email and any attachments are virus-free, but we do advise that the recipient should check that the email and its attachments are actually virus free. This is in keeping with good computing practice.
riot.infer problem
Posted by "Osman, Taha" <ta...@ntu.ac.uk>.
Hi,
The riot process is executing fine (I'm passing to RIOT a folder that
contains the T-Box as first file, then a number of A-Box files). However,
the 'infer --rdfs=vocab' is failing with the error:
com.hp.hpl.jena.shared.NotFoundException: Not found: vocab
at com.hp.hpl.jena.util.FileManager.readModelWorker(FileManager.java:388)
at com.hp.hpl.jena.util.FileManager.loadModelWorker(FileManager.java:299)
at com.hp.hpl.jena.util.FileManager.loadModel(FileManager.java:250)
at riotcmd.infer.processModulesAndArgs(infer.java:108)
at arq.cmdline.CmdArgModule.process(CmdArgModule.java:38)
at arq.cmdline.CmdMain.mainMethod(CmdMain.java:84)
at arq.cmdline.CmdMain.mainRun(CmdMain.java:47)
at arq.cmdline.CmdMain.mainRun(CmdMain.java:34)
at riotcmd.infer.main(infer.java:79)
Am I doing anything wrong? I'm using bash on a Mac System, and The ARQROOT
and CLASSPATH are set correctly.
Sorry if this is a basic question, but I could not find detailed
documentation/examples for this specific issue.
Thanks
Taha
On 28/02/2012 13:38, "Andy Seaborne" <an...@apache.org> wrote:
>On 27/02/12 09:46, Osman, Taha wrote:
>> Thanks Andy,
>>
>> Can you point me to the documentation/examples regarding the
>>bulk-loading
>> with RDFS forward-chaining that you advise below.
>> The only relevant doc I could find is:
>>
>>"http://incubator.apache.org/jena/documentation/tdb/commands.html#tdbload
>>er
>> ", which is not very informative.
>>
>> Regards
>> Taha
>
>The RDFS forward-chaining program is in ARQ: arq.infer:
>
>infer --rdfs=vocab FILE ...
>
>It reads from stdin as well so:
>
>riot FILE .... | infer --rdfs=vocab | tdbloader --loc=Db -- -
>
> Andy
DISCLAIMER: This email is intended solely for the addressee. It may contain private and confidential information. If you are not the intended addressee, please take no action based on it nor show a copy to anyone. In this case, please reply to this email to highlight the error. Opinions and information in this email that do not relate to the official business of Nottingham Trent University shall be understood as neither given nor endorsed by the University. Nottingham Trent University has taken steps to ensure that this email and any attachments are virus-free, but we do advise that the recipient should check that the email and its attachments are actually virus free. This is in keeping with good computing practice.
Re: UOBM dataset
Posted by Andy Seaborne <an...@apache.org>.
On 27/02/12 09:46, Osman, Taha wrote:
> Thanks Andy,
>
> Can you point me to the documentation/examples regarding the bulk-loading
> with RDFS forward-chaining that you advise below.
> The only relevant doc I could find is:
> "http://incubator.apache.org/jena/documentation/tdb/commands.html#tdbloader
> ", which is not very informative.
>
> Regards
> Taha
The RDFS forward-chaining program is in ARQ: arq.infer:
infer --rdfs=vocab FILE ...
It reads from stdin as well so:
riot FILE .... | infer --rdfs=vocab | tdbloader --loc=Db -- -
Andy
>
> On 25/02/2012 18:15, "Andy Seaborne"<an...@apache.org> wrote:
>
>> On 25/02/12 14:03, Damian Steer wrote:
>>>
>>> On 25 Feb 2012, at 04:11, Osman, Taha wrote:
>>>
>>>> Hi,
>>>
>>> Hi Taha,
>>>
>>> Apologies for the brief reply.
>>>
>>>> we were
>>>> surprised that Jena TDB's (0.8.10) response time was extremely slow in
>>>> general and did not return any results (Java runs out of heap space)
>>>> for
>>>> all the UOBM queries even while using the least expressive RDFS
>>>> reasoning.
>>>> Can you shed light on the matter?
>>>
>>>
>>>> and here is how we fire the queries:
>>>>
>>>> Model jenaModel = TDBFactory.createModel(rootDirPath + repoName);
>>>> InfModel jenaInfModel = ModelFactory.createRDFSModel(jenaModel);
>>>
>>> Here's the problem. You're not really testing TDB here, but TDB with
>>> an in-memory reasoner on top. This will also prevent TDB optimising
>>> queries, and use heap space that TDB wouldn't.
>>>
>>> IIRC the TDB loader has an option to perform RDFS reasoning as you
>>> load. That should work much better.
>>
>> The command is riot.infer
>>
>>>
>>> Damian
>>
>> and then using the bulkloader is faster that reading in through the API.
>>
>> Andy
>>
>
> DISCLAIMER: This email is intended solely for the addressee. It may contain private and confidential information. If you are not the intended addressee, please take no action based on it nor show a copy to anyone. In this case, please reply to this email to highlight the error. Opinions and information in this email that do not relate to the official business of Nottingham Trent University shall be understood as neither given nor endorsed by the University. Nottingham Trent University has taken steps to ensure that this email and any attachments are virus-free, but we do advise that the recipient should check that the email and its attachments are actually virus free. This is in keeping with good computing practice.
Re: UOBM dataset
Posted by "Osman, Taha" <ta...@ntu.ac.uk>.
Thanks Andy,
Can you point me to the documentation/examples regarding the bulk-loading
with RDFS forward-chaining that you advise below.
The only relevant doc I could find is:
"http://incubator.apache.org/jena/documentation/tdb/commands.html#tdbloader
", which is not very informative.
Regards
Taha
On 25/02/2012 18:15, "Andy Seaborne" <an...@apache.org> wrote:
>On 25/02/12 14:03, Damian Steer wrote:
>>
>> On 25 Feb 2012, at 04:11, Osman, Taha wrote:
>>
>>> Hi,
>>
>> Hi Taha,
>>
>> Apologies for the brief reply.
>>
>>> we were
>>> surprised that Jena TDB's (0.8.10) response time was extremely slow in
>>> general and did not return any results (Java runs out of heap space)
>>>for
>>> all the UOBM queries even while using the least expressive RDFS
>>>reasoning.
>>> Can you shed light on the matter?
>>
>>
>>> and here is how we fire the queries:
>>>
>>> Model jenaModel = TDBFactory.createModel(rootDirPath + repoName);
>>> InfModel jenaInfModel = ModelFactory.createRDFSModel(jenaModel);
>>
>> Here's the problem. You're not really testing TDB here, but TDB with
>>an in-memory reasoner on top. This will also prevent TDB optimising
>>queries, and use heap space that TDB wouldn't.
>>
>> IIRC the TDB loader has an option to perform RDFS reasoning as you
>>load. That should work much better.
>
>The command is riot.infer
>
>>
>> Damian
>
>and then using the bulkloader is faster that reading in through the API.
>
> Andy
>
DISCLAIMER: This email is intended solely for the addressee. It may contain private and confidential information. If you are not the intended addressee, please take no action based on it nor show a copy to anyone. In this case, please reply to this email to highlight the error. Opinions and information in this email that do not relate to the official business of Nottingham Trent University shall be understood as neither given nor endorsed by the University. Nottingham Trent University has taken steps to ensure that this email and any attachments are virus-free, but we do advise that the recipient should check that the email and its attachments are actually virus free. This is in keeping with good computing practice.
Re: UOBM dataset
Posted by Andy Seaborne <an...@apache.org>.
On 25/02/12 14:03, Damian Steer wrote:
>
> On 25 Feb 2012, at 04:11, Osman, Taha wrote:
>
>> Hi,
>
> Hi Taha,
>
> Apologies for the brief reply.
>
>> we were
>> surprised that Jena TDB's (0.8.10) response time was extremely slow in
>> general and did not return any results (Java runs out of heap space) for
>> all the UOBM queries even while using the least expressive RDFS reasoning.
>> Can you shed light on the matter?
>
>
>> and here is how we fire the queries:
>>
>> Model jenaModel = TDBFactory.createModel(rootDirPath + repoName);
>> InfModel jenaInfModel = ModelFactory.createRDFSModel(jenaModel);
>
> Here's the problem. You're not really testing TDB here, but TDB with an in-memory reasoner on top. This will also prevent TDB optimising queries, and use heap space that TDB wouldn't.
>
> IIRC the TDB loader has an option to perform RDFS reasoning as you load. That should work much better.
The command is riot.infer
>
> Damian
and then using the bulkloader is faster that reading in through the API.
Andy
Re: UOBM dataset
Posted by Damian Steer <d....@bristol.ac.uk>.
On 25 Feb 2012, at 04:11, Osman, Taha wrote:
> Hi,
Hi Taha,
Apologies for the brief reply.
> we were
> surprised that Jena TDB's (0.8.10) response time was extremely slow in
> general and did not return any results (Java runs out of heap space) for
> all the UOBM queries even while using the least expressive RDFS reasoning.
> Can you shed light on the matter?
> and here is how we fire the queries:
>
> Model jenaModel = TDBFactory.createModel(rootDirPath + repoName);
> InfModel jenaInfModel = ModelFactory.createRDFSModel(jenaModel);
Here's the problem. You're not really testing TDB here, but TDB with an in-memory reasoner on top. This will also prevent TDB optimising queries, and use heap space that TDB wouldn't.
IIRC the TDB loader has an option to perform RDFS reasoning as you load. That should work much better.
Damian
Re: UOBM dataset
Posted by Milorad Tosic <mb...@yahoo.com>.
Hi Taha,
I would like to take a look at the files. However, the list filters out all attachments so i got your message with no attachments. Could you put the files somewhere and send us link so the files can be downloaded from the link.
Thanks,
Dr Milorad Tosic
>________________________________
> From: "Osman, Taha" <ta...@ntu.ac.uk>
>To: "jena-users@incubator.apache.org" <je...@incubator.apache.org>
>Sent: Saturday, February 25, 2012 5:11 AM
>Subject: UOBM dataset
>
>Hi,
>
>We have been performing some benchmarking experiments on the UOBM dataset
>expanding on our previously published paper in ESWC 2010 (attached). The
>response times of Oracle and Owlim is somewhat consistent, but we were
>surprised that Jena TDB's (0.8.10) response time was extremely slow in
>general and did not return any results (Java runs out of heap space) for
>all the UOBM queries even while using the least expressive RDFS reasoning.
>Can you shed light on the matter?
>
>Here is how we load the dataset (TBox file(s) are loaded first):
>
>jenaModel = TDBFactory.createModel(rootDirPath + repositryName);
>InputStream in = FileManager.get().open(dataFile.getCanonicalPath());
>...
>jenaWatch.start();
>jenaModel.read(in, baseURI,formatType);
>jenaWatch.stop();
>
>and here is how we fire the queries:
>
>Model jenaModel = TDBFactory.createModel(rootDirPath + repoName);
>InfModel jenaInfModel = ModelFactory.createRDFSModel(jenaModel);
>...
>jenaWatch.start();
>iquery = QueryExecutionFactory.create(query,jenaInfModel);
>ResultSet iresult = iquery.execSelect();
>while(iresult.hasNext()) {
> QuerySolution soln = iresult.nextSolution() ;
>}
>jenaWatch.stop();
>
>We have also tried loading the TDB with the ABox only, then binding the
>selected reasoner with the TBox schema (>> reasoner.bindSchema(schema)).
>
>Attached: our ESWC paper, UOBM queries+TBox, Response times (TDB failed to
>execute any of the queries).
>
>Best regards
>Taha
>--
>Dr Taha Osman
>Computing and Informatics Building
>School of Science and Technology
>Nottingham Trent University
>Clifton Campus
>Nottingham NG11 8NS
>
>Tel: +44 (0)115 848 8370
>Fax: +44(0)115 848 8429
>
>DISCLAIMER:
>This email is intended solely for the addressee. It may contain private
>and confidential information. If you are not the intended addressee,
>please take no action based on it nor show a copy to anyone. In this case,
>please reply to this email to highlight the error. Opinions and
>information in this email that do not relate to the official business of
>Nottingham Trent University shall be understood as neither given nor
>endorsed by the University. Nottingham Trent University has taken steps to
>ensure that this email and any attachments are virus-free, but we do
>advise that the recipient should check that the email and its attachments
>are actually virus free. This is in keeping with good computing practice.
>
>
>
>DISCLAIMER: This email is intended solely for the addressee. It may contain private and confidential information. If you are not the intended addressee, please take no action based on it nor show a copy to anyone. In this case, please reply to this email to highlight the error. Opinions and information in this email that do not relate to the official business of Nottingham Trent University shall be understood as neither given nor endorsed by the University. Nottingham Trent University has taken steps to ensure that this email and any attachments are virus-free, but we do advise that the recipient should check that the email and its attachments are actually virus free. This is in keeping with good computing practice.
>
>
>