以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  请高手帮忙:用D2rq构建语义web应用时出现以下错误:到底怎么回事?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=84607)


--  作者:happy2009
--  发布时间:5/5/2010 7:11:00 PM

--  请高手帮忙:用D2rq构建语义web应用时出现以下错误:到底怎么回事?
exception

org.apache.jasper.JasperException: de.fuberlin.wiwiss.d2rq.D2RQException: d2rq:uriPattern 'file:///E:/Semantic web/D2R/D2R Server/d2r-server-0.6/Academic.n3#author/@@author.authorID@@' contains characters not allowed in URIs (E50)
 org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


root cause

de.fuberlin.wiwiss.d2rq.D2RQException: d2rq:uriPattern 'file:///E:/Semantic web/D2R/D2R Server/d2r-server-0.6/Academic.n3#author/@@author.authorID@@' contains characters not allowed in URIs (E50)
 de.fuberlin.wiwiss.d2rq.map.ResourceMap.buildValueSourceBase(ResourceMap.java:222)
 de.fuberlin.wiwiss.d2rq.map.ResourceMap.buildNodeMaker(ResourceMap.java:201)
 de.fuberlin.wiwiss.d2rq.map.ResourceMap.nodeMaker(ResourceMap.java:190)
 de.fuberlin.wiwiss.d2rq.map.PropertyBridge.toTripleRelations(PropertyBridge.java:132)
 de.fuberlin.wiwiss.d2rq.map.ClassMap.compile(ClassMap.java:95)
 de.fuberlin.wiwiss.d2rq.map.ClassMap.compiledPropertyBridges(ClassMap.java:85)
 de.fuberlin.wiwiss.d2rq.map.Mapping.compilePropertyBridges(Mapping.java:155)
 de.fuberlin.wiwiss.d2rq.map.Mapping.compiledPropertyBridges(Mapping.java:145)
 de.fuberlin.wiwiss.d2rq.map.Mapping.validate(Mapping.java:92)
 de.fuberlin.wiwiss.d2rq.GraphD2RQ.<init>(GraphD2RQ.java:84)
 de.fuberlin.wiwiss.d2rq.GraphD2RQ.<init>(GraphD2RQ.java:73)
 de.fuberlin.wiwiss.d2rq.ModelD2RQ.<init>(ModelD2RQ.java:61)
 de.fuberlin.wiwiss.d2rq.ModelD2RQ.<init>(ModelD2RQ.java:35)
 Test.AcademicTest.queryBySPARQL(AcademicTest.java:13)
 org.apache.jsp.index_jsp._jspService(index_jsp.java:65)
 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


--  作者:service365
--  发布时间:5/7/2010 12:02:00 PM

--  
。。。
非要用D2RQ啊?
--  作者:happy2009
--  发布时间:5/7/2010 10:54:00 PM

--  用D2R构建语义Web应用
以下是引用service365在2010-5-7 12:02:00的发言:
。。。
非要用D2RQ啊?


是啊!用D2RQ生成映射文件啊!
--  作者:happy2009
--  发布时间:5/7/2010 10:57:00 PM

--  
问题的原因就是'file:///E:/Semantic web/D2R/D2R Server/d2r-server-0.6/Academic.n3"中含有URIs的非法字符,应该是不能有空格,我的目录文件夹有空格,所以在空格处补上%20就可以了!
--  作者:happy2009
--  发布时间:5/7/2010 10:58:00 PM

--  
但是页面还是没有显示结果!SPARQL查询取不到值,不知道那里错了?
--  作者:service365
--  发布时间:5/7/2010 11:07:00 PM

--  
以下是引用happy2009在2010-5-7 22:58:00的发言:
但是页面还是没有显示结果!SPARQL查询取不到值,不知道那里错了?


呵呵,把代码发上来
--  作者:happy2009
--  发布时间:5/8/2010 10:10:00 AM

--  代码!
映射文件我是用D2RQ或D2R中的generate-mapping命令生成的,数据库用的MySQL.
在Eclipse环境中运行。代码如下:
package test;

import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.query.QueryExecutionFactory;
import com.hp.hpl.jena.query.QueryFactory;
import com.hp.hpl.jena.query.QuerySolution;
import com.hp.hpl.jena.query.ResultSet;

import de.fuberlin.wiwiss.d2rq.ModelD2RQ;

public class AcademicTest {
  public void queryBySPARQL(){

      ModelD2RQ m = new ModelD2RQ("file:/E:/Semantic%20Web/D2R/D2R%20Server/d2r-server-0.6/Academic.n3");
      
    String SPARQLPrefix = "PREFIX vocab: <http://localhost:2020/vocab/resource/>";
      String SPARQL =  SPARQLPrefix +
        "SELECT  ?name ?email ?paper WHERE {" +
        "    ?author vocab:Name ?name . " +
        "    ?author vocab:Email ?email ." +
            "    ?author vocab:Paper2Author ?paper . }"  ;
      Query query = QueryFactory.create(SPARQL);
      ResultSet rs = QueryExecutionFactory.create(query, m).execSelect();
      while (rs.hasNext()) {
QuerySolution row = rs.nextSolution();
System.out.println("name:"+row.get("name")+",email:"+row.get("email")+",   
paper:"+row.get("paper"));
      }
   }
}


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
64.453ms