2017-08-04 51 views
0

我想获得所有的实例标签(在maven项目中)没有langage标签。sparql STR错误

我的查询是:

Select STR(?abstract) 
Where { 
     ?s <http://dbpedia.org/ontology/abstract> ?abstract. 
     } 

我收到以下错误:

[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0:java (default-cli) on project LOD2Walks: An exception occured while executing the Java class. Encountered " "str" "STR "" at line 1, column 9. 
[ERROR] Was expecting one of: 
[ERROR] <VAR1> ... 
[ERROR] <VAR2> ... 
[ERROR] "distinct" ... 
[ERROR] "reduced" ... 
[ERROR] "(" ... 
[ERROR] "*" ... 

PS:如果我不我的查询中写的海峡,我没有得到任何错误 如果我加入SELECT STR (?摘要)AS?标签)...我得到以下例外:

[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0:java (default-cli) on project LOD2Walks: An exception occured while executing the Java class. null: NullPointerException -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0:java (default-cli) on project LOD2Walks: An exception occured while executing the Java class. null 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) 
     at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) 
     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) 
     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) 
     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) 
     at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:497) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 
Caused by: org.apache.maven.plugin.MojoExecutionException: An exception occured while executing the Java class. null 
     at org.codehaus.mojo.exec.ExecJavaMojo.execute(ExecJavaMojo.java:339) 
     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207) 
     ... 20 more 

有人可以请帮助通过确定我的错误在哪里?

谢谢您提前

+3

尽管Virtuoso接受它,但我不确定这是否是有效的SPARQL 1.1语法。您可以按照[SELECT expressions]的SPARQL 1.1建议(https://www.w3.org/TR/2013/REC-sparql11-查询20130321 /#selectExpressions)。 – chrisis

+1

chrisis是正确的,它只是接受查询的宽松的Virtuoso解析器 - 标准需要分配给新变量的表达式。 – AKSW

+0

即'SELECT(STR(?abstract)as?abstract_string)...' – user205512

回答

3

您的查询不是合法的语法。您可以在sparql.org's query validator进行检查。一个简化的版本将是

select str(<http://example.org>) {} 

这在语法上是无效的:

Encountered " "str" "str "" at line 1, column 8. 
Was expecting one of: 
    ... 
    ... 
    "distinct" ... 
    "reduced" ... 
    "(" ... 
    "*" ... 

相反,你需要表达绑定到一个变量:

select (str(<http://example.org>) as ?str) {} 

的SPARQL规范可在网上,而corresponding grammar production是:

[9] SelectClause  ::= 'SELECT' ('DISTINCT' | 'REDUCED')? ((Var | ('(' Expression 'AS' Var ')'))+ | '*') 

即使某些端点可能接受非标准语法,但如果您希望可移植性,则需要遵守标准语法。我个人认为这是坚持规范的一个很好的理由,除了那些已经让你实现这个特定实现的扩展。 “支持”非标准语法只是在实际上不需要时邀请用户陷入特定的实现。

相关问题