2016-05-04 2 views
-1

Я начинаю программировать в SPARQL и знать мир rdf. Я хотел бы сделать запрос, который отображает все idSensor и значение. код выглядит следующим образом:Query SPARQL в Java (Jena)

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

Результат, который вы получаете, является ожидаемым. Вы можете проверить это самостоятельно, если вы запускаете запрос непосредственно в конечной точке SPARQL, доступной по адресу: http://dbpedia.org/sparql – narko

ответ

1

DBpedia не содержит данные, которые вы ищите. Возможно, какая-то другая конечная точка, но вам нужно запустить запрос с конечной точкой, которая имеет эти данные.

Вы сделали то же самое, что написать запрос для базы данных одной компании и ожидать, что она вернет те же результаты, когда вы запустите ее в другой компании.

+0

ОК. поэтому, если я вставляю данные RDF в локальный файл, каким образом я могу изменить запрос? – Alberto

+1

Вам не нужно изменять запрос, но загружать данные во что-то, что позволяет запускать запросы SPARQL по данным. Обычно это называется тройным магазином. Некоторые другие фреймворки поддерживают загрузку данных в память и запуск SPARQL на нем, например. Йена и Кунжут. – AKSW

-1

QueryExecutionFactory принимает URL-адрес конечной точки SPARQL. Если вы не один, вы не можете запрашивать данные, используя этот подход:

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

+0

Вы можете создать выполнение запроса для локальной модели. –

+0

В своем примере он использует удаленную конечную точку, вот почему мой ответ ... Кроме того, вам нужны данные, которые будут доступны в хранилище данных, поддерживающее SPARQL. Если это неверно, укажите пример. Благодаря! – narko

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