sparql - SPARQL 属性搜索 (MarkLogic)
问题描述
我一直在尝试在 sparql 中进行属性搜索,现在我有一个解决方案,即使用 CTS 预先准备必要的 sem 三元组,如下面的代码所示
xquery version "1.0-ml";
import module namespace sem = "http://marklogic.com/semantics" at "/MarkLogic/semantics.xqy";
sem:sparql('
SELECT *
WHERE {?s ?p ?o .}
',
(),
(),
cts:element-attribute-value-query(xs:QName("sem:subject"), xs:QName("attri_name"), "Robert")
)
但是,我想知道的是,我是否真的可以在一个简单的 sparql 查询中完成所有这些工作?也许诸如
sem:sparql('
SELECT *
WHERE {?s ?p ?o .
FILTER (get all sem triples with attri_value for sem:subject that contains "Robert")}',
(),
(),
()
)
现在我知道FILTER cts:contains
可以使用它,因为它返回一个布尔值(真/假)来帮助确定某个行是否符合条件,但这不能满足element-attribute-value-query
. 同时,FILTER cts...
在 SPARQL 查询中使用时,只会查询主要由文本/日期/时间数据组成的目标数据。
最后,可以在下面看到正在使用的数据的示例。
<?xml version="1.0" encoding="UTF-8"?>
<sem:triples xmlns:sem="http://marklogic.com/semantics">
<sem:triple>
<sem:subject attri_name="Robert">http://dbpedia.org/resource/Robert_Shayne</sem:subject>
<sem:predicate>http://purl.org/dc/elements/1.1/description</sem:predicate>
<sem:object xml:lang="en">Film, Television actor</sem:object>
</sem:triple>
</sem:triples>
解决方案
推荐阅读
- regex - 如何在一个模式中包含两个模式?
- java - 为 Kafka Consumer Docker 设置 JMX 指标
- java - 由于 int 错误,即使它们包含在类中,对象也不会构造
- html - Laravel,更新多行数组
- rest - 如何解决 java vert.x 中的 CORS 问题
- angular - 合并 JSON 数据总计
- git - Heroku CLI 未安装在 heroku git:clone 之后创建的子目录中
- c# - 获取没有实例的属性类型
- c# - Web Api core 2.0 Controller方法入参校验
- node.js - 如何在 mongodb 中模拟 document.save() 的错误?