использовать
$(window).width()
или
$(document).width()
или
$('body').width()
Я решил это сам, сделав так. Надеюсь, это поможет кому-то другому. Мне потребовалось более 5 часов чтения документации MarkLogic. Я думаю, теперь у меня есть хорошая ручка. Я не уверен, что это самый быстрый способ, но он принял только 93ms
for $id in sem:query-results-serialize( $rez , 'xml')//s:uri/text()
return
xdmp:node-uri( (cts:search(/blah//sem:triple/*[text() = $id ] , ()))[1] )
Рассмотрим использование cts:triple-range-query
. Его можно использовать в cts:search
напрямую и вставить в ваш другой запрос. Это позволяет искать только отдельные троики, хотя ваш пример довольно прост.
Чтобы найти все отчеты AP Newswire и BBC, рассказывающие о посещающих страны Никсона:
query version "1.0-ml";
for $doc in cts:search(
collection(),
cts:and-query( (
cts:element-value-query( xs:QName("source"), ("AP Newswire", "BBC") ),
cts:triple-range-query(
sem:iri("http://example.org/news/Nixon"),
sem:iri("http://example.org/wentTo"),
()
)
) )
)[1 to 10]
return (xdmp:node-uri($doc), $doc)
Вы также можете предварительно -execute SPARQL сначала разрешить более сложные запросы SPARQL и передать результат в cts: search с трехдиапазонным запросом. Например: найти все отчеты о конкретных странах, которые посетил Никсон (как сообщается AP Newswire и BBC):
let $countries := sem:sparql('
SELECT DISTINCT ?country
WHERE {
<http://example.org/news/Nixon> <http://example.org/wentTo> ?country
}
',
(),
(),
cts:element-value-query( xs:QName("source"), ("AP Newswire", "BBC") )
) ! map:get(., "country")
for $doc in cts:search(
collection(),
cts:triple-range-query(
sem:iri("http://example.org/news/Nixon"),
sem:iri("http://example.org/wentTo"),
$country[1 to 3]
)
)[1 to 10]
return (xdmp:node-uri($doc), $doc)
Обратите внимание на тонкие различия между двумя приведенными выше примерами.
НТН!
[1 to 10]
в моих примерах.
– grtjn
17 July 2018 в 21:29
Может быть более чистый способ (с меньшим количеством кастингов), но я так делал это раньше в XQuery:
xquery version "1.0-ml";
import module namespace sem = "http://marklogic.com/semantics"
at "/MarkLogic/semantics.xqy";
let $triples := sem:sparql('
SELECT *
WHERE
{ ?subject ?predicate ?object }
')
return sem:database-nodes($triples ! sem:triple(map:get(., "subject"), map:get(., "predicate"), map:get(., "object"))) ! fn:base-uri(.)
//
на самом деле дорогой. XPath также может принудительно фильтровать результаты для применения упорядочивания документов, хотя и не совсем уверен, что это также касается путей поиска. Как правило, на производительность влияют многие факторы. Лучше всего измерять и продолжать измерять. – grtjn 16 July 2018 в 07:22