Я пытаюсь использовать вкладку swrl, используемую с протеже, и мне было интересно, есть ли способ установить текущее время и дату в правиле. Также мне нужно знать, могу ли я вычесть 2 свойства данных (тип: dateTime).
Заранее спасибо
Я пытаюсь использовать вкладку 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 можно найти здесь