Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Marklogic Cts:使用sparql进行搜索_Marklogic_Marklogic 7 - Fatal编程技术网

Marklogic Cts:使用sparql进行搜索

Marklogic Cts:使用sparql进行搜索,marklogic,marklogic-7,Marklogic,Marklogic 7,在marklogic中,三元组可以嵌入到现有文档中。如何使用cts搜索查询返回文档。文档的一个示例可以是 <ContentVersion> <Name>Testing</Name> <Status>Approved</Status> <sem:triples xmlns:sem="http://marklogic.com/semantics"> <sem:triple> <se

在marklogic中,三元组可以嵌入到现有文档中。如何使用cts搜索查询返回文档。文档的一个示例可以是

<ContentVersion>
  <Name>Testing</Name>
  <Status>Approved</Status>
  <sem:triples xmlns:sem="http://marklogic.com/semantics">
   <sem:triple>
      <sem:subject>http://mycontent/content/Testing</sem:subject>
      <sem:predicate>is</sem:predicate>
      <sem:object>Approved</sem:object>
 </sem:triple>
</sem:triples>
</ContentVersion>

测试
经核准的
http://mycontent/content/Testing
是
经核准的
如果需要,请尝试下面的查询

let $query := cts:word-query('Testing',"case-insensitive")
let $sparql := "PREFIX cts: <http://marklogic.com/cts#>
                DESCRIBE ?s 
                WHERE{ 
                   ?s ?p ?o .
                   FILTER cts:contains(?o, cts:word-query('Testing')) 
                }"
let $results := sem:sparql($sparql,(),("default-graph=magician"),($query))  
return(sem:rdf-serialize($results,'rdfxml'))
let$query:=cts:word查询('Testing',“不区分大小写”)
让$sparql:=“前缀cts:
描述
何处{
?s?p?o。
过滤器cts:包含(?o,cts:word查询('Testing'))
}"
让$results:=sem:sparql($sparql,(),($default graph=macher”),($query))
返回(sem:rdf序列化($results,'rdfxml'))

我得到一个空的结果。你知道为什么什么都不退吗?我使用的是MarkLogic 7,cts:contains的焦点是?o,它只包含“Approved”。这就是为什么sem:sparql没有返回结果,不是因为您使用cts查询的方式不对

(更新…)

为了确认该方法有效,我尝试了以下方法:

xquery version "1.0-ml";

let $xml := <ContentVersion>
  <Name>Testing</Name>
  <Status>Approved</Status>
  <sem:triples xmlns:sem="http://marklogic.com/semantics">
   <sem:triple>
      <sem:subject>http://mycontent/content/Testing</sem:subject>
      <sem:predicate>is</sem:predicate>
      <sem:object>Approved</sem:object>
 </sem:triple>
</sem:triples>
</ContentVersion>
return xdmp:document-insert("/test.xml", $xml, (), "magician")
;

let $query := cts:word-query('Testing',"case-insensitive")
let $sparql := "PREFIX cts: <http://marklogic.com/cts#>
                DESCRIBE ?s 
                WHERE{ 
                   ?s ?p ?o .
                   FILTER cts:contains(?o, cts:word-query('Approved')) 
                }"
let $results := sem:sparql($sparql,(),("default-graph=magician"),($query))  
return $results
xquery版本“1.0-ml”;
让$xml:=
测试
经核准的
http://mycontent/content/Testing
是
经核准的
返回xdmp:documentinsert(“/test.xml”,$xml,(),“魔术师”)
;
let$query:=cts:word查询('Testing',“不区分大小写”)
让$sparql:=“前缀cts:
描述
何处{
?s?p?o。
过滤器cts:包含(?o,cts:word查询('Approved'))
}"
让$results:=sem:sparql($sparql,(),($default graph=macher”),($query))
返回$results
对任何启用了三重索引的数据库使用QC运行此操作

您确定要插入带有收藏“魔术师”的文档吗?这就是使用MarkLogic在特定图形中嵌入三元组的方法


我已将单词查询更改为搜索要批准的单词,并且我得到一个空的查询结果非常感谢您的帮助。我想了解你对魔术师收藏的评论。这项建议和任何其他建议对最佳方法有何影响?使用嵌入的三元组,将嵌入它们的整个文档分配给一个与要添加三元组的图形同名的集合,这就是您应该做的。OMG!这太棒了<代码>cts查询内部
SPARQL
。如果您能提供任何可用的文档来了解如何在
SPARQL
中使用
cts
的更多信息,那就太棒了,因为实际上没有什么可读的。只要知道前缀名称空间,就可以使用几乎所有的MarkLogic内置函数。。