marklogic-9 - 在 TDE Marklogic 中如何转义空值三元组?
问题描述
<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 中处理这个问题吗?
可空对象/主题问题。
解决方案
您可以从上下文表达式中获得更多用途,尤其是在使用子模板时。这是一个显示子模板的粗略示例,适用于 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
!
推荐阅读
- r - 如何将“标题”行转换为新列
- javascript - 移动设备上的 Google Chrome 会在文件输入时触发额外的不需要的 MouseEvent
- c# - 重新组合来自同一反应流的元素
- visual-studio - Visual Studio - 禁用进入模块的源代码(应该)
- javascript - 用于动态 HTML 循环内的输入的 keyup 事件
- sql-server - T-SQL:了解游标以更新
- jsf - 为什么我的 Java Server Faces HTML 数据表没有填充?
- php - 类 Illuminate\Pagination\LengthAwarePaginator 的对象无法转换为 int
- apache-kafka-streams - 通过同一应用的多个 kafka 流实例读取规则集主题/分区
- javascript - Material-UI Autocomplete & TextField 触发谷歌自动完成