Создайте функцию и вызовите ее из Jena Rule

Я создал функцию, которая выполняет некоторые вычисления между узлами. Я хотел бы вызвать эту функцию из правила Jena? Это возможно? Я обнаружил, что встроенную функцию можно вызвать из правила jena, но я хотел бы вызвать свою собственную функцию. Как написать встроенную функцию?


person Abdullah Almuhaimeed    schedule 19.08.2014    source источник
comment
Недавно было несколько вопросов о реализации встроенных функций для правил. Вероятно, они ответят на ваш вопрос.   -  person Joshua Taylor    schedule 20.08.2014
comment
возможный дубликат написания встроенных модулей Jena   -  person Joshua Taylor    schedule 20.08.2014
comment
О, дубликат, на который я ссылался, не очень хороший дубликат. Как я могу создавать настраиваемые встроенные модули в Jena? гораздо лучше. После того, как я написал встроенную функцию, что мне нужно сделать, чтобы об этом узнали специалисты? также очень полезно .   -  person Joshua Taylor    schedule 20.08.2014
comment
Я не уверен, что вы спрашиваете; как только вы внедрите правило и зарегистрируете его, его можно будет вызвать в правиле. Я думаю, что связанные вопросы охватывают это. Если вы уже внедрили встроенную функцию и у вас возникли проблемы с ее вызовом, покажите свой код и опишите конкретную проблему.   -  person Joshua Taylor    schedule 20.08.2014
comment
Если вы думали, что это невозможно, не сразу понятно, зачем вы спрашивали «Возможно ли это?». Во всяком случае: это описано в документации (см. ссылки в связанных вопросах); хорошая IDE позволит легко реализовать встроенную функцию; а Jena имеет открытый исходный код, поэтому легко увидеть реализации стандартных встроенных модулей.   -  person Joshua Taylor    schedule 20.08.2014
comment
Встроенные функции не возвращают такие значения. Посмотрите на встроенные примитивы, которые поставляются с Jena. Правило будет больше похоже на (?x ?hasBase ?b) (?x hasExponent ?e) pow(?b,?e,?z) -> (?x hasValue ?z). Встроенная математическая функция, такая как product(?a,?b,?c), должна вычислить значение ?a * ?b и связать его с ?c.   -  person Joshua Taylor    schedule 26.08.2014
comment
Этот учебник больше, чем просто Йена. Я не знаю, что такое САДЛ. Если вам не нужен SADL, я предлагаю вам просмотреть другие ссылки здесь.   -  person Joshua Taylor    schedule 27.08.2014
comment
Я не могу помочь вам с материалом SADL, но на этой странице упоминалось, что встроенная функция будет иметь три аргумента, а не только два. Прежде чем пробовать какие-либо фреймворки, вы, вероятно, выиграете от реализации без него. Другие вопросы объясняют, как это сделать. Особенно обратите внимание на часть о регистрации встроенной функции, чтобы механизм правил мог ее найти.   -  person Joshua Taylor    schedule 27.08.2014
comment
Внедрение, регистрация и последующее использование новой Jena Builtin — довольно простой процесс. Ссылки, предоставленные @JoshuaTaylor, являются важным первым шагом к пониманию того, что вы делаете. После этого шаги 3–5 по предоставленной вами ссылке чрезвычайно важны для SADL-сообщества. конкретный. Эти шаги, по-видимому, важны для регистрации вашей встроенной функции в SADL. Использование этого модуля не должно отличаться от использования всех других встроенных модулей (однако SADL предоставляет их вам). Требуется (несуществующий) тег SADL.   -  person Rob Hall    schedule 27.08.2014
comment
Прочтите мой ответ на После того, как я написал встроенную функцию, что мне нужно сделать, чтобы об этом узнали разработчики? . Этот ответ содержит полный пример реализации, регистрации и последующего использования нового встроенного модуля Jena.   -  person Rob Hall    schedule 29.08.2014