簡體   English   中英

使用 Protege 在 OWL 中分配序列

[英]Assigning sequence in OWL using Protege

我的本體中有這個公理

:drug :givenAs (({dose1}) or ({dose2}) or ({dose3}))
 and (not ({dose4}))

根據 Turtle 的語法不正確,但我希望你明白這一點。

我想斷言,dose1 之后是dose2,然后是dose3。

我檢查了OWL-DL 本體中的建模序列順序,但它並沒有完全解決我的情況。 那是因為在這種情況下我只處理個人,而不是類。

斷言序列的優雅方式是什么?

該公理用於識別數據記錄中的錯誤。 例如,如果存在:drug :givenAs :dose2 . ,我希望本體指出錯誤:drug :givenAs :dose2 . 沒有:drug :givenAs :dose1 .

更新 1

我按照建議嘗試了hasNext屬性。 我可以鏈接使用該屬性的個人。 但是,我不確定這是否適用於我的上下文:

Class: SequenceItem
    EquivalentTo: 
        hasNext only SequenceItem

我沒有課程,如果合適,我想避免它。 我仍然如何分配序列?

更新 2

我添加了前面提到的類公理。 推理者沒有發現錯誤。 然而,他們也沒有識別劑量 2 在劑量 1 之前的錯誤記錄。 我斷言Dose類相當於:

Dose
and hasNext only Dose

我認為,問題是我沒有在任何地方斷言在劑量 1 之前不可能有劑量 2,在劑量 2 之前不可能有劑量 3,等等。

在 OWL-DL 本體中添加hasNext屬性 ala Modeling sequence order也能正常工作。 只需在個人上聲明hasNext (見最后一段)。

另一種指定排序的方法是通過 RDF 列表,即(:dose1 ;dose2 :dose3) 該列表是一個有序的枚舉列表,您可以使用 rdf:first/rdf:rest 按順序查詢元素。

最后一個想法是指定一個排序屬性。 hasList解決方案類似,可以將sequenceNum屬性添加到劑量對象上,例如:

:dose1 :sequenceNum 1 .
:dose1 :sequenceNum 2 .
:dose1 :sequenceNum 3 .

然后使用編號來指定哪個出現在另一個之前。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM