【问题标题】:Assigning sequence in OWL using Protege使用 Protege 在 OWL 中分配序列
【发布时间】:2016-04-05 08:30:40
【问题描述】:

我的本​​体中有这个公理

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

根据 Turtle,语法不正确,但我希望你明白这一点。

我想断言dose1 后跟dose2 后跟dose3。

我查看了Modelling sequence order in OWL-DL ontology,但它并不能完全解决我的问题。那是因为在这种情况下,我只与个人打交道,而不是与班级打交道。

什么是断言序列的优雅方式?

该公理用于识别数据记录中的错误。例如,如果有:drug :givenAs :dose2 . 而没有:drug :givenAs :dose1 .,我希望本体指出一个错误

更新 1

我按照建议尝试了hasNext 属性。我可以链接使用该属性的个人。但是,我不确定这是否适用于我的上下文:

Class: SequenceItem
    EquivalentTo: 
        hasNext only SequenceItem

我没有课程,如果合适,我想避免它。我该如何分配序列?

更新 2

如前所述,我添加了类公理。推理者没有发现错误。然而,他们也没有识别出dose2 在dose1 之前的错误记录。我断言Dose 类相当于:

Dose
and hasNext only Dose

我认为,问题是我没有在任何地方断言在剂量 1 之前不可能有剂量 2,在剂量 2 之前不可能有剂量 3,依此类推。

【问题讨论】:

    标签: semantic-web owl ontology linked-data


    【解决方案1】:

    添加hasNext 属性ala Modelling sequence order in OWL-DL ontology 也可以。只需在个人上声明hasNext(见最后一段)。

    另一种指定排序的方法是通过 RDF 列表,即(:dose1 ;dose2 :dose3)。该列表是一个有序的枚举列表,您可以使用 rdf:first/rdf:rest 来按顺序查询元素。

    最后一个想法是指定一个排序属性。与hasList 解决方案类似,sequenceNum 属性可以添加到剂量对象,例如:

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

    然后使用编号指定哪个出现在另一个之前。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-03
      • 1970-01-01
      • 1970-01-01
      • 2014-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多