gklyne / milarq

Automatically exported from code.google.com/p/milarq
0 stars 0 forks source link

Search for non-existent keyword causes server error #4

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Using a MILARQ index-property to search for a keyword not present in the data 
causes an internal server error to be generated.  Server log below shows query 
and error.

{{{
09:13:04 TRACE - zoo.sparqlite.Processor        :: [396] initialised request 
processor [http-8080-2]
09:13:04 INFO  - zoo.sparqlite.Processor        :: [396] begin processing 
request for path /combined
09:13:04 TRACE - zoo.sparqlite.Processor        :: [396] check if the endpoint 
exists [http-8080-2]
09:13:04 TRACE - zoo.sparqlite.Processor        :: [396] completed check 
endpoint exists in 0 ms [http-8080-2]
09:13:04 TRACE - zoo.sparqlite.Processor        :: [396] check the 
well-formedness of the request [http-8080-2]
09:13:04 TRACE - zoo.sparqlite.RequestWrapper   :: processing POST
09:13:04 TRACE - zoo.sparqlite.RequestWrapper   :: checking content type of 
POST request
09:13:04 TRACE - zoo.sparqlite.RequestWrapper   :: found content type: 
application/x-www-form-urlencoded
09:13:04 TRACE - zoo.sparqlite.RequestWrapper   :: split by ';' first token: 
'application/x-www-form-urlencoded'
09:13:04 TRACE - zoo.sparqlite.RequestWrapper   :: content type ok
09:13:04 TRACE - zoo.sparqlite.RequestWrapper   :: found query param: PREFIX 
rdf:    <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
            PREFIX rdfs:   <http://www.w3.org/2000/01/rdf-schema#>
            PREFIX crm:    <http://purl.org/NET/crm-owl#>
            PREFIX claros: <http://purl.org/NET/Claros/vocab#>
            PREFIX pf:     <http://jena.hpl.hp.com/ARQ/property#>
            PREFIX xsd:    <http://www.w3.org/2001/XMLSchema#>
            PREFIX arqfn:  <java:uk.ac.ox.zoo.sparqlite.>
            ASK
            {
              LET (?crmtypetarget := "KeywordNotPresent")
              GRAPH ?g
              {
                ?s claros:subject-not-before ("KeywordNotPresent" ?beg ?end)
                ; rdf:type ?t
                .
                OPTIONAL { ?s crm:P102.has_title [ rdf:type crm:E35.Title ; rdf:value ?desc ] }
                OPTIONAL { ?s crm:P70I.is_documented_in ?lnk }
                ?s crm:P14I.was_classified_by
                   [ crm:P42.assigned
                     [ rdfs:label ?crmtypetarget
                     ]
                   ] .
                FILTER ( ?beg >= -0525 ) .
                FILTER ( ?end <= -0475 ) .
              }
            }
09:13:04 TRACE - zoo.sparqlite.RequestWrapper   :: check query syntax
09:13:04 TRACE - zoo.sparqlite.RequestWrapper   :: using ARQ syntax
09:13:04 TRACE - zoo.sparqlite.RequestWrapper   :: parsed query ok
09:13:04 INFO  - zoo.sparqlite.Processor        :: [396] query: PREFIX rdf:    
<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
            PREFIX rdfs:   <http://www.w3.org/2000/01/rdf-schema#>
            PREFIX crm:    <http://purl.org/NET/crm-owl#>
            PREFIX claros: <http://purl.org/NET/Claros/vocab#>
            PREFIX pf:     <http://jena.hpl.hp.com/ARQ/property#>
            PREFIX xsd:    <http://www.w3.org/2001/XMLSchema#>
            PREFIX arqfn:  <java:uk.ac.ox.zoo.sparqlite.>
            ASK
            {
              LET (?crmtypetarget := "KeywordNotPresent")
              GRAPH ?g
              {
                ?s claros:subject-not-before ("KeywordNotPresent" ?beg ?end)
                ; rdf:type ?t
                .
                OPTIONAL { ?s crm:P102.has_title [ rdf:type crm:E35.Title ; rdf:value ?desc ] }
                OPTIONAL { ?s crm:P70I.is_documented_in ?lnk }
                ?s crm:P14I.was_classified_by
                   [ crm:P42.assigned
                     [ rdfs:label ?crmtypetarget
                     ]
                   ] .
                FILTER ( ?beg >= -0525 ) .
                FILTER ( ?end <= -0475 ) .
              }
            }
09:13:04 TRACE - zoo.sparqlite.Processor        :: [396] completed check 
request form in 1 ms [http-8080-2]
09:13:04 TRACE - zoo.sparqlite.Processor        :: [396] apply query policy 
rules [http-8080-2]
09:13:04 TRACE - zoo.sparqlite.QueryPolicy      :: apply query policy
09:13:04 TRACE - zoo.sparqlite.QueryPolicy      :: apply query form policy
09:13:04 TRACE - zoo.sparqlite.QueryPolicy      :: apply dataset description 
policy
09:13:04 TRACE - zoo.sparqlite.QueryPolicy      :: apply limit ceiling policy
09:13:04 TRACE - zoo.sparqlite.QueryPolicy      :: apply variable predicates 
policy
09:13:04 TRACE - zoo.sparqlite.QueryPolicy      :: no variable predicate policy 
found
09:13:04 TRACE - zoo.sparqlite.QueryPolicy      :: apply filter policy
09:13:04 TRACE - zoo.sparqlite.QueryPolicy      :: no variable predicate policy 
found
09:13:04 TRACE - zoo.sparqlite.Processor        :: [396] completed query policy 
in 0 ms [http-8080-2]
09:13:04 TRACE - zoo.sparqlite.Processor        :: [396] create a query 
execution [http-8080-2]
09:13:04 TRACE - zoo.sparqlite.EndpointTDB      :: exists guard condition
09:13:04 TRACE - sparqlite.config.Config        :: loading description model 
from 
/mnt/sdb3/home/graham/workspace35/.metadata/.plugins/org.eclipse.wst.server.core
/tmp1/wtpwebapps/claros_test_server/WEB-INF/tdb/combined.ttl
09:13:04 TRACE - sparqlite.config.Config        :: description root is 
file:///mnt/sdb3/home/graham/workspace35/.metadata/.plugins/org.eclipse.wst.serv
er.core/tmp1/wtpwebapps/claros_test_server/WEB-INF/tdb/combined.ttl#dataset
09:13:04 WARN  - jena.tdb.exec                  :: No BGP optimizer
09:13:05 TRACE - sparqlite.config.Config        :: description root is 
file:///mnt/sdb3/home/graham/workspace35/.metadata/.plugins/org.eclipse.wst.serv
er.core/tmp1/wtpwebapps/claros_test_server/WEB-INF/tdb/combined.ttl#dataset
09:13:05 TRACE - sparqlite.config.Config        :: dataset root is 
file:///mnt/sdb3/home/graham/workspace35/.metadata/.plugins/org.eclipse.wst.serv
er.core/tmp1/wtpwebapps/claros_test_server/WEB-INF/tdb/combined.ttl#dataset
09:13:05 TRACE - sparqlite.config.Config        :: LARQ location 
claros_test_server/WebContent/WEB-INF/data/combined/literals provided
09:13:05 TRACE - zoo.sparqlite.EndpointTDB      :: create query execution
09:13:05 TRACE - zoo.sparqlite.EndpointTDB      :: set larq index
09:13:05 TRACE - zoo.sparqlite.Processor        :: [396] completed create query 
execution in 8 ms [http-8080-2]
09:13:05 TRACE - zoo.sparqlite.Processor        :: [396] execute the query 
[http-8080-2]
09:13:05 TRACE - zoo.sparqlite.Processor        :: [396] execute ASK query 
[http-8080-2]
09:13:05 TRACE - propertyfunctions.genericIndex :: build
09:13:05 TRACE - propertyfunctions.genericIndex :: enableIndex: URI 
http://purl.org/NET/Claros/vocab#subject-not-before, term KeywordNotPresent
09:13:05 TRACE - propertyfunctions.genericIndex :: enableIndex: dir 
claros_test_server/WebContent/WEB-INF/data/combined/indexes/term-nb
09:13:05 TRACE - propertyfunctions.genericIndex :: enableIndex: indexFullName 
claros_test_server/WebContent/WEB-INF/data/combined/indexes/term-nb/keywordnotpr
esent
09:13:05 TRACE - zoo.sparqlite.Processor        :: [396] handle an unexpected 
exception [http-8080-2]
09:13:05 ERROR - zoo.sparqlite.Processor        :: [396] caught unexpected 
exception: caught exception during query execution: 
java.io.FileNotFoundException: 
claros_test_server/WebContent/WEB-INF/data/combined/indexes/term-nb/keywordnotpr
esent (No such file or directory)
java.lang.RuntimeException: java.io.FileNotFoundException: 
claros_test_server/WebContent/WEB-INF/data/combined/indexes/term-nb/keywordnotpr
esent (No such file or directory)
    at propertyfunctions.genericIndex.inFromFile(genericIndex.java:161)
    at propertyfunctions.genericIndex.access$1(genericIndex.java:158)
    at propertyfunctions.genericIndex$1.<init>(genericIndex.java:76)
    at propertyfunctions.genericIndex.execEvaluated(genericIndex.java:74)
    at com.hp.hpl.jena.sparql.pfunction.PropertyFunctionEval.exec(PropertyFunctionEval.java:32)
    at com.hp.hpl.jena.sparql.pfunction.PropertyFunctionBase$RepeatApplyIterator.nextStage(PropertyFunctionBase.java:92)
    at com.hp.hpl.jena.sparql.engine.iterator.QueryIterRepeatApply.makeNextStage(QueryIterRepeatApply.java:94)
    at com.hp.hpl.jena.sparql.engine.iterator.QueryIterRepeatApply.hasNextBinding(QueryIterRepeatApply.java:55)
    at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:69)
    at com.hp.hpl.jena.sparql.engine.iterator.QueryIterProcedure.hasNextBinding(QueryIterProcedure.java:57)
    at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:69)
    at com.hp.hpl.jena.tdb.solver.OpExecutorTDB.optimizeExecuteQuads(OpExecutorTDB.java:201)
    at com.hp.hpl.jena.tdb.solver.OpExecutorTDB.execute(OpExecutorTDB.java:148)
    at com.hp.hpl.jena.sparql.engine.main.ExecutionDispatch.visit(ExecutionDispatch.java:51)
    at com.hp.hpl.jena.sparql.algebra.op.OpQuadPattern.visit(OpQuadPattern.java:80)
    at com.hp.hpl.jena.sparql.engine.main.ExecutionDispatch.exec(ExecutionDispatch.java:33)
    at com.hp.hpl.jena.sparql.engine.main.OpExecutor.executeOp(OpExecutor.java:103)
    at com.hp.hpl.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java:186)
    at com.hp.hpl.jena.sparql.engine.main.ExecutionDispatch.visit(ExecutionDispatch.java:93)
    at com.hp.hpl.jena.sparql.algebra.op.OpSequence.visit(OpSequence.java:64)
    at com.hp.hpl.jena.sparql.engine.main.ExecutionDispatch.exec(ExecutionDispatch.java:33)
    at com.hp.hpl.jena.sparql.engine.main.OpExecutor.executeOp(OpExecutor.java:103)
    at com.hp.hpl.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java:210)
    at com.hp.hpl.jena.sparql.engine.main.ExecutionDispatch.visit(ExecutionDispatch.java:136)
    at com.hp.hpl.jena.sparql.algebra.op.OpConditional.visit(OpConditional.java:38)
    at com.hp.hpl.jena.sparql.engine.main.ExecutionDispatch.exec(ExecutionDispatch.java:33)
    at com.hp.hpl.jena.sparql.engine.main.OpExecutor.executeOp(OpExecutor.java:103)
    at com.hp.hpl.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java:210)
    at com.hp.hpl.jena.sparql.engine.main.ExecutionDispatch.visit(ExecutionDispatch.java:136)
    at com.hp.hpl.jena.sparql.algebra.op.OpConditional.visit(OpConditional.java:38)
    at com.hp.hpl.jena.sparql.engine.main.ExecutionDispatch.exec(ExecutionDispatch.java:33)
    at com.hp.hpl.jena.sparql.engine.main.OpExecutor.executeOp(OpExecutor.java:103)
    at com.hp.hpl.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java:186)
    at com.hp.hpl.jena.sparql.engine.main.ExecutionDispatch.visit(ExecutionDispatch.java:93)
    at com.hp.hpl.jena.sparql.algebra.op.OpSequence.visit(OpSequence.java:64)
    at com.hp.hpl.jena.sparql.engine.main.ExecutionDispatch.exec(ExecutionDispatch.java:33)
    at com.hp.hpl.jena.sparql.engine.main.OpExecutor.executeOp(OpExecutor.java:103)
    at com.hp.hpl.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java:263)
    at com.hp.hpl.jena.tdb.solver.OpExecutorTDB.execute(OpExecutorTDB.java:119)
    at com.hp.hpl.jena.sparql.engine.main.ExecutionDispatch.visit(ExecutionDispatch.java:143)
    at com.hp.hpl.jena.sparql.algebra.op.OpFilter.visit(OpFilter.java:80)
    at com.hp.hpl.jena.sparql.engine.main.ExecutionDispatch.exec(ExecutionDispatch.java:33)
    at com.hp.hpl.jena.sparql.engine.main.OpExecutor.executeOp(OpExecutor.java:103)
    at com.hp.hpl.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java:186)
    at com.hp.hpl.jena.sparql.engine.main.ExecutionDispatch.visit(ExecutionDispatch.java:93)
    at com.hp.hpl.jena.sparql.algebra.op.OpSequence.visit(OpSequence.java:64)
    at com.hp.hpl.jena.sparql.engine.main.ExecutionDispatch.exec(ExecutionDispatch.java:33)
    at com.hp.hpl.jena.sparql.engine.main.OpExecutor.executeOp(OpExecutor.java:103)
    at com.hp.hpl.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java:79)
    at com.hp.hpl.jena.sparql.engine.main.QC.execute(QC.java:40)
    at com.hp.hpl.jena.sparql.engine.main.QueryEngineMain.eval(QueryEngineMain.java:52)
    at com.hp.hpl.jena.tdb.solver.QueryEngineTDB.eval(QueryEngineTDB.java:112)
    at com.hp.hpl.jena.sparql.engine.QueryEngineBase.evaluate(QueryEngineBase.java:124)
    at com.hp.hpl.jena.sparql.engine.QueryEngineBase.createPlan(QueryEngineBase.java:98)
    at com.hp.hpl.jena.sparql.engine.QueryEngineBase.getPlan(QueryEngineBase.java:86)
    at com.hp.hpl.jena.tdb.solver.QueryEngineTDB$QueryEngineFactoryTDB.create(QueryEngineTDB.java:177)
    at com.hp.hpl.jena.sparql.engine.QueryExecutionBase.getPlan(QueryExecutionBase.java:266)
    at com.hp.hpl.jena.sparql.engine.QueryExecutionBase.startQueryIterator(QueryExecutionBase.java:243)
    at com.hp.hpl.jena.sparql.engine.QueryExecutionBase.execAsk(QueryExecutionBase.java:218)
    at uk.ac.ox.zoo.sparqlite.Processor.executeQuery(Processor.java:148)
    at uk.ac.ox.zoo.sparqlite.Processor.exec(Processor.java:64)
    at uk.ac.ox.zoo.sparqlite.ServletBase.doCommon(ServletBase.java:25)
    at uk.ac.ox.zoo.sparqlite.ServletTDB.doCommon(ServletTDB.java:55)
    at uk.ac.ox.zoo.sparqlite.ServletTDB.doPost(ServletTDB.java:47)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:619)
