首先我从语句中提取对象,然后尝试使用其中一个函数isBag() isSeq() and isAlt()
,但它给出了错误
"cannot find symbol
symbol: method isBag()
location: variable object of type RDFNode"
答案 0 :(得分:4)
如果您收到如下错误:
找不到符号符号:方法
isBag()
位置:RDFNode
类型的变量对象
然后你以一种给你(就Java源代码而言)RDFNode
而不是Resource
的方式获得该语句的主题。这很令人惊讶,因为Statement.getSubject()会返回Resource
。这意味着你听起来像是在做:
RDFNode subject = statement.getSubject();
if ( subject.isBag() ) { … }
然而,你做不到
Resource subject = statement.getSubject();
if ( subject.isBag() ) { … }
,因为isBag
等,Resource
中也未定义;他们来自Container。但是,您可以做的是询问资源(或RDFNode)canAs
( Container.class )
,如果它可以被视为容器,请使用{{1获取Container的方法,然后可以检查更具体的子类型:
as