2012-06-16 3 views
-1

Я пытаюсь получить все POI от специальной долготы и широты.Запрос DBpedia с SPARQL для POI вокруг точки

Можете ли вы дать мне подсказку, чтобы получить лучшие результаты? Теперь я получаю такие темы, как :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

Пожалуйста, уточните, что вы подразумеваете под "better", иначе вам будет сложно помочь. –

ответ

1

Это зависит немного от того, что вы имеете в виду с «лучше». То, что вы ищете, является отличительной особенностью, некоторым свойством, которое имеет «хорошие» результаты, а «плохие» результаты - нет (или наоборот).

Хороший способ узнать, какие свойства запрашивать - просто перейти на страницу ресурсов DBPedia для определенного предмета и посмотреть, что там есть. page for Germany показывает все, что DBPedia знает об этой теме: что это страна, какой ее размер населения и т. Д.

Хорошее свойство, чтобы рассмотреть это свойство rdf:type. Посмотрите, если результаты, которые вы хотите вернуть, обмениваются некоторыми значениями для этого, а затем добавьте это в свой запрос. Но вы можете использовать и другие (комбинации) свойств. Я не могу сказать вам, какими должны быть эти свойства или ценности, только вы знаете свой собственный вариант использования.

Смежные вопросы