Tôi đã giải quyết xong câu hỏi. Tôi nghĩ rằng có một vấn đề với bản thể luận của tôi. Do đó, tôi đã tạo ra một bản thể luận khác để suy ra cá nhân. Bản thể luận mà tôi đã tạo có chứa Person và các lớp con của Person: MalePerson, FemalePerson và MarriedPerson. Và, có hai thuộc tính đối tượng (hasSpouse, hasSibling) và một thuộc tính kiểu dữ liệu (hasAge). Và tôi đã tạo 3 cá nhân. John - MalePerson - hasAge (20) - hasSibling (Jane) Jane - FemalePerson - hasSibling (John) - hasSpouse (Bob) Bob - MalePerson - hasSpouse (Jane)
Và, tôi đặt hai hạn chế đối với MalePerson và Các lớp học Nữ. Đối MalePerson: hasSpouse tối đa 1 hasSpouse chỉ MalePerson Đối FemalePerson: hasSpouse tối đa 1 hasSpouse chỉ FemalePerson
Cuối cùng, tôi đã MarriedPerson là một lớp xác định. Trước khi lập luận, MarriedPerson không có cá nhân. Tuy nhiên, mô hình nên suy ra rằng Jane và Bob đã kết hôn. Vì vậy, cuối cùng, lớp MarriedPerson nên có 2 cá nhân.
Khi tôi chạy mã này bằng Java sử dụng Jena, tôi có 2 cá nhân phỏng đoán.
OntModel ontModel = ModelFactory.createOntologyModel();
InputStream in = FileManager.get().open(inputFileName);
if (in == null) {
throw new IllegalArgumentException("File: " + inputFileName + " not found");
}
ontModel.read(in, "");
Reasoner reasoner = ReasonerRegistry.getOWLReasoner();
reasoner = reasoner.bindSchema(ontModel);
// Obtain standard OWL-DL spec and attach the Pellet reasoner
OntModelSpec ontModelSpec = OntModelSpec.OWL_DL_MEM;
ontModelSpec.setReasoner(reasoner);
// Create ontology model with reasoner support
OntModel model = ModelFactory.createOntologyModel(ontModelSpec, ontModel);
// MarriedPerson has no asserted instances
// However, if an inference engine is used, two of the three
// individuals in the example presented here will be
// recognized as MarriedPersons
//ns is the uri
OntClass marPerson = model.getOntClass(ns + "OWLClass_00000003866036241880"); // this is the uri for MarriedPerson class
ExtendedIterator married = marPerson.listInstances();
while(married.hasNext()) {
OntResource mp = (OntResource)married.next();
System.out.println(mp.getURI());
} // this code returns 2 individuals with the help of reasoner
Sẽ rất hữu ích nếu bạn đưa con trỏ vào tệp pizza.owl (Tôi cho rằng nó công khai ở đâu đó) và nếu bạn cũng cung cấp mã bạn đã sử dụng để thiết lập biến 'reasoner'. – cygri
Cảm ơn bạn rất nhiều cygri vì sự quan tâm của bạn. Tôi đã giải quyết được vấn đề của mình và cung cấp một ví dụ bên dưới. – Mikae