private static int COLTYPEtoInt(ObjectRDFType t) { return t.isBlankNode() ? OBJ_TYPE_BNode : OBJ_TYPE_URI; }
iriTermType = new IRITermType(objectRDFType.getAncestry()); blankNodeTermType = new BlankNodeTermType(objectRDFType.getAncestry());
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(); }
private void initObjectProperty(ObjectRDFType type1, ObjectRDFType type2) { String value1 = type1.isBlankNode() ? "TRUE" : "FALSE"; String value2 = type2.isBlankNode() ? "TRUE" : "FALSE"; String filter = "ISBNODE = " + value1 + " AND "; RDBMSSIRepositoryManager.TableDescription tableDescription = RDBMSSIRepositoryManager.ROLE_TABLE; String select = tableDescription.getSELECT(filter + "ISBNODE2 = " + value2 + " AND "); String insert = tableDescription.getINSERT("?, ?, ?, " + value1 + ", " + value2); createViews(type1, type2, select, insert); }
private ImmutableList<TargetAtom> constructTargetQuery(ImmutableFunctionalTerm classTerm, ObjectRDFType type) { Variable X = termFactory.getVariable("X"); ImmutableFunctionalTerm subjectTerm; if (!type.isBlankNode()) subjectTerm = termFactory.getImmutableUriTemplate(X); else { subjectTerm = termFactory.getImmutableBNodeTemplate(X); } ImmutableTerm predTerm = termFactory.getImmutableUriTemplate(termFactory.getConstantLiteral( org.eclipse.rdf4j.model.vocabulary.RDF.TYPE.toString())); TargetAtom targetAtom = targetAtomFactory.getTripleTargetAtom(subjectTerm, predTerm ,classTerm); return ImmutableList.of(targetAtom); }
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); }
private ImmutableList<TargetAtom> constructTargetQuery(ImmutableFunctionalTerm iriTerm, ObjectRDFType type1, RDFTermType type2) { Variable X = termFactory.getVariable("X"); Variable Y = termFactory.getVariable("Y"); ImmutableFunctionalTerm subjectTerm; if (!type1.isBlankNode()) subjectTerm = termFactory.getImmutableUriTemplate(X); else { subjectTerm = termFactory.getImmutableBNodeTemplate(X); } ImmutableFunctionalTerm objectTerm; if (type2 instanceof ObjectRDFType) { objectTerm = ((ObjectRDFType)type2).isBlankNode() ? termFactory.getImmutableBNodeTemplate(Y) : termFactory.getImmutableUriTemplate(Y); } else { RDFDatatype datatype = (RDFDatatype) type2; if (datatype.getLanguageTag().isPresent()) { LanguageTag languageTag = datatype.getLanguageTag().get(); objectTerm = termFactory.getImmutableTypedTerm(Y, languageTag.getFullString()); } else { objectTerm = termFactory.getImmutableTypedTerm(Y, datatype); } } TargetAtom targetAtom = targetAtomFactory.getTripleTargetAtom(subjectTerm,iriTerm,objectTerm); return ImmutableList.of(targetAtom); }
private final void init() { ImmutableList<ObjectRDFType> objectTypes = ImmutableList.of(typeFactory.getIRITermType(), typeFactory.getBlankNodeType()); IRI[] datatypeIRIs = { XSD.BOOLEAN, XSD.DATETIME, XSD.DATETIMESTAMP, XSD.DECIMAL, XSD.DOUBLE, XSD.INTEGER, XSD.INT, XSD.UNSIGNED_INT, XSD.NEGATIVE_INTEGER, XSD.NON_NEGATIVE_INTEGER, XSD.POSITIVE_INTEGER, XSD.NON_POSITIVE_INTEGER, XSD.FLOAT, XSD.LONG, XSD.STRING }; for (ObjectRDFType type1 : objectTypes) { String value = type1.isBlankNode() ? "TRUE" : "FALSE"; String filter = "ISBNODE = " + value + " AND "; { String select = RDBMSSIRepositoryManager.classTable.getSELECT(filter); String insert = RDBMSSIRepositoryManager.classTable.getINSERT("?, ?, " + value); SemanticIndexViewID viewId = new SemanticIndexViewID(type1); SemanticIndexView view = new SemanticIndexView(viewId, select, insert); views.put(view.getId(), view); classViews.add(view); } for (ObjectRDFType type2 : objectTypes) { initObjectProperty(type1, type2); } for (IRI iriType2 : datatypeIRIs) { initDataProperty(type1, typeFactory.getDatatype(iriType2)); } } }