private Map<Locale, String> convertLocalizedMap(MappedPath propertyPath, Set<? extends NODE> values) { Map<Locale, String> result = new HashMap<Locale, String>(); for (NODE value : values) { if (value.isLiteral()) { LIT literal = (LIT) value; Locale lang = literal.getLang(); if (lang == null) { lang = Locale.ROOT; } result.put(lang, literal.getValue()); } else { throw new IllegalArgumentException("Expected Literal, got " + value.getNodeType()); } } return result; }
protected void append(LIT lit) throws IOException { String val = lit.getValue(); if (val.indexOf('\n') > 0 || val.indexOf('\r') > 0 || val.indexOf('\t') > 0) { appendable.append("\"\"\""); appendable.append(TurtleUtil.encodeLongString(val)); appendable.append("\"\"\""); } else { appendable.append("\""); appendable.append(TurtleUtil.encodeString(val)); appendable.append("\""); } if (lit.getLang() != null) { appendable.append("@").append(LocaleUtil.toLang(lit.getLang())); } else if (!lit.getDatatype().equals(RDF.text)) { appendable.append("^^"); append(lit.getDatatype()); } }
@Override public int compare(NODE o1, NODE o2) { if (o1 == null) { return o2 == null ? 0 : -1; } else if (o2 == null) { return 1; } // node type if (o1.getNodeType() != o2.getNodeType()) { return o1.getNodeType().compareTo(o2.getNodeType()); } // value if (!o1.getValue().equals(o2.getValue())) { return o1.getValue().compareTo(o2.getValue()); } if (o1.isLiteral() && o2.isLiteral()) { LIT l1 = o1.asLiteral(); LIT l2 = o2.asLiteral(); // datatype if (!l1.getDatatype().equals(l2.getDatatype())) { return compare(l1.getDatatype(), l2.getDatatype()); } // locale Locale loc1 = l1.getLang() == null ? new Locale("") : l1.getLang(); Locale loc2 = l2.getLang() == null ? new Locale("") : l2.getLang(); return loc1.toString().compareTo(loc2.toString()); } return 0; }
@Override public Literal getLiteral(LIT lit) { Literal literal = literalCache.get(lit); if (literal == null){ if (lit.isText()) { Locale lang = lit.getLang(); if (lang.equals(Locale.ROOT)) { literal = vf.createLiteral(lit.getValue()); } else { literal = vf.createLiteral(lit.getValue(), LocaleUtil.toLang(lang)); } } else if (lit.isString()) { literal = vf.createLiteral(lit.getValue(), getURI(XSD.stringType)); } else if (lit.getDatatype().equals(RDF.text)){ literal = vf.createLiteral(lit.getValue()); } else { literal = vf.createLiteral(lit.getValue(), getURI(lit.getDatatype())); } literalCache.put(lit, literal); } return literal; }
@Override public Literal getLiteral(LIT lit) { Literal literal = literalCache.get(lit); if (literal == null) { if (lit.isText()) { Locale lang = lit.getLang(); if (lang.equals(Locale.ROOT)) { literal = vf.createLiteral(lit.getValue()); } else { literal = vf.createLiteral(lit.getValue(), LocaleUtil.toLang(lang)); } } else if (lit.isString()) { literal = vf.createLiteral(lit.getValue(), getURI(XSD.stringType)); } else if (lit.getDatatype().equals(RDF.text)) { literal = vf.createLiteral(lit.getValue()); } else { literal = vf.createLiteral(lit.getValue(), getURI(lit.getDatatype())); } literalCache.put(lit, literal); } return literal; }
@Override public Literal getLiteral(LIT lit) { Literal literal = literalCache.get(lit); if (literal == null) { if (lit.isText()) { Locale lang = lit.getLang(); if (lang.equals(Locale.ROOT)) { literal = vf.createLiteral(lit.getValue()); } else { literal = vf.createLiteral(lit.getValue(), LocaleUtil.toLang(lang)); } } else if (lit.isString()) { literal = vf.createLiteral(lit.getValue(), getURI(XSD.stringType)); } else if (lit.getDatatype().equals(RDF.text)) { literal = vf.createLiteral(lit.getValue()); } else { literal = vf.createLiteral(lit.getValue(), getURI(lit.getDatatype())); } literalCache.put(lit, literal); } return literal; }
if (property.isLocalized() && String.class.equals(property.getType())) { LIT lit = (LIT) statement.getObject(); if (Objects.equal(getCurrentLocale(), lit.getLang())) { recordRemoveStatement(statement);