我正在尝试使用与 protege 一起使用的 swrl 选项卡,我想知道是否有任何方法可以在规则中断言当前时间和日期。另外我需要知道我是否可以减去 2 个数据属性(类型:dateTime)。
先感谢您
使用当前日期和时间的规则很可能意味着本体是非单调的——从中得出的推论会随着时间而变化,而本体没有任何变化。这可能会让您的本体的一些用户感到意外。
也就是说,我不知道有一种方法可以进行数学运算或在 Protege SWRL 选项卡中捕获当前时间。您当然可以通过代码(例如,通过 OWL API)创建具有当前时间戳的规则,并将其显示在 Protege 中。
可以像这样构建示例规则:
OWLOntologyManager m = create();
OWLOntology o = m.createOntology(example_iri);
// Get hold of references to class A and class B.
OWLClass clsA = df.getOWLClass(IRI.create(example_iri + "#A"));
OWLClass clsB = df.getOWLClass(IRI.create(example_iri + "#B"));
SWRLVariable var = df.getSWRLVariable(IRI.create(example_iri + "#x"));
SWRLClassAtom body = df.getSWRLClassAtom(clsA, var);
SWRLClassAtom head = df.getSWRLClassAtom(clsB, var);
SWRLRule rule = df.getSWRLRule(Collections.singleton(body), Collections.singleton(head));
m.applyChange(new AddAxiom(o, rule));