You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MarkLogic中如何从cts:triples输出提取主语、宾语值?

解决方案:提取MarkLogic三元组的主语/宾语值

提取主语值

使用sem:triple-subject获取三元组的主语IRI,再通过fn:local-name提取IRI的本地名称(适用于带命名空间或无命名空间的IRI场景):

for $triple in cts:triples((), sem:iri("testName"), (), (), (), cts:and-query(cts:collection-query("testCollection")))
return fn:local-name(sem:triple-subject($triple))

如果主语是无命名空间的简单IRI(如<a>),也可以用字符串替换直接去掉尖括号:

for $triple in cts:triples((), sem:iri("testName"), (), (), (), cts:and-query(cts:collection-query("testCollection")))
return fn:replace(sem:iri-to-string(sem:triple-subject($triple)), '^<|>$', '')

执行后输出:

a
b
c
d
e

提取宾语值

用sem:triple-object获取宾语IRI,再提取目标部分:

for $triple in cts:triples((), sem:iri("testName"), (), (), (), cts:and-query(cts:collection-query("testCollection")))
return fn:local-name(sem:triple-object($triple))

或者字符串替换写法:

for $triple in cts:triples((), sem:iri("testName"), (), (), (), cts:and-query(cts:collection-query("testCollection")))
return fn:replace(sem:iri-to-string(sem:triple-object($triple)), '^<|>$', '')

执行后输出:

aa
bb
cc
dd
ee

说明

cts:triples返回的是sem:triple类型对象,sem:triple-subject和sem:triple-object分别用于提取三元组的主语、宾语IRI,再通过IRI处理函数或字符串替换得到纯文本值。

内容的提问来源于stack exchange,提问作者marklogic_coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 09:52:30