2016-05-22 4 views
0

Я только начинаю с JESS, так что, пожалуйста, со мной.В Jess мне нужно определить правило или запрос, чтобы получить имя экземпляра из онтологии (в переменной)?

Мои экземпляры имеют имена (screenshot of the said names in Protégé) и слоты (image here).

Что мне нужно сделать: знать значение слота «ОПИСАНИЕ», получив имя экземпляра, чтобы я мог использовать его в своей программе Java.

Я думал о defrule, но позволяет ли он получить результат в глобальной переменной? Можете ли вы, пожалуйста, направить меня на это?

+0

Какой смысл иметь эти экземпляры, если вы не собираетесь писать правила? Зачем вам нужно значение слота в программе Java, поскольку вы собираетесь разработать программу Jess/Protégé «Не то, чтобы этого нельзя было сделать, но это несколько осложнит ситуацию, если вы немного поработаете здесь и немного там. – laune

+0

Я разрабатываю приложение Java с Джесс. Я просто использую некоторые команды JessTab для быстрых операций, так как файл, с которым я работаю, это .pprj, кроме этого, я использую Protégé только для визуализации моей онтологии. Что касается экземпляра, мне нужно использовать его как строку в коде Java. Значение слота «ОПИСАНИЕ» выбирается пользователем приложения. – user6323233

ответ

0

Вы действительно можете использовать правило в сочетании с глобальным:

(defglobal ?*desc* = "") 

Написать правило:

(defrule getDescription 
    (SystemEauDeRefroidissement 
     (http..#description ?d)) 
=> 
    (bind ?*desc* ?d)) 

Это может сработать, если у вас есть только один экземпляр SystemEauDeRefroidissement. Вы можете получить глобальное значение с помощью API Jess:

Context ctxt = rete.getContext(); 
Variable var = ctxt.getVariable("desc"); 
String desc = var.stringValue(ctxt); 

Я не тестировал ни одно из этого.

Редактировать Если у вас есть описание, вы можете написать правило (теперь больше в стиле Protégé:

(object 
    (is-a http..#SystemEauDeRefroidissement) 
    (OBJECT ?sedr) 
    (http..#description ...) 
=> 
    (bind ?*sedr* ?sedr)) 

Я не знаю, как вы хотели бы, чтобы вставить описание значения в Jess окружение, поэтому поэтому есть многоточие.

+0

Спасибо, что помогли, но я думаю, что я не объяснил это хорошо. Описание известно и уже находится в переменной. Я хочу использовать его для получения имени экземпляра. (Например, я бы использовал описание «VanneDeRegularisaton ...», чтобы получить результат «00B_Instance_1»). На моем воображаемом языке это нечто вроде 'get instance-name, где DESCRIPTION =" VanneDeRegularisation .. "' Но я искренне благодарю вас за ваш ответ. – user6323233

+0

Нет такой вещи, как «имя-экземпляр». Если вам нужен экземпляр, где слот имеет определенное значение, вам нужно написать правило или запрос. – laune

+0

Спасибо вам большое. – user6323233

 Смежные вопросы

  • Нет связанных вопросов^_^