Как создать шаблон с помощью TDE в MarkLogic для генерации троек

Мне нужно создать шаблон с помощью TDE в MarkLogic. И этот шаблон будет генерировать тройки из существующих XML-документов. Если тема - это URI документа, предикат - это имя элемента, а объект - это значение элемента.


person Anuj Gupta    schedule 25.01.2018    source источник


Ответы (1)


В руководстве по семантике есть примеры. По вашему запросу вы можете сделать что-то вроде этого, но обратите внимание, что такие контекстные пути могут значительно снизить производительность приема (в зависимости от размера ваших входных данных):

<template xmlns="http://marklogic.com/xdmp/tde">
  <context>//*[text()]</context>
    <vars>
      <var>
        <name>EX</name>
        <val>"http://example.org/ex#"</val>
      </var>
    </vars>
  <triples>
    <triple>
      <subject>
        <val>sem:iri( fn:base-uri(.) )</val>
      </subject>
      <predicate>
        <val>sem:iri( $EX || fn:name(.) )</val>
      </predicate>
      <object>
        <val>fn:data( . )</val>
      </object>
    </triple>
  </triples>
</template>

HTH!

person grtjn    schedule 25.01.2018
comment
Он не извлекает данные из xml. - person Anuj Gupta; 29.01.2018
comment
Не могли бы вы добавить более подробную информацию о том, что вы пробовали, и к каким результатам в разделе вопросов? - person grtjn; 29.01.2018
comment
Еще одна вещь, есть ли способ получить тройки в форматах XML вместо JSON? Также мы можем использовать TDE для создания и вставки Triples XML в ML. - person Anuj Gupta; 30.01.2018
comment
Тройки, извлеченные с помощью TDE, сохраняются только в тройном индексе, а не на диске. У них нет ни XML, ни JSON формата. Однако вы можете запустить запрос SPARQL, а затем решить сохранить результат как постоянные тройки в базе данных, либо как управляемые тройки, либо как встроенные тройки в документах JSON или XML. - person grtjn; 30.01.2018
comment
Спасибо! Итак, можете ли вы мне сказать, как мы можем сохранить результат запроса SPARQL в базе данных ML в виде троек? - person Anuj Gupta; 30.01.2018
comment
С оператором обновления SPARQL в строках CONSTRUCT { ?s ?p ?o } WHERE { ?s ?p ?o }. - person grtjn; 30.01.2018
comment
Спасибо! Итак, что лучше использовать. В памяти или на индиске? - person Anuj Gupta; 31.01.2018