次のオントロジーを考えてみましょう。ここPERSON
でNAME
、、、SURNAME
およびIDENTIFICATION
クラスはクラスです。NAME
とSURNAME
のサブクラスですIDENTIFICATION
。hasSurname
機能的hasName
なObjectPropertyです。ドメインと範囲文字列hasValue
を持つ DataTypePropertyです。IDENTIFICATION
jena を使用して、2 人の人物 (person1 は「Henry Ford」、person2 は「Harrison Ford」) を使用して、このモデルの自動インスタンス化を行います。
この繰り返しに対処するために、次のスキーマに従ってオントロジーを自動的にインスタンス化する必要があります。ここで、個人name1
は person1 と person2 の両方に使用されます。
String NS = .... // the name space
OntModel model = .... // Jena model to use
// creating all the individuals with random uri
Individual person1 = model.createIndividual(NS + "PERSON" + Math.random());
Individual name1 = model.createIndividual(NS + "NAME" + Math.random());
Individual surname1 = model.createIndividual(NS + "SURNAME" + Math.random());
Individual person2 = model.createIndividual(NS + "PERSON" + Math.random());
Individual name2 = model.createIndividual(NS + "NAME" + Math.random());
Individual surname2 = model.createIndividual(NS + "SURNAME" + Math.random());
// asserting that ...
// person1 _hasName_ (name1 _hasValue_ "Ford")
// person1 _hasSurname (surname1 _hasValue_ "Henry")
name1.addProperty(model.getOntProperty(NS + "hasValue"), Resourcefactory.createLiteral("Ford"));
surname1.addProperty(model.getOntProperty(NS + "hasValue"), Resourcefactory.createLiteral("Henry"));
model.add(person1, model.getOntProperty(NS + "hasName"), name1);
model.add(person1, model.getOntProperty(NS + "hasSurname"), surname1);
name1 = null; // loosing reference to name1
// asserting that ...
// person2 _hasName_ name1
// person2 _hasSurname (surname2 _hasValue_ "Harrison")
インスタンス化を正しく完了するために、NAME
プロパティが「フォード」であるクラスの個体を見つける方法は?hasvalue
返信ありがとうございます。