2017-08-04 8 views
0

langageタグなしで(mavenプロジェクト内の)すべてのインスタンスラベルを取得したいとします。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:私は私のクエリでSTRを書くいけない場合、私は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式](https://www.w3.org/TR/2013/REC-sparql11-)のSPARQL 1.1勧告に示されているように 'SELECT(STR(?abstract)AS?abs)... 'クエリ20130321 /#selectExpressions)。 – chrisis

+1

chrisisは正しいです。それは、クエリを受け入れるのはちょっとしたVirtuosoパーサです。標準では、新しい変数に割り当てられた式が必要です。 – AKSW

+0

つまり、 'SELECT(STR(?abstract)as?abstract_string)... ' – user205512

答えて

3

あなたのお問い合わせは法律の規定によるものではありません。 sparql.org's query validatorで確認できます。

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

代わりに、あなたは変数に式をバインドする必要があります:単純化されたバージョンが構文的に無効である

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

だろう

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

SPARQL仕様は、オンラインで利用可能ですcorresponding grammar productionは:

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

非標準の構文を受け入れるエンドポイントもありますが、移植性が必要な場合は、標準の構文に固執する必要があります。

個人的には、これは実装が仕様に固執する良い理由だと思います。 「非標準的な構文をサポートする」という構文は、実際には必要でないときに特定の実装に執着するようにユーザーを誘うだけです。