Caused by: java.io.FileNotFoundException: 
claros_test_server/WebContent/WEB-INF/data/combined/indexes/term-nb/keywordnotpr
esent (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:106)
    at java.io.FileReader.<init>(FileReader.java:55)
    at propertyfunctions.genericIndex.inFromFile(genericIndex.java:160)
    ... 77 more
09:13:05 TRACE - zoo.sparqlite.Processor        :: [396] try to send error 
response, code: 500, details: caught exception during query execution: 
java.io.FileNotFoundException: 
claros_test_server/WebContent/WEB-INF/data/combined/indexes/term-nb/keywordnotpr
esent (No such file or directory) [http-8080-2]
09:13:05 TRACE - zoo.sparqlite.Processor        :: [396] perform any final 
cleanup, release resources etc. [http-8080-2]
09:13:05 TRACE - zoo.sparqlite.Processor        :: [396] finalising request 
handler [http-8080-2]
09:13:05 TRACE - zoo.sparqlite.Processor        :: [396] close query execution 
[http-8080-2]
09:13:05 TRACE - zoo.sparqlite.Processor        :: [396] close endpoint 
[http-8080-2]
09:13:05 TRACE - zoo.sparqlite.EndpointTDB      :: close larq index
09:13:05 TRACE - zoo.sparqlite.EndpointTDB      :: close dataset
}}}

Original issue reported on code.google.com by gk-goo...@ninebynine.org on 13 Sep 2010 at 8:16

GoogleCodeExporter commented 9 years ago
Fixed -- if the file does not exist, then the generic index now returns no 
answers (immediate EOF) and the query will simply return no results.

Original comment by ehog.he...@googlemail.com on 17 Sep 2010 at 7:45

GoogleCodeExporter commented 9 years ago

Original comment by ehog.he...@googlemail.com on 17 Sep 2010 at 8:35