пятница, 2 августа 2013 г.

RacerPro + Apache Jena. Подводные камешки

Недавно пришлось писать клиент с использованием первых двух + использованием SparQL в качестве языка запросов.
Это довольно мутная задача, так как целью была работа именно со SparQL + RacerPro.  Jena оказалась при том, что базу знаний необходимо было таки грузить.
В качестве языка разработки клиента юзался Java, что довольно логично, учитывая наличие JRacer. 
Стоит, отметить что SparQL поддерживает только версия 2.0+ RacerPro, а она из статуса "Preview" еще давно не вышла. Поэтому при работе стоит учесть несколько фактов:
  1. Запросы придется выполнять в виде "(sparql-answer-query  "текст запроса")".  Все должно писаться в одну строку - иначе все будет ломаться.
  2. Версия 2.0 поддерживает префиксы (с запросами в Jena были проблемы)
  3. Применять UNION он не умеет
  4. Квантификаторы (к примеру "+") в запросах тоже
Имеет смысл учесть, что при изменении структуры базу знаний придется перезагружать. Из-за скупости и непонятности офф. документации как сделать красиво узнать не удалось. Если кому интересен конкретный код - вы можете его посмотреть на https://code.google.com/p/db2-ontology-coursework-2013/