Запрос SPARQL QueryParseException ^ сова, конечная точка в порядке, Йена не в порядке - PullRequest
0 голосов
/ 12 декабря 2018

У меня следующий запрос SPARQL:

PREFIX owl <http://www.w3.org/2002/07/owl#>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT Distinct(?so2) WHERE {
 ?city a dbo:City ; (owl:sameAs|^owl:sameAs)* ?so2 .
 filter( !regex(str(?so2), "dbpedia" ))
} order by ?city

Это работает на http://dbpedia.org/sparql, но не используется с Java / Jena.

Jena Я получаю эту ошибку:

Exception in thread "main" org.apache.jena.query.QueryParseException: Lexical error at line 1, column 11.  Encountered: " " (32), after : "owl"

Итак, что не так с:

(owl:sameAs|^owl:sameAs)*

Я использую последнюю версию Jena (3.9.0).

снимок моего кода Java,откуда возникает ошибка:

Query query = QueryFactory.create(cSparql);
QueryExecution qexec = QueryExecutionFactory.sparqlService(endPoint, query);

Если я использую следующий код:

QueryEngineHTTP qexec = new QueryEngineHTTP(endPoint, cSparql);

Я получаю эту ошибку:

HttpException: 400 HTTP 400 error making the query: Bad Request

Почему это происходит и каквыполнить с Java / Jena?

Заранее спасибо,

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Отлично, работает: так:

PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dbo: <http://dbpedia.org/ontology/>

SELECT DISTINCT ?so2  
WHERE
  {
    ?city  a                          dbo:City ; 
           (owl:sameAs|^owl:sameAs)*  ?so2 .
    FILTER ( !regex(str(?so2), "dbpedia" ) )
  } 
ORDER BY ?city

и так:

PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT Distinct(?so2) WHERE {
 ?city a dbo:City ; owl:sameAs|^owl:sameAs* ?so2 .
 filter( !regex(str(?so2), "dbpedia" ))
} order by ?city

Большое спасибо, ребята !!!

0 голосов
/ 12 декабря 2018

Ваш запрос не соответствует SPARQL.Как отмечалось в комментариях, Virtuoso принимает несколько SQL-измов в SPARQL, но эта гибкость присутствует не во всех процессорах SPARQL.

Ваш запрос должен быть (с некоторыми настройками пробела для удобства чтения) -

PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dbo: <http://dbpedia.org/ontology/>

SELECT DISTINCT ?so2  
WHERE
  {
    ?city  a                          dbo:City ; 
           (owl:sameAs|^owl:sameAs)*  ?so2 .
    FILTER ( !regex(str(?so2), "dbpedia" ) )
  } 
ORDER BY ?city
...