2014-12-17 12 views
5

Ich bin in einer schwierigen Situation, und ich kann keine Informationen in der Dokumentation Marklogic darüber zu finden scheinen. Das Problem, das ich habe ist, dass ich Tripel aus verschiedenen Quellen verwenden und sie verwendet verschiedene Arten von String-Objekte beschreiben (einige sind mehrsprachig):Marklogic triple Objekte Sprache

<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 . 

Also, wenn ich ein cts:triples((), sem:iri("http://www.w3.org/2004/02/skos/core#prefLabel"), "Object") tue dann nur ich Hol dir das erste Triple.

Die Frage ist, wie kann ich es die Sprache machen ignorieren und gibt die zwei Tripel (wenn möglich, ohne Verwendung von SPARQL)?

Antwort

5

Interessanterweise „Objekt“ mit wie oben keine Ergebnisse zurück nicht für mich überhaupt (mit Marklogic 7,0-4,1 auf MacOS). Stattdessen hatte ich verwenden:

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

Hier einige längeres Stück Code, den Sie in QConsole (führen Sie es gegen eine leere Datenbank!) Ausführen können, um besser zu verstehen, was vor sich geht:

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 !