Datetime SWRL和当前日期时间

Datetime SWRL和当前日期时间,datetime,protege,swrl,Datetime,Protege,Swrl,我正在尝试使用与protege一起使用的swrl选项卡,我想知道是否有任何方法可以 可以在规则中声明当前时间和日期。我还需要知道是否可以减去2个数据属性(类型:dateTime) 提前感谢使用当前日期和时间的规则很可能意味着本体是非单调的-从中得出的推论将随时间而变化,而本体没有任何变化。这可能会让本体的一些用户感到意外 也就是说,我不知道如何在Protege SWRL选项卡中进行数学运算或捕获当前时间。当然,您可以使用 通过代码(例如通过OWL API)显示当前时间戳,并在Protege中显示

我正在尝试使用与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));

可以找到OWL API编程的源代码、示例和支持

感谢您的支持。我试着在protege上写这个SWRL规则:规则:Person(?p),Activity(?a),starttimefactivity(?a,starttime),greater(Currenttime,starttime),NOT isPerforming(?p,a)->提醒(?p,doActivity?a)