首先我从语句中提取对象,然后尝试使用其中一个函数isBag() isSeq() and isAlt()
,但它给出了错误
"cannot find symbol
symbol: method isBag()
location: variable object of type RDFNode"
首先我从语句中提取对象,然后尝试使用其中一个函数isBag() isSeq() and isAlt()
,但它给出了错误
"cannot find symbol
symbol: method isBag()
location: variable object of type RDFNode"
如果您遇到如下错误:
找不到符号符号:方法
isBag()
位置:类型的变量对象RDFNode
那么你得到的语句的主题是给你(就 Java 源代码而言)anRDFNode
而不是Resource
. 这令人惊讶,因为Statement.getSubject()返回一个Resource
. 这意味着听起来你正在做类似的事情:
RDFNode subject = statement.getSubject();
if ( subject.isBag() ) { … }
但是,你不能这样做
Resource subject = statement.getSubject();
if ( subject.isBag() ) { … }
或者,因为isBag
等,也没有在 中定义Resource
;它们来自Container。但是,您可以做的是询问 Resource(或 RDFNode)是否,如果可以将其视为 Container,则使用该方法获取 Container,然后您可以检查更具体的子类型:canAs
( Container.class )
as
Resource subject = statement.getSubject();
if ( subject.canAs( Container.class ) ) {
Container container = subject.as( Container.class );
if ( container.isBag() ) {
…
}
else if ( container.isAlt() ) {
…
}
…
}