Чтобы установить Виртуоз на моей среде MacOS X, я использовал порт заваривания, то есть:Подключение Redland к виртуоз через виртуоз в ODBC/iODBC на MacOS X Окружающая среда
brew install virtuoso
Поступая таким образом, он автоматически устанавливается некоторые драйверы ODBC/iODBC, которые не могут быть перезаписаны никакими другими установками unixodbc. В частности, если я попытаюсь соединить такую библиотеку:
Кстати, я не хочу отсоединять эту версию. Поэтому я попытался скомпилировать Redland с нуля и загрузить его из GitHub. В частности, я использовал две возможные конфигурации:
env PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --with-virtuoso --with-odbc=/usr/local/Cellar/virtuoso/7.2.4.2
env PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --with-virtuoso --with-iodbc=/usr/local/Cellar/virtuoso/7.2.4.2
После добавления rdf_hash_internal.h
и rdf_heuristics.h
в моем проекте вручную, все просто идет гладко, и все становится как компилируется и связаны между собой. В моем приложении C++, я пытаюсь получить доступ к базе данных с помощью следующего кода:
world = librdf_new_world();
librdf_world_open(world);
storage = librdf_new_storage(world,"virtuoso",graphName.c_str(),"dsn='Local Virtuoso',user='dba',password='dba'");
model = librdf_new_model(world,storage,NULL);
context_node = librdf_new_node_from_uri_string(world,(const unsigned char*)defaultContext.c_str());
/* librdf_model_transaction_commit(this->super->model) */
librdf_model_size(super->model)
Если либо отключить сделку или нет, во всяком случае, я получил следующее сообщение об ошибке в строке 941 «rdf_storage_virtuoso.c»:
rc = SQLDriverConnect(connection->hdbc, 0,(UCHAR *) context->conn_str,
SQL_NTS, context->outdsn,
LIBRDF_VIRTUOSO_CONTEXT_DSN_SIZE,
&buflen, SQL_DRIVER_COMPLETE);
Следовательно, я предполагаю, что на уровне ODBC/iODBC существует ошибка соединения. Кстати, я мог бы подключиться к виртуоз с помощью следующей команды:
$ isql localhost:1111 dba dba
Connected to OpenLink Virtuoso
Driver: 07.20.3217 OpenLink Virtuoso ODBC Driver
OpenLink Interactive SQL (Virtuoso), version 0.9849b.
Type HELP; for help and EXIT; to exit.
SQL>
Есть ли способ подключить библиотеку Redland с библиотекой ODBC с помощью Виртуоз? Заранее спасибо.
Учитывая вышеизложенное, я рекомендую вам загрузить и установить [предварительно скомпилированный набор клиентских подключений] (http://opldownload.s3.amazonaws.com/uda/virtuoso/7.2 /universal-apple-macosx10.7-32/mwvcz2zz.dmg) - который поддерживает как графический интерфейс, так и инструменты командной строки и [свободно лицензируется для использования как с открытым исходным кодом, так и с коммерческим выпуском] (http: //virtuoso.openlinksw. ком/DataSpace/док/DAV/вики/Главная/VOSLicense # Клиент% 20Protocol% 20Driver% 20exemptions% 20from% 20GPL). Конфигурация DSN через GUI iODBC Administrator довольно проста. – TallTed
Спасибо за подсказку. Теперь, когда я знаю, как настроить iODBC и Redland, все работает. – jackb
Тем не менее, пара важных строк odbc.ini неверна. 'VOS = Virtuoso' должен быть' VOS = virtuoso-odbc'. 'Driver = virtuoso-odbc' должен быть' Driver =/usr/local/Cellar/virtuoso/7.2.4.2/lib/virtodbc.so'. И вам не хватает строфы '[ODBC Drivers]' в 'odbcinst.ini', которая должна иметь одну строку, а именно' virtuoso-odbc = Installed' – TallTed