3

Apache Jena ライブラリを使用して Java でオントロジー モデルを作成し、ピザ オントロジーに入りました。sparql クエリを作成しようとしていますが、通常はクエリに対する回答がありますが、テーブルの出力は空白です。私は何か悪いことをしていますか...?コードは次のとおりです。

OntModel model = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM_MICRO_RULE_INF);
String inputFileName="pizza.owl";
InputStream in = FileManager.get().open( inputFileName );
if (in == null) {
    throw new IllegalArgumentException(
         "File: " + inputFileName + " not found");
}
model.read(in, null);

String queryString =
        "prefix pizza: <www.co-ode.org/ontologies/pizza/pizza.owl#Pizza> "+        
        "prefix rdfs: <" + RDFS.getURI() + "> "           +
        "prefix owl: <" + OWL.getURI() + "> "             +
        "select ?pizza where {?pizza a owl:Class ; "      +
        "rdfs:subClassOf ?restriction. "                  +
        "?restriction owl:onProperty pizza:hasTopping ;"  +
        "owl:someValuesFrom pizza:PeperoniSausageTopping" +
        "}";
Query query = QueryFactory.create(queryString);
QueryExecution qe = QueryExecutionFactory.create(query, model);
com.hp.hpl.jena.query.ResultSet results =  qe.execSelect();

ResultSetFormatter.out(System.out, results, query);
qe.close();
4

1 に答える 1

3

接頭辞の宣言が間違っています。Pizza誤ってクラスの名前を含めてしまい、httpプロトコル プレフィックスも省略してしまいました。修正されました。次のようになります。

"prefix pizza: <http://www.co-ode.org/ontologies/pizza/pizza.owl#> "+

RDF と SPARQL でプレフィックスが機能する方法はprefix:、 をプレフィックスが定義されているものに置き換えることであり、結果の文字列は、一致させようとしているリソースの URI と正確に一致する必要があります。完全に一致している必要があります。大文字と小文字の違いも重要です。

ちなみに、次の方法でオントロジーのロードを簡素化することもできますFileManager

OntModel model = ModelFactory.createOntologyModel( 
                                  OntModelSpec.OWL_MEM_MICRO_RULE_INF);
FileManager.get().readModel( model, "pizza.owl" );
于 2012-11-06T22:52:32.423 に答える