private void registerDatatype(RDFDatatype datatype) { datatypeCache.put(datatype.getIRI(), datatype); }
@Override public boolean isA(IRI baseDatatypeIri) { return getAncestry().getTermTypes() .filter(t -> t instanceof RDFDatatype) .map(t -> ((RDFDatatype)t).getIRI()) .anyMatch(baseDatatypeIri::equals); }
private Optional<COL_TYPE> extractColType(TermType termType) { if (termType instanceof ObjectRDFType) { COL_TYPE colType = ((ObjectRDFType)termType).isBlankNode() ? BNODE : OBJECT; return Optional.of(colType); } else if (termType instanceof RDFDatatype) { return Optional.of(COL_TYPE.getColType(((RDFDatatype)termType).getIRI())); } else return Optional.empty(); }
/** * TODO: could we have a RDF sub-class of ValueConstant? */ public static Literal getLiteral(ValueConstant literal) { Objects.requireNonNull(literal); TermType type = literal.getType(); if (!(type instanceof RDFDatatype)) // TODO: throw a proper exception throw new IllegalStateException("A ValueConstant given to OWLAPI must have a RDF datatype"); RDFDatatype datatype = (RDFDatatype) type; return datatype.getLanguageTag() .map(lang -> fact.createLiteral(literal.getValue(), lang.getFullString())) .orElseGet(() -> fact.createLiteral(literal.getValue(), fact.createIRI(datatype.getIRI().getIRIString()))); }
public OWLLiteral translate(ValueConstant v) { if (v == null) return null; String value = v.getValue(); if (value == null) { return null; } TermType type = v.getType(); if (!(type instanceof RDFDatatype)) // TODO: throw a proper exception throw new IllegalStateException("A ValueConstant given to OWLAPI must have a RDF datatype"); RDFDatatype datatype = (RDFDatatype) type; if (datatype.getLanguageTag().isPresent()) { return dataFactory.getOWLLiteral(value, datatype.getLanguageTag().get().getFullString()); } else { OWLDatatype owlDatatype = new OWLDatatypeImpl(IRI.create(datatype.getIRI().getIRIString())); if (owlDatatype != null) return dataFactory.getOWLLiteral(value, owlDatatype); else throw new IllegalArgumentException(datatype.toString()); } }
private void initDataProperty(ObjectRDFType type1, RDFDatatype type2) { String value = type1.isBlankNode() ? "TRUE" : "FALSE"; String filter = "ISBNODE = " + value + " AND "; String select, insert; if (type2.getLanguageTag().isPresent()) { /* * If the mapping is for something of type Literal we need to add IS * NULL or IS NOT NULL to the language column. IS NOT NULL might be * redundant since we have another stage in Quest where we add IS NOT * NULL for every variable in the head of a mapping. */ LanguageTag languageTag = type2.getLanguageTag().get(); // Hack: use the RDFS Literal table to get the table description RDBMSSIRepositoryManager.TableDescription tableDescription = RDBMSSIRepositoryManager.ATTRIBUTE_TABLE_MAP .get(RDF.LANGSTRING); select = tableDescription.getSELECT("LANG = '" + languageTag.getFullString() + "' AND " + filter); insert = tableDescription.getINSERT("?, ?, ?, ?, " + value); } else { RDBMSSIRepositoryManager.TableDescription tableDescription = RDBMSSIRepositoryManager.ATTRIBUTE_TABLE_MAP .get(type2.getIRI()); select = tableDescription.getSELECT(filter); insert = tableDescription.getINSERT("?, ?, ?, " + value); } createViews(type1, type2, select, insert); }
switch (COL_TYPE.getColType(object.getType().getIRI())) { case LANG_STRING: // -3 stm.setString(2, value);
return termFactory.getUriTemplateForDatatype(typeFactory.getXsdBooleanDatatype().getIRI().getIRIString());
private Term evalStr(Function term) { Term innerTerm = term.getTerm(0); if (innerTerm instanceof Function) { Function function = (Function) innerTerm; Predicate predicate = function.getFunctionSymbol(); Term parameter = function.getTerm(0); if (function.isDataTypeFunction()) { if (isXsdString(predicate) ) { // R: was datatype.equals(OBDAVocabulary.RDFS_LITERAL_URI) return termFactory.getTypedTerm( termFactory.getVariable(parameter.toString()), typeFactory.getXsdStringDatatype()); } else { return termFactory.getTypedTerm( termFactory.getFunctionCast(termFactory.getVariable(parameter.toString()), termFactory.getConstantLiteral(typeFactory.getXsdStringDatatype().getIRI().getIRIString())), typeFactory.getXsdStringDatatype()); } } else if (predicate instanceof URITemplatePredicate) { return termFactory.getTypedTerm(function.clone(), typeFactory.getXsdStringDatatype()); } else if (predicate instanceof BNodePredicate) { return valueNull; } } return term; }
switch (COL_TYPE.getColType(constant.getType().getIRI())) { case BNODE: case OBJECT:
obm.setDatatype(objectDatatype.getIRI());