質問
私はSPARQLと含意の使用をしようとしています。
私が使用した例としては、のhttp:// WWW .w3.org / TR / 2010 / WD-sparql11-含意-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はokです。
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 |
缶だれでも、カントのtryコードので、として内含することなく、私の例を与える右の結果を得ることができます。
解決
あなたのオントロジーは、ビット魚を探します。
book1
、book2
、book3
とmit
は、彼らが個人で、クラスではありません。あなたは、書籍のmodel.createIndividual(NS + "bookX", publication)
を使用し、「組織」または同様のクラスを作成し、そのクラスの個人としてmit
を作成する必要があります。あなたは「createIndividual
」プロパティで周りの混乱する必要はありませんので、a
はすでに、個々のタイプを割り当てるの世話をすることに注意してください。あなたは最初にこれらの事を修正し、再度試してみて、あなたの質問を更新する必要があります。
含意について:クエリ結果の最後の行を見てください。あなたはbook3
は本ですが、文はとにかくがあることをどこにも言いませんでした。それは他の文にともなうされたための、そしてあなたがモデルを照会するとRDFSの推論エンジンは、文が表示されるようになり、その理由だという。文があるためpublishes
の範囲を伴うされています。すべてのタイプのpublication
であると伴され、公開されています。