2015-11-16 3 views
0

Я попытался запустить этот запрос, используя Jena Api в Java.HttpException: 400 - Jena Api - Java

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
select distinct ?p where { 
    ?s ?p ?o . 
    { 
     select ?s { 
     ?s a <http://data.linkedmdb.org/resource/movie/film> . 
     } 
    limit 10 
    } 
} 

Я получаю сообщение об ошибке:

Exception in thread "main" HttpException: 400 
    at com.hp.hpl.jena.sparql.engine.http.HttpQuery.rewrap(HttpQuery.java:414) 
    at com.hp.hpl.jena.sparql.engine.http.HttpQuery.execGet(HttpQuery.java:358) 
    at com.hp.hpl.jena.sparql.engine.http.HttpQuery.exec(HttpQuery.java:295) 

Я думаю, что это, возможно, придется делать с тем, что LinkedMDB конечная точка работает под SPARQL 1.0, которая не поддерживает подзапросы (только в SPARQL 1.0) , Мне было интересно, есть ли альтернатива этому, я попытался запустить два запроса, первый для первых 10 фильмов, а второй для отдельных свойств, описывающих эти фильмы. Но проблема в том, что я получаю отличные свойства каждого из фильмов, а не все из них, тогда как я хочу получить четкие свойства всех 10 первых фильмов. Любое предложение?

PS. Запрос SPARQL отлично работает на конечной точке DBpedia.

+0

Не то, чтобы это имеет значение много для основной задачи, но нет необходимости в фильтре; вы можете просто использовать одну и ту же переменную: 'select distinct? p {? s? p? o {select? s {? sa <.../film>} limit 10}}' (Я также использовал сокращенную букву 'a' вместо' rdf: type' , который сохраняет объявление префикса и делает текст немного более чистым.) –

+0

Не работает ли оно, если вы получаете 10 фильмов с одним запросом, а затем для каждого запуска фильма 'select * where {? p? o.}'? – AKSW

+0

Я пробовал это. Я получаю отличные свойства каждого фильма. Но мне нужны различные свойства, описывающие 10 фильмов. – M20

ответ

0

Я не думаю, что конечная точка LinkedMDB основана на виртуозе. Конечная точка webapp, на http://www.linkedmdb.org/snorql/, работает на сервере D2R, а фактический веб-сервис - на http://www.linkedmdb.org/sparql, сообщает, что работает на Jetty. Это не означает, что поблизости не может быть Virtuoso, но я не думаю, это на основе Virtuoso. Более авторитетно, the LinkedMDB website говорит:

LinkedMDB публикует связанные открытые данные с использованием сервера D2R.

дата авторских прав на странице LinkedMDB является 2008, который, безусловно, до 2013 SPARQL 1.1, но гораздо ближе к оригиналу SPARQL-х 2008.

DR2 сервер was updated in 2012 обеспечить предварительную поддержку SPARQL 1,1, но я не думаю, что это было применено к сайту LinkedMDB. Это был опыт других людей, также, что конечная точка LinkedMDB не поддерживает SPARQL 1.1:

+0

Спасибо, я исправлю свой вопрос. – M20

+0

Но я не думаю, что фильтрация поможет в этом случае. – M20

+0

@ user5482015 Я не уверен, что вы имеете в виду о фильтрации. Ничего не происходит с фильтрацией; просто некоторые вещи, которые * могут быть более эффективными, выполняются по-разному. Но это не имеет никакого отношения к тому, поддерживает ли LinkedMDB SPARQL 1.1. –

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