Я заметил, что в то время как rdf-insert
не позволяет указать документ, только график.Как вставить тройку в определенный XML-документ?
ответ
Хотя я не думаю, что вы можете сделать это с помощью РДФ-вставки, может быть, это было бы полезно для вас, чтобы проверить встроенные тройки записи в документации:
Из MarkLogic Semantics Developer's Guide
Triple documents with sem:triple as the document root are managed triples in MarkLogic Server.
You can also embed triples within XML documents and load them into MarkLogic as-is.
For example:
<?xml version="1.0" encoding="UTF-8"?> <article> <info> <title>News for April 9, 2013</title> <sem:triples xmlns:sem="http://marklogic.com/semantics> <sem:subject>http://example.org/article</sem:subject> <sem:predicate>http://example.org/mentions</sem:predicate> <sem:object>http://example.org/London</sem:object> </sem:triples> </info> </article>
The loaded triples are automatically indexed with a special-purpose triple index. The triple index allows you to immediately search the RDF data for which you have the required privileges.
Возможно, вы можете попробовать вставить узел sem: triples в документ и посмотреть, индексируется ли это?
Alex, вы можете вставить тройку в документ, используя xdmp: node-insert-child(). Существует один трюк, который заключается в том, что функция ожидает узел, а тройка не является узлом. Это работает:
xdmp:node-insert-child(
fn:doc('has-a-triple.xml')/doc,
<t>{sem:triple(sem:iri("Firefly"), "is-a", "TV show")}</t>/*
)
Если вы попробуете это без <t/>/*
трюк, вы получите сообщение об ошибке:
xdmp:node-insert-child(
fn:doc('has-a-triple.xml')/doc,
sem:triple(sem:iri("Firefly"), "is-a", "TV show")
)
возвращается
XDMP-ARGTYPE: (err:XPTY0004) xdmp:node-insert-child(fn:doc("has-a-triple.xml")/doc,
sem:triple(sem:iri("Firefly"), "is-a", "TV show")) -- arg2 is not of type node()
Или 'document {...}/*' вместо '
Во-первых, ключ здесь должен признать, что существует два способа хранения и управления троек в MarkLogic.
управляемые троек - здесь вы хотите использовать MarkLogic как «просто трехместный магазин». Загрузите тройки с помощью mlcp (загрузчик командной строки) или sem: rdf-load() или sem: rdf-insert(). В этом случае вы не хотите знать или ухаживать за документами, в которых хранятся троек, - вы просто хотите загрузить троек, чтобы впоследствии вы могли запросить их с помощью SPARQL. Вот почему sem: rdf-insert() не имеет аргумента «вставить в этот документ».
встроенные тройки - тройки встроены в документ XML (или JSON). В этом случае тройка является концептуально частью документа; поэтому, если вы хотите вставить тройку в документ (вставить тройку в документ), вы должны посмотреть на API-интерфейсы , а не на троек.
После того, как вы едите, что ментальная модель, вы можете использовать семафор: РДФ-вставка(), если ваша тройка, по существу, «свободно плавающий» - то есть не имеет значения, какой документ это в Или. может выбрать что-то вроде xdmp: node-insert-child(), если вы действительно хотите разместить эту тройку внутри существующего документа в какой-то позиции. (В MarkLogic 8 вы также можете использовать SPARQL Update для вставки управляемых/свободно плавающих троек.
Это говорит о том, что я хотел бы узнать, могу ли я сделать узел-вставку-потомка более простым и интуитивным способом - т.е. без «трюка» выше.
Во-первых, полезно создать тройку, используя sem: iri() и sem: triple() выше, хотя вы могли бы создать тройку непосредственно в XML. Использование sem: constructors более надежный.
Во-вторых, sem: triple() возвращает объект типа sem: triple, а не узел XML. Поэтому вы не можете передать его непосредственно в xdmp: node-insert-child(). Но там - это вспомогательная функция для перевода из семестра: triple в узел XML - sem: rdf-serialize() с опцией «triplexml».
Таким образом, вы можете сделать это:
xdmp:document-insert("/test/test.xml", <doc><title>test</title></doc>)
затем:
import module namespace sem = "http://marklogic.com/semantics"
at "/MarkLogic/semantics.xqy";
xdmp:node-insert-child(
fn:doc('/test/test.xml')/doc,
sem:rdf-serialize(
sem:triple(sem:iri("Firefly"), "is-a", "TV show"),
"triplexml"
)
)
... и вы получите:
fn:doc('/test/test.xml')
=>
<doc>
<title>test</title>
<sem:triples xmlns:sem="http://marklogic.com/semantics">
<sem:triple>
<sem:subject>Firefly</sem:subject>
<sem:predicate datatype="http://www.w3.org/2001/XMLSchema#string">is-a</sem:predicate>
<sem:object datatype="http://www.w3.org/2001/XMLSchema#string">TV show</sem:object>
</sem:triple>
</sem:triples>
</doc>
- 1. Как вы делаете молодую тройку?
- 2. Как вставить определенный столбец в SQL сервере
- 3. Как вставить в определенный столбец таблицы?
- 4. Как вставить файл в определенный целевой файл
- 5. Как вставить массив в определенный индекс массива?
- 6. Как вставить символ в определенный момент java
- 7. Как часто вы реализуете большую тройку?
- 8. Как напечатать пифагорейскую тройку с наибольшей гипотенузой
- 9. PostgreSQL: выберите тройку лидеров в каждой группе
- 10. Вставить определенный веб-браузер в приложение C++
- 11. Дерево, Вставить узел в определенный момент
- 12. Вставить определенный слой в Google Map
- 13. Как вставить данные в определенный столбец в базе данных sqlite?
- 14. Swift: Как вставить UIImage в определенный индекс в строке?
- 15. Как вставить объект в определенный макет в Autocad, используя .net?
- 16. Как вставить значение в определенный столбец в текстовых файлах
- 17. Linux: как вставить строку в определенный номер строки в файл?
- 18. Как вставить модель в коллекцию backbone.js в определенный индекс?
- 19. Как вставить столбец в определенный индекс столбца в pandas?
- 20. Как получить верхнюю тройку за группу в доступе SQL
- 21. Как я могу поместить 4 предмета в тройку RDF?
- 22. Почему это булевское сравнение Python возвращает тройку?
- 23. SPARQL: выберите одну тройку из нескольких матчей?
- 24. Java LinkedList: как вставить вещи в определенный индекс?
- 25. Typhoon - Как вставить UIView, определенный в файле xib?
- 26. Как вставить данные цикла for в определенный индекс?
- 27. Как вставить каждое изображение галереи в определенный div? Wordpress
- 28. Jena удалить тройку с анонимным узлом
- 29. Вставить Игнорировать эффективность за определенный период времени
- 30. Jquery вставить новую строку в таблицу в определенный индекс
Структура семерки: тройки неполна, ей не хватает sem: triple, которая обертывает каждую комбинацию предметов/предикатов/объектов. Это вы придерживаетесь этой структуры, вы можете поместить столько троек в любой фрагмент, и они будут проиндексированы, если вы включите тройной индекс. Вы можете даже поместить их в свойства. – grtjn
Можете быть более надежными в будущем, хотя использовать конструкцию sem: triple или использовать что-то вроде 'sem: rdf-serialize (sem: rdf-parse ($ rdf)," triplexml ")'. Стивен Бакстон дает хороший пример. – grtjn