从 rdflib.term.URIRef 和 rdflib.term.Literal 中提取值

问题描述

我是 SPARQL 查询的新手,在尝试从 rdflib.term.URIRefrdflib.term.Literal提取值时出现错误。所以 ?o 包含 URI 和文字。请找到以下查询

SELECT * WHERE {
  uo:0A ?p ?o.
  BIND(IF(!isLIteraL(?o),(strafter(str(?o),'#') as ?o2),?o) AS ?result)
}

我收到错误ParseException: Expected {SelectQuery | ConstructQuery | DescribeQuery | AskQuery},found 'B' (at char 117),(line:4,col:1)

任何帮助将不胜感激。

解决方法

重新发布评论内容作为答案,以便可以接受并关闭问题:

您的 BIND 子句已损坏,请再次检查 IF 的语法,目前您有两次,这显然没有意义,因为在任何 IF 中都没有,而只有在 BIND 中。

AS 仅可用于 BIND(或在查询的投影部分)为变量赋值。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...