[英]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.