5

私は難しい状況にあり、MarkLogic のドキュメントにそれに関する情報が見つからないようです。私が抱えている問題は、さまざまなソースからのトリプルを使用しており、文字列オブジェクトを記述するさまざまな方法を使用していることです (一部は多言語です)。

<http://subject1> <http://www.w3.org/2004/02/skos/core#prefLabel> "Object"^^xs:string .
<http://subject2> <http://www.w3.org/2004/02/skos/core#prefLabel> "Object"@en .

したがって、 a を実行する cts:triples((), sem:iri("http://www.w3.org/2004/02/skos/core#prefLabel"), "Object") と、最初のトリプルのみが取得されます。

問題は、言語を無視して 2 つのトリプルを返すようにするにはどうすればよいでしょうか (可能であれば、sparql を使用せずに)。

4

1 に答える 1

5

興味深いことに、上記のように「オブジェクト」を使用しても結果がまったく返されませんでした (MacOS で MarkLogic 7.0-4.1 を使用)。代わりに、次を使用する必要がありました。

cts:triples((),(),(
  sem:unknown("Object", sem:iri("http://www.w3.org/2001/XMLSchemastring")),
  rdf:langString("Object", "en")
))

何が起こっているのかをよりよく理解するために、QConsole で実行できる (空のデータベースに対して実行してください!) 長いコードを次に示します。

xquery version "1.0-ml";

import module namespace sem = "http://marklogic.com/semantics"
       at "/MarkLogic/semantics.xqy";
sem:rdf-insert(sem:rdf-parse('
@prefix xs:  <http://www.w3.org/2001/XMLSchema> .
<http://subject1> <http://www.w3.org/2004/02/skos/core#prefLabel> "Object"^^xs:string .
<http://subject2> <http://www.w3.org/2004/02/skos/core#prefLabel> "Object"@en .
', "turtle"))
;

'all triples:',
cts:triples((),(),()),

'all objects:',
for $triple in cts:triples((),(),())
return xdmp:describe(sem:triple-object($triple)),

'all object languages:',
for $triple in cts:triples((),(),())
return concat('"', sem:lang(sem:triple-object($triple)), '"'),

'results with "Object":',
cts:triples((),(),sem:iri("Object")),

'results with sem:unknown("Object", sem:iri("xs:string")):',
cts:triples((),(),sem:unknown("Object", sem:iri("xs:string"))),

'results with sem:unknown("Object", sem:iri("http://www.w3.org/2001/XMLSchemastring")):',
cts:triples((),(),sem:unknown("Object", sem:iri("http://www.w3.org/2001/XMLSchemastring"))),

'results with rdf:langString("Object", "en")',
cts:triples((),(),rdf:langString("Object", "en")),

'combined results:',
cts:triples((),(),(
  sem:unknown("Object", sem:iri("http://www.w3.org/2001/XMLSchemastring")),
  rdf:langString("Object", "en")
))

チッ!

于 2014-12-17T15:29:53.720 に答える