【问题标题】:In TDE Marklogic how to escape null value triples?在 TDE Marklogic 中如何转义空值三元组?
【发布时间】:2019-06-26 06:46:47
【问题描述】:
<template xmlns="http://marklogic.com/xdmp/tde">
    <context>/test</context>
    <vars>
        <var>
            <name>subprefix</name>
            <val>"http://www.test.com/resource/test/"</val>
        </var>
    <var>
            <name>objprefix</name>
            <val>"http://www.test.com/resource/test/"</val>
        </var>
    </vars>
    <triples>
        <triple>
            <subject>
                <val>sem:iri($subprefix || ElemenetName)</val>
                <invalid-values>ignore</invalid-values>
            </subject>
            <predicate>
                <val>sem:iri('is')</val>
            </predicate>
            <object>
                <val>sem:iri($objprefix || FullName)</val>
                <invalid-values>ignore</invalid-values>
            </object>
        </triple>
    </triples>
</template>

我创建了一个模板来从 XML 中获取三元组。

但想转义空值三元组(s,p 或 o)。 我正在使用忽略,但这仅在主题或对象中没有前缀时才有效。如果有前缀,它会创建带有 null 的三元组(只有前缀)。

我们有什么方法可以在 MarkLogic TDE 中处理这个问题吗?

可空对象/主题问题。

【问题讨论】:

    标签: marklogic-9 triples


    【解决方案1】:

    您可以更多地利用上下文表达式,尤其是在您使用子模板时。这是一个显示子模板的粗略示例,适用于 3 个示例文档:

    xquery version "1.0-ml";
    
    let $tde :=
    <template xmlns="http://marklogic.com/xdmp/tde">
      <context>/test</context>
      <vars>
        <var>
          <name>subprefix</name>
          <val>"http://www.test.com/resource/test/"</val>
        </var>
        <var>
          <name>objprefix</name>
          <val>"http://www.test.com/resource/test/"</val>
        </var>
      </vars>
      <templates>
        <template>
          <context>FullName</context>
          <triples>
            <triple>
                <subject>
                    <val>sem:iri($subprefix || ../ElemenetName)</val>
                    <invalid-values>ignore</invalid-values>
                </subject>
                <predicate>
                    <val>sem:iri('is')</val>
                </predicate>
                <object>
                    <val>sem:iri($objprefix || .)</val>
                    <invalid-values>ignore</invalid-values>
                </object>
            </triple>
          </triples>
        </template>
      </templates>
    </template>
    let $xml1 := <test><ElemenetName>elem</ElemenetName><FullName>full</FullName></test>
    let $xml2 := <test><ElemenetName>elem</ElemenetName></test>
    let $xml3 := <test><FullName>full</FullName></test>
    return tde:node-data-extract(($xml1, $xml2, $xml3), $tde)
    

    更多关于子模板的背景信息可以在这里找到:

    https://docs.marklogic.com/guide/sql/creating-template-views#id_28999

    HTH!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多