2016-05-04 16 views
-1

私はSPARQLでプログラミングを始め、rdfの世界を知り始めました。 すべてのidSensorとその値を表示するクエリを作成したいと思います。 次のようにコードは次のとおりです。Java(Jena)のSPARQLクエリ

public class HelloRDF { 

    public static void main(String[] args) { 
// 
// //CONNESSIONE RDF METEO 
//  final String uri = "http://www.dati.lombardia.it/resource/647i-nhxk/"; 
//  final Model model = ModelFactory.createDefaultModel(); 
//  model.read(uri); 
//  model.write(System.out); 


     String s2 = "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n" + 
       "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n" + 
       "PREFIX socrata: <http://www.socrata.com/rdf/terms#>\n" + 
       "PREFIX dcat: <http://www.w3.org/ns/dcat#>\n" + 
       "PREFIX ods: <http://open-data-standards.github.com/2012/01/open-data-standards#>\n" + 
       "PREFIX dcterm: <http://purl.org/dc/terms/>\n" + 
       "PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>\n" + 
       "PREFIX skos: <http://www.w3.org/2004/02/skos/core#>\n" + 
       "PREFIX foaf: <http://xmlns.com/foaf/0.1/>\n" + 
       "PREFIX dsbase: <http://www.dati.lombardia.it/resource/>\n" + 
       "PREFIX ds: <http://www.dati.lombardia.it/resource/647i-nhxk/>\n" + 
       "\n" + 
       "SELECT ?idsensore ?valore \n" + 
       "WHERE\n" + 
       " { ?x ds:idsensore ?idsensore .\n" + 
       "?x ds:valore ?valore .\n" + 
       " }\n" + 
       "LIMIT 5\n" + 
       ""; 

     Query query = QueryFactory.create(s2); //s2 = the query above 
     QueryExecution qExe = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", query); 
     ResultSet results = qExe.execSelect(); 
     ResultSetFormatter.out(System.out, results, query) ; 


    } 

} 

クエリが空で返すテーブルを どこが間違っているのでしょうか? 私を助けてください。

+0

どのような種類を得るのですか? – narko

+0

クエリを返すテーブルが空です – Alberto

+1

取得した結果は期待されたものです。次のURLにあるSPARQLエンドポイントで直接問合せを実行すると、自分でチェックアウトすることができます。http://dbpedia.org/sparql – narko

答えて

1

DBpediaには、探しているデータが含まれていません。おそらく他のエンドポイントがありますが、そのデータを持つエンドポイントに対してクエリを実行する必要があります。

これまで行ってきたことは、ある企業のデータベースのクエリを作成し、別の企業のデータベースで同じ結果を返すことを期待することと本質的に同じです。

+0

ok。 RDFデータをローカルファイルに挿入すると、どのようにしてクエリを変更できますか? – Alberto

+1

クエリを変更する必要はありませんが、データをSPARQLクエリを実行できるようなものにロードします。通常、それはトリプルストアと呼ばれています。他のフレームワークでは、データをメモリにロードしてSPARQLを実行します。イエナとゴマ。 – AKSW

-1

QueryExecutionFactoryは、SPARQLエンドポイントのURLをとります。お持ちでない場合は、このアプローチを使用してデータを照会することはできません:あなたは、問題の

https://jena.apache.org/documentation/javadoc/arq/org/apache/jena/query/QueryExecutionFactory.html#sparqlService-java.lang.String-java.lang.String-

+0

ローカルモデルのクエリ実行を作成できます。 –

+0

彼の例では、リモートエンドポイントを使用しています。それが私の答えの理由です...さらに、SPARQLをサポートするデータストアでデータを利用できるようにする必要があります。これが正しくない場合は、例を挙げてください。ありがとう! – narko