在OWL类上创建正则表达式限制正则表达式、OWL

由网友(结束、我不哭)分享简介:我正在尝试创建一个简单的本体,它有两个类:Class1和Class2,以及两个具有相同名称的简单文本数据属性的实例(分别是hasName:"string1"^xsd:string和hasNameString2"^xsd:string)。我想根据正则表达式(例如,对类1的限制是hasName ome xsd:string...我正在尝试创建一个简单的本体,它有两个类:Class1和Class2,以及两个具有相同名称的简单文本数据属性的实例(分别是hasName:"string1"^xsd:string和hasNameString2"^xsd:string)。我想根据正则表达式(例如,对类1的限制是hasName ome xsd:string[Pattern"String1"],因此,推理器应该推断实例1属于类1,但实例2不属于类1),使用推理程序将这些实例分类到各自的类中。如何才能做到这一点?

推荐答案

使用Openllet(2.6.2-SNAPSHOT)可以这样做:

    final OWLNamedIndividual x1 = OWL.Individual("#I1");
    final OWLNamedIndividual x2 = OWL.Individual("#I2");

    owl.addAxiom(OWL.equivalentClasses(ClsA, OWL.some(propB, OWL.restrict(XSD.STRING, OWL._factory.getOWLFacetRestriction(OWLFacet.PATTERN, OWL.constant("A.A"))))));
    owl.addAxiom(OWL.propertyAssertion(x1, propB, OWL.constant("AAA")));
    owl.addAxiom(OWL.propertyAssertion(x2, propB, OWL.constant("BBB")));

    owl.addAxiom(OWL.differentFrom(x1, x2));

    final OpenlletReasoner r = owl.getReasoner();
    assertTrue(r.isEntailed(OWL.classAssertion(x1, ClsA)));
    assertFalse(r.isEntailed(OWL.classAssertion(x2, ClsA)));

如您所见:

OWL.restrict(XSD.STRING, OWL._factory.getOWLFacetRestriction(OWLFacet.PATTERN, OWL.constant("A.A"))))));
在html里面添加正则表达式

是将"regexp"添加到分类算法的那个。

此处模式为‘A.A’,模式遵循‘Java-regexp’enter link description here规则。

阅读全文

相关推荐

最新文章