Thank you for your responses, Andy Seaborne and Miguel Bento Alves. My problem was Jena libraries in my project. I tried it again using Jena 2.12.1, it worked well.
Actually, I re-implemented all of Jena interface to use other triple store instead of TDB and SDB. Maybe, I missed encoding codes of re-implemented ARQ. I have new mission to figure out it. :) Thanks once again. -----Original Message----- From: Andy Seaborne [mailto:[email protected]] Sent: Thursday, November 06, 2014 7:39 PM To: [email protected] Subject: Re: Problem SPARQL query encoding On 06/11/14 10:27, 이명진 wrote: > Thank you for your response, Andy Seaborne. > > What happened? I got: http://ca.dbpedia.org/resource/Acanthogobius_flavimanus http://ceb.dbpedia.org/resource/Acanthogobius_flavimanus http://es.dbpedia.org/resource/Acanthogobius_flavimanus http://ja.dbpedia.org/resource/マハゼ http://nl.dbpedia.org/resource/Acanthogobius_flavimanus http://sv.dbpedia.org/resource/Acanthogobius_flavimanus http://war.dbpedia.org/resource/Acanthogobius_flavimanus http://zh.dbpedia.org/resource/黃鰭刺鰕虎魚 http://www.wikidata.org/entity/Q1073434 > Did my test code work well? Just fine. A difference is that the query prints as input, not with %-encoding. If <http://ko.dbpedia.org/resource/%EB%AC%B8%EC%A0%88%EB%A7%9D%EB%91%91> were used, it would be re-encoded with each % as %25. http://ko.dbpedia.org seems to have the resources in unencoded form. > But it does not still work in my computer. Which version of Jena are you using (as far as I can remember, this shouldn't matter). By the way, my system runs UTF-8 (I use Ubuntu): LANG=en_GB.utf8 > > My code was developed in Eclipse. > I checked my Eclipse environment, but my Eclipse project was set UTF-8. A useful check is display the file with another text editor. You could try the query in reverse: PREFIX owl: <http://www.w3.org/2002/07/owl#> SELECT * WHERE { ?x owl:sameAs <http://sv.dbpedia.org/resource/Acanthogobius_flavimanus> . } I get: http://ko.dbpedia.org/resource/문절망둑 Andy > > > -----Original Message----- > From: Andy Seaborne [mailto:[email protected]] > Sent: Thursday, November 06, 2014 7:16 PM > To: [email protected] > Subject: Re: Problem SPARQL query encoding > > Hi there, > > I tried you test code from your second message here and it worked for me, > getting 9 results. > > Your first email was in > > Content-Type: text/plain; charset="ks_c_5601-1987" > > and displayed correctly so it is wrong for unicode. I switched to unicode > display and it was wrong. > > Your second email was > > Content-Type: text/plain; charset="UTF-8" > > SPARQL is unicode (UTF-8 specifically). Miguel's email was UTF-8. > > > Just to confuse things, when I cut&paste into Eclipse from your > charset="ks_c_5601-1987" email, it does get converted to unicode. > > My guess is that the environment you wrote the example in is set to be a > charset other than unicode. > > What environment are you writing your code in? > > Andy > > > On 06/11/14 09:40, Miguel Bento Alves wrote: >> Hi, >> >> you only can get the variables that are in Select clause. Try this and will >> work: >> >> …. >> String allSameAsQuery = "" >> + "PREFIX owl: <http://www.w3.org/2002/07/owl#>\n" >> + "SELECT ?x\n" + "WHERE {\n" >> + " <http://ko.dbpedia.org/resource/문절망둑> owl:sameAs >> ?x .\n" + >> "}"; …. >> >> "SELECT ?x” instead of "SELECT *” >> >> Miguel >> >> >>> On 06 Nov 2014, at 09:29, 이명진 <[email protected]> wrote: >>> >>> Thank you for your response. >>> >>> My question is that my test code does not work if SPARQL query has Korean >>> characters because query string is encoded. >>> My test code is: >>> >>> String dbpediKoEndpoint = "http://ko.dbpedia.org/sparql"; >>> String allSameAsQuery = "" >>> + "PREFIX owl: <http://www.w3.org/2002/07/owl#>\n" >>> + "SELECT *\n" + "WHERE {\n" >>> + " <http://ko.dbpedia.org/resource/문절망둑> owl:sameAs >>> ?x .\n" + "}"; >>> Query query = QueryFactory.create(allSameAsQuery); >>> QueryEngineHTTP httpQuery = new >>> QueryEngineHTTP(dbpediKoEndpoint, query); >>> ResultSet results = httpQuery.execSelect(); >>> while (results.hasNext()) { >>> QuerySolution solution = results.next(); >>> String species = solution.getResource("?x").getURI(); >>> System.out.println(species); >>> } >>> >>> If you input SPARQL query like below on http://ko.dbpedia.org/sparql, you >>> can get 9 resources. >>> >>> PREFIX owl: <http://www.w3.org/2002/07/owl#> >>> >>> SELECT * >>> WHERE >>> { <http://ko.dbpedia.org/resource/문절망둑> owl:sameAs ?x } >>> >>> This query is the same as SPARQL query in my test code. >>> Thank you. >>> >>> Sincerely yours, >>> Dr. Myungjin Lee >>> >>> >>> -----Original Message----- >>> From: Miguel Bento Alves [mailto:[email protected]] >>> Sent: Thursday, November 06, 2014 5:24 PM >>> To: [email protected] >>> Subject: Re: Problem SPARQL query encoding >>> >>> Hi Myunjin, >>> >>> what you did is not enough. You need to create a QueryExecution and create >>> a ResultSet to have a cursor pointing to the results. >>> See the example below. >>> >>> Miguel >>> >>> >>> String service = "http://dbpedia.org/sparql"; >>> String query = "select distinct ?Concept where {[] a ?Concept} >>> LIMIT 100"; >>> QueryExecution qe >>> = QueryExecutionFactory.sparqlService(service, >>> query); >>> >>> ResultSet rs = qe.execSelect(); >>> >>> while(rs.hasNext()) { >>> QuerySolution qs = rs.next(); >>> System.out.println("Concept -> "+qs.get("Concept").toString()); >>> } >>> >>>> On 06 Nov 2014, at 07:13, 이명진 <[email protected]> wrote: >>>> >>>> Hello. My name is Myunjin Lee. >>>> >>>> I am testing simple SPARQL query from Korean DBpedia SPARQL >>>> endpoint(http://ko.dbpedia.org/sparql) using Jena. >>>> >>>> For that, I implemented simple test code, but I had URI encoding >>>> problem of SPARQL query that has Korean character. >>>> >>>> >>>> >>>> My simple query is: >>>> >>>> >>>> >>>> String allSameAsQuery = ""Myunjin >>>> >>>> + "PREFIX owl: <http://www.w3.org/2002/07/owl#>\n" >>>> >>>> + "SELECT *\n" + "WHERE {\n" >>>> >>>> + " <http://ko.dbpedia.org/resource/문절망둑> >>>> owl:sameAs ?x .\n" + "}"; >>>> >>>> >>>> >>>> And then, to process query, I construct Query object. >>>> >>>> >>>> >>>> Query query = QueryFactory.create(allSameAsQuery); >>>> >>>> System.out.println(query.toString()); >>>> >>>> >>>> >>>> Problem is that the query string is encoded when I make a Query object. >>>> Print out result is: >>>> >>>> >>>> >>>> PREFIX owl: <http://www.w3.org/2002/07/owl#> >>>> >>>> >>>> >>>> SELECT * >>>> >>>> WHERE >>>> >>>> { >>>> <http://ko.dbpedia.org/resource/%EB%AC%B8%EC%A0%88%EB%A7%9D%EB%91%9 >>>> 1 >>>>> >>>> owl:sameAs ?x } >>>> >>>> >>>> >>>> So that, I cannot get any owl:sameAs resource. >>>> >>>> >>>> >>>> How can I figure out the encoding problem? Or is there any method >>>> for my problem? >>>> >>>> Thank for your help. >>>> >>>> >>>> >>>> Sincerely yours, >>>> >>>> Dr. Myungjin Lee >>>> >>> >>> >> > >
