Коллекции MarkLogic создают избыточные тройки RDF - PullRequest
0 голосов
/ 24 октября 2018

У меня есть набор XML-документов, управляемых с помощью MarkLogic 9.06.Каждый документ содержит (неуправляемые) элементы sem: triple, объявляющие тройку «rdf: type» и тройку «rdfs: label»:

<sem:triple xmlns:sem="http://marklogic.com/semantics">
  <sem:subject>abc</sem:subject>
  <sem:predicate>http://www.w3.org/1999/02/22-rdf-syntax-ns#type
  </sem:predicate>
  <sem:object>http://purl.org/dc/terms/BibliographicResource
  </sem:object>
</sem:triple>
<sem:triple xmlns:sem="http://marklogic.com/semantics">
  <sem:subject>abc</sem:subject>
  <sem:predicate>http://www.w3.org/2000/01/rdf-schema#label
  </sem:predicate>
  <sem:object datatype="http://www.w3.org/2001/XMLSchema#string">abc
  </sem:object>
</sem:triple>

Я заметил, что для каждой коллекции (MarkLogic) есть документ, содержащийтакие тройки принадлежат, соответствующий Именованный граф содержит (автоматически сгенерированный) набор троек, так что, если документ принадлежит «collection_1» и «collection_2», выполнение XQuery, например:

xquery version "1.0-ml"; 
import module namespace sem = "http://marklogic.com/semantics" 
  at "/MarkLogic/semantics.xqy";

sem:graph(sem:iri("collection_1"))

=>
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .

<abc> a dcterms:BibliographicResource ,
dcterms:BibliographicResource ;
<http://www.w3.org/2000/01/rdf-schema#label> "abc"^^xs:string ,
"abc"^^xs:string .

Избыточныйоператоры кажутся безвредными (?) с точки зрения ответа на запросы именованных графов, но является ли это нормальным поведением MarkLogic, или я делаю что-то не так?

1 Ответ

0 голосов
/ 24 октября 2018

Не совсем понятно, как именно вы храните свои тройки, поэтому позвольте мне объяснить оба случая.

С управляемыми тройками (вставленными с помощью SPARQL Update или sem: rdf-insert) они будутхраниться в так называемых <sem:triples> документах с одной и только одной коллекцией, соответствующей графу iri.Если вы вставите одну и ту же тройку в несколько графиков, каждый из них окажется в отдельном документе sem: triples с набором, соответствующим каждому из радужных оболочек графика.

С неуправляемыми или, как я называю, встроенными тройками, ситуациянемного отличается.Документ, в который встроены триплеты, может находиться в любом количестве коллекций.Имена коллекций документов также могут использоваться в качестве графической диафрагмы, поэтому, если какой-то документ имеет одну тройку, но сам находится в нескольких коллекциях, эта тройка будет отображаться как часть нескольких графиков в SPARQL.

Итак,да, это ожидаемое поведение, и лично я не считаю это вредным.Хранилище было бы чистым, на мой взгляд, и тройка будет просто участвовать в нескольких графиках в SPARQL.Я бы назвал это удобным, а не избыточным ..

HTH!

...