我一直在尝试在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
,因为它返回一个布尔值(true / false),以帮助确定某个行是否适合该条件,但是element-attribute-value-query
无法满足。同时,在SPARQL查询中使用FILTER cts...
时,仅查询主要由文本/日期/时间数据组成的目标数据。
最后,可以在下面看到正在使用的数据的示例。
<?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>