0

首先我从语句中提取对象,然后尝试使用其中一个函数isBag() isSeq() and isAlt(),但它给出了错误

 "cannot find symbol
  symbol:   method isBag()
  location: variable object of type RDFNode"
4

1 回答 1

4

如果您遇到如下错误:

找不到符号符号:方法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() ) {
    …
  }
  …
}
于 2013-07-01T19:10:27.843 回答