Я никогда не имел дело с базами данных XML (или запрашивал XML в сложной форме), поэтому этот xquery для меня совершенно новый. Я прочитал книгу Datypic и изначально пытался разобрать XML в базу данных, но теги имеют значение, а реляционная база данных добавляет сложности.
У меня есть несколько файлов, содержащих стенограммы и подробности об используемых словах, структура такая:
<text id="KBY">
<bncDoc xml:id="KBY">
<stext type="CONVRSN">
<u who="KBYPSUNK">
<w tag="UH" hw="hi" pos="INTERJ" sem="Z4" semo="|Z4|">Hi</w>
<w tag="YEX" hw="PUNC" pos="STOP" sem="" semo="|">!</w>
</u>
<u who="PS10L">
<w tag="VVGK" hw="going" pos="VERB" sem="T1:1:3" semo="|T1:1:3|">Gon</w>
<w tag="TO" hw="to" pos="PREP" sem="Z5" semo="|Z5|">na</w>
<w tag="RR21" hw="at" pos="ADV" sem="A13:7" semo="|A13:7;i1:2:1|">at</w>
<w tag="RR22" hw="least" pos="ADV" sem="A13:7" semo="|A13:7;i1:2:2|A13:7|">least</w>
<w tag="VVI" hw="stop" pos="VERB" sem="T2" semo="|T2d|S8d|M8|H4|A1:1:1|">stop</w>
<w tag="II" hw="at" pos="PREP" sem="Z5" semo="|Z5|">at</w>
<w tag="NP1" hw="gerald" pos="SUBST" sem="Z1" semo="|Z1m|">Gerald</w>
<w tag="GE" hw="'s" pos="UNC" sem="Z5" semo="|Z5|">'s</w>
<w tag="VHZ" hw="have" pos="VERB" sem="Z5" semo="|Z5|A9u|A2:2|S4|">has</w>
<w tag="XX" hw="not" pos="ADV" sem="Z6" semo="|Z6|">n't</w>
<w tag="PPHS1" hw="he" pos="PRON" sem="Z8" semo="|Z8m|">he</w>
<w tag="YQUE" hw="PUNC" pos="STOP" sem="" semo="|">?</w>
</u>
Тривиально, я знаю, что могу запросить отдельные слова, используя:
for $w in //w
where $w = "houses"
return $w
OR
for $w in //w//text()
where $w = "houses"
return $w
Но я не могу, на всю жизнь, понять, как я могу запросить более одного термина. т.е. «Было три дома». Это потребует проверки того, что каждое слово является соседним и не находится в отдельном теге u
. В идеале я мог бы ухватить несколько слов до и после. До сих пор я предполагаю, что это сложно из-за структуры, но поиск простого файла занимает> 6 секунд, и BaseX кажется очень эффективным с этим.
Любая помощь приветствуется!
@hw
? Наконец, не могли бы вы дать ссылку на какую-либо информацию об этом формате — что-то, что могло бы объяснить многие атрибуты? (Или, если они не важны, возможно, лучше удалить их из вашего образца, улучшив отношение сигнал/шум.) Что мне странно, так это то, что нет явной информации о пробелах между<w>
элементами - важно при поиске текст. - person Joe Wicentowski   schedule 18.06.2017pos
, но я знаю, что это не идеально. - person Christopher Gwilliams   schedule 19.06.2017