2014-12-17 27 views
5

Jestem w trudnej sytuacji i nie mogę znaleźć żadnych informacji w dokumentacji MarkLogic na ten temat. Problem mam jest, że używam trójek z różnych źródeł i są one za pomocą różnych sposobów opisywania obiektów String (niektóre są wielojęzyczna):Język potrójnych obiektów 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 . 

więc kiedy robię cts:triples((), sem:iri("http://www.w3.org/2004/02/skos/core#prefLabel"), "Object") potem tylko zdobądź pierwszy potrójny.

Pytanie brzmi: w jaki sposób mogę zignorować język i zwrócić dwie trójki (jeśli to możliwe, bez użycia sparql)?

Odpowiedz

5

Co ciekawe użycie "obiektu", jak wyżej, nie przyniosło mi w ogóle wyników (używając MarkLogic 7.0-4.1 na MacOS). Zamiast tego musiałem użyć:

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

Oto niektóre już kawałek kodu, który można uruchomić w QConsole (uruchomić go na pustej bazy danych!), Aby lepiej zrozumieć, co się dzieje:

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") 
)) 

HTH !