2012-06-16 52 views
-1

我嘗試從特殊的經度和緯度獲取所有POI。使用SPARQL查詢POIs的DBpedia

你能給我一個提示以獲得更好的結果嗎?我現在在我的結果集中獲得了像:Germany:M-Bahn這樣的主題。

這裏是我的Java代碼:

public class DBPedia_SparqSql { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    float YOUR_LONG = 13.380834f; 
    float YOUR_LAT = 52.516388f; 
    float radius = 0.01f; 
    String sparqlQueryString1= "PREFIX owl: <http://www.w3.org/2002/07/owl#> "+ 
    "PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> "+ 
    "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "+ 
    "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "+ 
    "PREFIX foaf: <http://xmlns.com/foaf/0.1/> "+ 
    "PREFIX dc: <http://purl.org/dc/elements/1.1/> "+ 
    "PREFIX : <http://dbpedia.org/resource/> "+ 
    "PREFIX dbpedia2: <http://dbpedia.org/property/> "+ 
    "PREFIX dbpedia: <http://dbpedia.org/> "+ 
    "PREFIX skos: <http://www.w3.org/2004/02/skos/core#> "+ 
    "PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> "+ 
    "PREFIX onto: <http://dbpedia.org/ontology/> " + 
    "PREFIX dcterms: <http://purl.org/dc/terms/> "+ 
    "SELECT DISTINCT ?s ?sub ?long ?lat WHERE {"+ 
    "?s a onto:Place . "+ 
    "?s geo:lat ?lat . "+ 
    "?s geo:long ?long . " + 
    "?s dcterms:subject ?sub "+ 
    " FILTER (?long > "+(YOUR_LONG-radius)+"&& ?long < "+(YOUR_LONG+radius)+" && ?lat > "+(YOUR_LAT-radius)+" && ?lat < "+(YOUR_LAT+radius)+")}"+ 
    "LIMIT 200"; 
    System.out.println(sparqlQueryString1); 

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

    ResultSet results = qexec.execSelect(); 
    ResultSetFormatter.out(System.out, results, query);  

    qexec.close() ; 
    } 

} 
+0

請指定「更好」的意思,否則很難幫到你。 –

回答

1

這取決於你的意思「更好」是什麼了一下。你在尋找的是一個有區別的特徵,一些「好」結果確實具有的特性,而「壞」結果不會(或者反過來)。

找出要查詢的屬性的一個好方法是僅轉到特定主題的DBPedia資源頁面,然後查看其中的內容。該page for Germany顯示DBPedia知道有關該主題的一切:它是一個國家,它的人口規模是什麼等。

一個好的財產看看是rdf:type財產。查看您確實想要返回的結果是否具有某種價值,然後將其添加到您的查詢中。但是您也可以使用其他(組合)屬性。我不能告訴你這些屬性或值應該是什麼,只有你知道你自己的用例。