我試圖從一個類中獲取一個對象屬性,特別是:我試圖了解一個類何時是某個其他類的一部分(使用的構造可以在屏幕截圖中看到)。我已經嘗試在對象上使用OWL-api函數(對象是“e”)。getObjectPropertiesInSignature()OWLClass//display delle object propertySet<OWLObjectProperty> proprietà = e.getObjectPropertiesInSignature();System.out.println("Object Property:");if(proprietà.isEmpty()) { System.out.println("\tQuesta classe non ha object property");}else { for(OWLObjectProperty prop : proprietà) { System.out.println("\t"+ prop); }}片段的輸出是Questa classe non ha object property,所以函數返回一個空 Set,但在這種情況下,它應該返回一個具有一個對象屬性的 Set:part-Of 對象屬性。
1 回答

白衣染霜花
TA貢獻1796條經驗 獲得超10個贊
您要找出的是一個類是否包含在對象屬性的域中(類在 OWL 中沒有“具有”對象屬性),或者該類是否是限制的子類。僅當類表達式提到屬性時,類對象的簽名才包含對象屬性,例如合格的基數限制或存在限制,如您的示例中所示。
為了查看一個類是否有一個使用 的超類partOf,您可以創建一個表示子類公理右側的類表達式并詢問它的子類。
OWLDataFactory df = ...
OWLClassExpression c = df.getOWLObjectSomeValuesFrom(partOf, car);
NodeSet subClasses = hermit.getSubClasses(c, false);
對于 partOf 域中的類,您必須尋找域表達式交集的子類:
OWLClassExpression domain = df.getOWLObjectIntersectionOf(ontology.objectPropertyDomainAxioms(partOf));
NodeSet subClassesInDomain = hermit.getSubClasses(domain, false);
添加回答
舉報
0/150
提交
取消