0

最初にステートメントからオブジェクトを抽出してから、関数の1つを使用しようとしましたisBag() isSeq() and isAlt()が、エラーが発生しました

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

1 に答える 1

4

次のようなエラーが発生した場合:

シンボル symbol が見つかりません: メソッド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から来ます。ただし、できることは、 Resource (または RDFNode) がコンテナーとして表示できるかどうかを確認することです。コンテナーとして表示できる場合は、メソッドを使用してコンテナーを取得します。これにより、より具体的なサブタイプを確認できます。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 に答える