2013-10-02 169 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

相關問題