Недавно я создал базу данных Virtuoso (версия 07.10.3207) с использованием данных dbpedia. Я пытаюсь создать для него некоторые запросы и сталкиваться с очень странными результатами. Например:Результаты Bizarre с bif: содержит - поврежденный индекс полного текста?
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select ?s, ?p, ?o where {
?s ?p ?o .
?s rdfs:label "Almond"@en .
?o bif:contains "mythical"
}
Это дает удар. Можно было бы ожидать, что это означает, что поле комментария (поле, которое соответствует «мифическому») для Алмонда содержит слово «мифический». Однако это не так. На самом деле это:
«Миндаль (/? M? Nd /) (Prunus dulcis, syn. Prunus amygdalus, Amygdalus communis, Amygdalus dulcis) (или бадам на индийском английском языке, от персидского: ???) является разновидностью дерева, обитающего на Ближнем Востоке и в Южной Азии. «Алмонд» также является названием съедобного и широко культивируемого семени этого дерева ». @ en
Многие другие запросы дают похожие результаты ,
Пробуя те же запросы на конечной точке dbpedia общественности, не дают эти странные результаты, поэтому я знаю, что это как-то проблема с моей базой данных. Я догадался, что это может быть связано с некоторой коррупцией полных текстовых индексов.
Я попытался следующие, без супер-четкого понимания того, что именно они могли бы сделать, основываясь на других заметках я смог найти:
DB.DBA.RDF_OBJ_FT_RULE_ADD(null, null, 'All');
DB.DBA.VT_INC_INDEX_DB_DBA_RDF_OBJ();
DB.DBA.RDF_OBJ_FT_RECOVER();
DB.DBA.VT_INDEX_DB_DBA_RDF_OBJ();
До сих пор нет костей. Я задаюсь вопросом, может ли это иметь отношение к искаженным символам в поле комментариев - конечная точка онлайн dbpedia отображает их правильно, в то время как моя установка Virtuoso просто дает вопросительные знаки, как видно выше. Не знаю даже, как начать приближаться к этому, хотя.
Я включил SQL_UTF8_EXECS = 1 в virtuoso.ini (и впоследствии перезапустил сервер), который по-прежнему оставил мне вопросительные знаки в результатах.
Фактически, это не имеет никакого отношения к этим вопросительным знакам; Я побежал следующий запрос:
select ?s, ?p, ?o where {
?s ?p ?o .
?o bif:contains "mythical" .
FILTER (!regex(?o, "mythical", "i"))
}
Выбор псевдослучайных хитов, ни один из которых содержит "мифического" или "?":
"Asgrrr" "403 BC" "Потенциал бесконечности" " «Красота и зверь» (ток-шоу) » « Дорога шоссе Альберта 22 »
Тот же запрос, выполняемый в http://dbpedia.org/sparql, ничего не возвращает (как следует).
Любые идеи?