1

私は sparql と含意の使用を試みています。

例として、私はhttp://www.w3.org/TR/2010/WD-sparql11-entailment-20100126/#t112を使用しました

私はそれらをジェナに入れようとします。

     OntClass book1= model.createClass(NS+"book1");
     OntClass book2=model.createClass(NS+"book2");
     OntClass book3=model.createClass(NS+"book3");
     OntClass publication=model.createClass(NS+"publication");
     OntClass article=model.createClass(NS+"article");
     OntClass mit=model.createClass(NS+"MIT");

     ObjectProperty a = model.createObjectProperty(NS+"a");
     ObjectProperty publishes = model.createObjectProperty(NS+"publishes");

     book1.addProperty(a, publication);
     book2.addProperty(a, article);
     publication.addSubClass(article);

     publishes.addRange(publication);
     mit.addProperty(publishes, book3);

ここで、モデルは OntModel 型です。

そして私は問題に似たクエリを使用しました

     "PREFIX table: "I have correct namespace here"+
     "SELECT *"+
    "WHERE"+
    "{"+
    " ?x ?y table:publication  ."+
    "}";

モデルはこのように作成されました。OntModelSpec で問題ないことを願っています。

OntModel m = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_RDFS_INF, null);

クエリの結果として取得します


 x                                                           y               
| http://www.example.com/ontologies/sample.owl#publishes   | rdfs:range                                       |
| http://www.example.com/ontologies/sample.owl#article     | rdfs:subClassOf                                  |
| http://www.example.com/ontologies/sample.owl#book1       | http://www.example.com/ontologies/sample.owl#a |
| http://www.example.com/ontologies/sample.owl#publication | rdfs:subClassOf                                  |
| http://www.example.com/ontologies/sample.owl#book3       | rdf:type                                         |   

コードを試すことができず、結果を正しく得ることができるように、含意の有無にかかわらず、誰でも例を挙げてもらえますか。

4

1 に答える 1

2

あなたのオントロジーは少し怪しいように見えます。

book1、、およびはクラスではなく、個人ですbook2。書籍に使用し、「組織」などのクラスを作成してから、そのクラスの個人として作成する必要があります。個人へのタイプの割り当てはすでに処理されているため、「<code>a」プロパティをいじくり回す必要はありません。最初にこれらの問題を修正してから、もう一度やり直して質問を更新する必要があります。book3mitmodel.createIndividual(NS + "bookX", publication)mitcreateIndividual

含意について:クエリ結果の最後の行を見てください。あなたはそれが本であるとはどこにも言いませんでしbook3た、しかし声明はとにかくそこにあります。これは、他のステートメントに含まれているためです。そのため、RDFS推論エンジンは、モデルにクエリを実行したときにステートメントを表示します。次の範囲があるため、ステートメントが必要になります。publishes公開されているものはすべてタイプが必要publicationです。

于 2010-06-09T16:40:30.673 に答える