Jena代数.compile()非标准SPARQL查询

Jena代数.compile()非标准SPARQL查询,sparql,jena,Sparql,Jena,我有(几乎)和你一样的问题。但我不知道如何把它应用到我的问题上。我想将SPARQL查询转换为它的。因此,示例代码: Query query = QueryFactory.create(args[0]); Op op = Algebra.compile(query) ; System.out.println(op); 然而,:Virtuoso接受非标准SPARQL,而Jena不接受。。错误是: Exception in thread "main" org.apache.jena.query.Qu

我有(几乎)和你一样的问题。但我不知道如何把它应用到我的问题上。我想将SPARQL查询转换为它的。因此,示例代码:

Query query = QueryFactory.create(args[0]);
Op op = Algebra.compile(query) ;
System.out.println(op);
然而,:Virtuoso接受非标准SPARQL,而Jena不接受。。错误是:

Exception in thread "main" org.apache.jena.query.QueryParseException: Encountered " "<" "< "" at line 1, column 14.

线程“main”org.apache.jena.query.QueryParseException中的异常:遇到了不起作用的“”。Jena需要解析查询字符串以创建查询对象。Jena遵循官方的SPARQL 1.1规范。哪个查询不起作用?那真是不幸。。。我添加了一个查询,其中Virtuoso(dbpedia.org)执行查询,而Jena/sparql查询验证程序有问题。。dbpedia有许多预定义的名称空间(),jena缺少这些名称空间…对,在查询中,前缀声明也缺少。作为一种解决方法,您可以自动在包含尽可能多的前缀的前缀声明字符串前面添加前缀。但这不是Jena的问题,前缀是解决完整URI所必需的。当我们试图解析DBpedia查询日志时,我们还添加了一些变通方法,这很烦人,但在一定程度上是可行的。
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
SELECT * 
WHERE 
  { 
    {?city rdfs:label 'Tapiramutá'@en.} 
  UNION 
    { ?alias <http://dbpedia.org/property/redirect> ?city;
      rdfs:label 'Tapiramutá'@en. } 
  UNION 
    {?alias <http://dbpedia.org/property/disambiguates> ?city;
     rdfs:label 'Tapiramutá'@en. } 
OPTIONAL { ?city <http://dbpedia.org/ontology/abstract> ?abstract}
OPTIONAL { ?city geo:lat ?latitude; geo:long ?longitude}
OPTIONAL { ?city foaf:depiction ?image } 
OPTIONAL { ?city rdfs:label ?name } 
OPTIONAL { ?city foaf:homepage ?home } 
OPTIONAL { ?city <http://dbpedia.org/ontology/populationTotal> ?population } 
OPTIONAL { ?city <http://dbpedia.org/ontology/thumbnail> ?thumbnail } FILTER (langMatches( lang(?abstract), 'en'))}