如何在Cellfie中递归处理正则表达式? (用于将Excel导入到Owl)

时间:2018-08-09 22:32:30

标签: regex excel owl protege

我正在尝试将Excel电子表格导入Owl,Protege 5.2.0。我已经插入Cellfie,可以使用它在MappingMasterDSL中编写规则来处理Excel单元格。我将通过一个简单的示例向您介绍我要尝试做的事情。

我处理的工作表如下:

enter image description here

我有一个原始的本体,看起来像这样,其中颜色和营养是描述水果的属性:

enter image description here

导入到Protege后,我想要实现的效果如下,在右侧介绍了BlueberryApple

enter image description here

到目前为止,我想出的导入规则是:

Class: @A*
    EquivalentTo:(     
        ((@B1(ObjectProperty) some @B*([",([^,]+),"])) or     // Matching term in between two commas 
         (@B1(ObjectProperty) some @B*([",([^,]+)$"])) or     // Matching end of line
         (@B1(ObjectProperty) some @B*(["^([^,]+)],"])) or    // Matching beginning of line
         (@B1(ObjectProperty) some @B*(["([^,]+)"])))         // Matching single value (when there's no comma)
        and
        ((@C1(ObjectProperty) some @C*([",([^,]+),"])) and 
         (@C1(ObjectProperty) some @C*([",([^,]+)$"])) and
         (@C1(ObjectProperty) some @C*(["^([^,]+),"])) and
         (@C1(ObjectProperty) some @C*(["([^,]+)"])))
    )

由以上代码生成的创建的公理有点混乱。 Blueberry的描述为:

enter image description here

Apple的描述是:

enter image description here

所以有两个问题:

  1. 您可以看到some之后有一些空值。显然是因为模式不适用于该单元格。

  2. 如果一个单元格中有许多逗号分隔的术语,则只会找到与特定模式匹配的一个术语。

所以问题是:

  1. 如何使模式可选?

  2. 如何编写捕获所有用逗号分隔的术语的递归规则。

非常感谢您的帮助!

仅供参考,Cellfie的MappingMasterDSL:https://github.com/protegeproject/mapping-master/wiki/MappingMasterDSL

正则表达式模式:https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html

0 个答案:

没有答案