Поиск атрибутов SPARQL (MarkLogic) - PullRequest
0 голосов
/ 25 февраля 2019

Я пытался выполнить поиск атрибутов в sparql, на данный момент у меня есть решение с использованием CTS для подготовки необходимых трехкратных семплов перед этим, как показано в кодах ниже

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.В то же время при использовании 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>
...