2013-10-02 124 views
1

我试图计算在查询DBpedia后收到的两个资源之间的距离(DBpedia中的边的数量)。 例如:计算JENA中DBPedia的两个资源之间的距离

 Query query = QueryFactory.create(sparqlQueryString); 
    QueryExecution qexec =QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql",query); 

    try{ 
     ResultSet results = qexec.execSelect(); 
     for(; results.hasNext();) { 
     QuerySolution soln = results.nextSolution(); 
     for(int i=0;i<solutionConcept.length;i++){ 
        System.out.print(solutionConcept[i]+":"+soln.get(solutionConcept[i]).toString() +"; "); 
     } 
     System.out.println("\n"); 
     } 
     } finally{ 
     qexec.close(); 

,这是串查询:

String s6= "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "+ 
      "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "+ 
      "PREFIX dbpedia: <http://dbpedia.org/resource/> "+ 
      "PREFIX o: <http://dbpedia.org/ontology/> "+ 
      "PREFIX dbprop: <http://dbpedia.org/property/>"+ 
      "PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>" + 
      "select ?Player ?nation ?club "+ 
      "where {?Player rdf:type o:SoccerPlayer; dbprop:birthPlace ?nation; dbprop:currentclub ?club.} LIMIT 10"; 

好,是有办法来计算边缘的两个玩家之间的数(路径??),或两个国家,还是两个俱乐部? 非常感谢您...

+0

你是指某个特定属性或属性的路径,或者是什么?如果你正在寻找一条路径,所有的边缘都是从一组属性中绘制出来的,你可以做到这一点,但如果你只是在寻找任意路径,我认为你不能做这个。你可以根据你所拥有的数据(或者可以在DBpedia上浏览),给出你正在寻找的结果类型(手动构建的)的例子吗? –

+0

基本上我想计算两个resource..For例子之间的相似性,假设这是我的结果集 玩家国度CLUB 比达尔智利尤文图斯// 皮萨罗智利佛罗伦萨 我想计算 比达尔之间的相似性-Pizarro 智利智利 尤文图斯 - 佛罗伦萨 然后计算总体相似度 – user2837896

+0

我收集这是你的意图。但是,在任何人都可以告诉你是否可以计算它之前,你需要指定_how_来计算这个值。在OWL中,所有东西都是“owl:Thing”的实例,所以任何两个资源之间总是有一个长度为2的路径:'rdf:type/^ rdf:type'。但是还会有其他的途径。一些关系表明不相似而不是相似。你会试图排除这些关系吗?要回答这个问题,需要更多关于你正在计算的信息。 –

回答

1

您无法在当前查询导致的QuerySolution上计算该距离。

如果要计算这样的语义距离,您必须通过另一个SPARQL查询或在更新查询以在本地检索所需信息之后执行此操作。

+0

我下载了dbpedia的这四个文件:http://dbpedia.org/Ontology。然后,我试着在本地加载这些文件:http://stackoverflow.com/questions/16832862/load-dbpedia-locally-using-jena-tdb。但这种方式太沉重了......电脑会爆炸......这是一种正确的方式吗?你能帮我吗? – user2837896

相关问题