I'm setting up some jena rules in my ontology, and was initially
having lots of success, when something broke, which i can't now fix.
Background: I've got a sesame repository, represented by a file,
sesame.s2r in my project. I've got a "main" owl file, "main.owl",
which imports that s2r file.
I'm using these jena rules to map one ontology (import from d2r) to
another (standards-based ontology).
Initially, I created a jena:rule in main.owl, by creating a jena:rule
property as a property of the class definition for one of the classes
in my target ontology. The rule looks like this:
[CreateIdentifier2:
(?obj
http://metmuseum.org/rdf/vocab/#Objects_ObjectNumber ?
objNumber),
uriConcat(<
http://metmuseum.org/rdf/derived/E42ObjectIdentifier#>, ?
objNumber, ?objIdentifier)
->
(?obj <file:/C:/Documents%20and%20Settings/undeed/TBC-ME-workspace/
MulgaraConnect/cidoc_v4.2.rdfs#P47F.is_identified_by> ?objIdentifier),
(?objIdentifier <
http://purl.org/dc/elements/1.1/title> ?objNumber)]
When I run the inferencer, I get the error (from the tomcat logfile,
or the console when I run TBC with the -console option):
Jul 22, 2008 3:46:18 PM org.apache.catalina.core.StandardWrapperValve
invoke
SEVERE: Servlet.service() for servlet openrdf-http-server threw
exception
java.net.URISyntaxException: Illegal character in fragment at index
60:
http://metmuseum.org/rdf/derived/E42ObjectIdentifier#09.12.3
at java.net.URI$Parser.fail(Unknown Source)
at java.net.URI$Parser.checkChars(Unknown Source)
at java.net.URI$Parser.parse(Unknown Source)
at java.net.URI.<init>(Unknown Source)
at org.mulgara.util.URIHelper.createNetURI(URIHelper.java:138)
at org.mulgara.util.URIHelper.toURI(URIHelper.java:125)
at org.mulgara.util.URIHelper.getScheme(URIHelper.java:90)
at
org.mulgara.resolver.StringPoolSession.mapRelative(StringPoolSession.java:
618)
at
org.mulgara.resolver.StringPoolSession.localizeSPObject(StringPoolSession.java:
515)
at
org.mulgara.resolver.StringPoolSession.localize(StringPoolSession.java:
427)
at
org.mulgara.resolver.StringPoolSession.localize(StringPoolSession.java:
206)
at
org.mulgara.resolver.store.StatementStoreResolver.localize(StatementStoreResolver.java:
460)
at
org.mulgara.resolver.LocalQueryResolver.localize(LocalQueryResolver.java:
147)
at org.mulgara.resolver.DefaultConstraintHandlers
$28.localize(DefaultConstraintHandlers.java:379)
at
org.mulgara.resolver.ConstraintOperations.localize(ConstraintOperations.java:
240)
at
org.mulgara.resolver.LocalQueryResolver.resolve(LocalQueryResolver.java:
196)
at org.mulgara.resolver.DefaultConstraintHandlers
$10.resolve(DefaultConstraintHandlers.java:241)
at
org.mulgara.resolver.ConstraintOperations.resolveConstraintExpression(ConstraintOperations.java:
187)
at
org.mulgara.resolver.LocalQueryResolver.resolveConstraintOperation(LocalQueryResolver.java:
129)
at org.mulgara.resolver.DefaultConstraintHandlers
$5.resolve(DefaultConstraintHandlers.java:170)
at
org.mulgara.resolver.ConstraintOperations.resolveConstraintExpression(ConstraintOperations.java:
187)
at
org.mulgara.resolver.LocalQueryResolver.resolveE(LocalQueryResolver.java:
285)
at
org.mulgara.resolver.DatabaseOperationContext.doQuery(DatabaseOperationContext.java:
809)
at org.mulgara.resolver.QueryOperation.execute(QueryOperation.java:
138)
at
org.mulgara.resolver.MulgaraInternalTransaction.execute(MulgaraInternalTransaction.java:
569)
at org.mulgara.resolver.DatabaseSession.execute(DatabaseSession.java:
639)
at org.mulgara.resolver.DatabaseSession.query(DatabaseSession.java:
402)
at
org.openrdf.sail.mulgara.MulgaraConnection.getStatements(MulgaraConnection.java:
243)
at
org.openrdf.sail.mulgara.MulgaraConnection.getStatements(MulgaraConnection.java:
57)
at
org.openrdf.repository.sail.SailRepositoryConnection.getStatements(SailRepositoryConnection.java:
177)
at
org.openrdf.repository.sail.SailRepositoryConnection.exportStatements(SailRepositoryConnection.java:
204)
at
org.openrdf.http.server.repository.statements.ExportStatementsView.render(ExportStatementsView.java:
99)
at
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:
1160)
at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:
901)
at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:
809)
at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:
476)
at
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:
431)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
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:
175)
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:
844)
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(Unknown Source)
I've tried other ways of expressing that uriConcat line, like
uriConcat('
http://metmuseum.org/rdf/derived/E42ObjectIdentifier#', ?
objNumber, ?objIdentifier)
or
uriConcat(vocab:E42ObjectIdentifier, ?objNumber, ?objIdentifier)
(where vocab is a defined prefix)
all to more or less the same effect.
can anyone see what the problem is with my rule?
The thing, it worked at least once. which is why it's so frustrating
now.