You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Paul Taylor <pa...@yahoo.com> on 2012/09/22 14:57:59 UTC
Search for Resource is case-sensitive?
Hello there again,
I have a Jena model that is stored in an SDBStore backed by MySQL. I would like to know whether a particular Resource exists in the Model. I cannot use the model.getResource("uri") because according to javadoc this will always return a Resource since it will create a new one if it does not exist. Therefore, I use jena arq engine and a SPARQL ASK query:
Q1: ASK WHERE {<http://purl.org/ontology/mo/performance> ?p ?o .}
Q2: ASK WHERE {<http://purl.org/ontology/mo/Performance> ?p ?o .}
Q1 returns false, and Q2 returns true. Notice that in Q2 the last word starts with a capital letter. Just want to know whether there is a way to make this case-insensitive. Or whether there is any other way to find out whether a particular Resource exists in the Model.
I am using: jena-core-2.7.3, jena-sdb-1.3.5-SNAPSHOT, jena-arq-2.9.3.
Thanks in advance for your help.
Re: Search for Resource is case-sensitive?
Posted by Paul Taylor <pa...@yahoo.com>.
Hello,
I have created a simple model in memory just to test that and it seems to do what I have been looking for, URIs are case-sensitive.
Model model = ModelFactory.createDefaultModel();
Resource res = model.createResource("http://somewhere/Person");
res.addLiteral(RDFS.label, "person");
RDFNode node = model.getResource("http://somewhere/Person");
boolean exists = model.containsResource(node);
System.out.println("Resource exists: " + exists);
Thank you both for your answers,
Paul
----- Original Message -----
From: Chris Dollin <ch...@epimorphics.com>
To: users@jena.apache.org
Cc:
Sent: Monday, 24 September 2012, 8:49
Subject: Re: Search for Resource is case-sensitive?
On Saturday, September 22, 2012 01:57:59 PM Paul Taylor wrote:
> Hello there again,
>
> I have a Jena model that is stored in an SDBStore backed by MySQL.
> I would like to know whether a particular Resource exists in the Model.
> I cannot use the model.getResource("uri") because according to javadoc
> this will always return a Resource since it will create a new one if it does
> not exist.
The only way a Resource "exists" in a model is to appear as the
subject, predicate, or object of some statement. getResource() will
create a new Jena resource object, but it doesn't tinker with the
statements in the model. Having got a Resource, call it R, you
can then see if it has any properties or whether it appears as the
object of any statement.
[Also model.containsResource(RDFNode n) should work, assuming that
SDB doesn't pessimise it.]
Chris
--
"It does not need to take events in their correct order." /Hexwood/
Epimorphics Ltd, http://www.epimorphics.com
Registered address: Court Lodge, 105 High Street, Portishead, Bristol BS20 6PT
Epimorphics Ltd. is a limited company registered in England (number 7016688)
Re: Search for Resource is case-sensitive?
Posted by Chris Dollin <ch...@epimorphics.com>.
On Saturday, September 22, 2012 01:57:59 PM Paul Taylor wrote:
> Hello there again,
>
> I have a Jena model that is stored in an SDBStore backed by MySQL.
> I would like to know whether a particular Resource exists in the Model.
> I cannot use the model.getResource("uri") because according to javadoc
> this will always return a Resource since it will create a new one if it does
> not exist.
The only way a Resource "exists" in a model is to appear as the
subject, predicate, or object of some statement. getResource() will
create a new Jena resource object, but it doesn't tinker with the
statements in the model. Having got a Resource, call it R, you
can then see if it has any properties or whether it appears as the
object of any statement.
[Also model.containsResource(RDFNode n) should work, assuming that
SDB doesn't pessimise it.]
Chris
--
"It does not need to take events in their correct order." /Hexwood/
Epimorphics Ltd, http://www.epimorphics.com
Registered address: Court Lodge, 105 High Street, Portishead, Bristol BS20 6PT
Epimorphics Ltd. is a limited company registered in England (number 7016688)
Re: Search for Resource is case-sensitive?
Posted by Andy Seaborne <an...@apache.org>.
On 22/09/12 13:57, Paul Taylor wrote:
> Hello there again,
>
> I have a Jena model that is stored in an SDBStore backed by MySQL. I would like to know whether a particular Resource exists in the Model. I cannot use the model.getResource("uri") because according to javadoc this will always return a Resource since it will create a new one if it does not exist. Therefore, I use jena arq engine and a SPARQL ASK query:
>
> Q1: ASK WHERE {<http://purl.org/ontology/mo/performance> ?p ?o .}
> Q2: ASK WHERE {<http://purl.org/ontology/mo/Performance> ?p ?o .}
>
> Q1 returns false, and Q2 returns true. Notice that in Q2 the last word starts with a capital letter. Just want to know whether there is a way to make this case-insensitive. Or whether there is any other way to find out whether a particular Resource exists in the Model.
>
> I am using: jena-core-2.7.3, jena-sdb-1.3.5-SNAPSHOT, jena-arq-2.9.3.
>
> Thanks in advance for your help.
>
In RDF, URIs are case sensitive.
ASK WHERE
{?s ?p ?o .
FILTER(lcase(str(?s)) = 'http://purl.org/ontology/mo/performance')
}
(untested)
will do (but with SDB will be slow).
It is much faster in TDB.
Andy