Проблема с запросами, привязками Redland и python - PullRequest
1 голос
/ 15 июня 2011

Я разрабатываю семантический обратный прокси, который извлекает метаданные. Я использую Django, dj-revproxy и RDFLib (а для хранения я использую MySQL), но я переключаюсь на фреймворк redland с привязками python для управления семантической частью.

Но у меня есть важная проблема. После хранения RDF (данные находятся в базе данных Mysql, я проверил), я хочу сделать запрос sparql, и результат «нет». Возможно, метод для запросов плохо реализован.

def sparql_query(query, user, password, db, output, dbSystem='mysql'):

    if dbSystem == 'mysql':
        st= connect_librdf_mysql(user, password, db)
    else:
        st= connect_librdf_sqlite(db)

    options = 'database=\'' + db + '\''
    model=RDF.Model(st, options_string=options)

    q1 = RDF.Query(query ,query_language='sparql')

    #q1Result = q1.execute(model) 
    q1Result = model.execute(q1) 

    print("[ SPARQL QUERY DONE ]")

    if q1Result.is_graph():
        return q1Result.as_stream()
    else:
        return str(q1Result)

Результат таков:

slok@sLoKAsus:utils$ python ./test_redland.py
[ CONNETED TO redland2 DATABASE ]
[ RDF STORED ]
[ CONNETED TO redland2 DATABASE ]
[ SPARQL QUERY DONE ]
<?xml version="1.0" encoding="utf-8"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
  <head>
    <variable name="aname"/>
    <variable name="bname"/>
  </head>
  <results>
  </results>
</sparql>

Спасибо:)

1 Ответ

2 голосов
/ 14 июля 2011

Я обнаружил проблему после обновления до версии GIT всех библиотек Redland (raptor, rasqal ...).Проблема в том, что когда я подключаюсь к базе данных MySQL, new = true разрушает все сохраненные данные (данные остаются там, но запросы пусты).

Другими словами, чтобы решить проблему, нужно обновить библиотекии затем в первый раз, когда вы подключаете (или создаете) схему MySQL (db), устанавливаете новый флаг в true, а затем всегда флаг в false.Я поместил здесь код для некоторых функций, которые я сделал: Суть примера MySQL и Redland

...