@Override public List<KBHandle> list(KnowledgeBase aKB, IRI aType, boolean aIncludeInferred, boolean aAll, int aLimit) throws QueryEvaluationException { Set<KBHandle> labels = getSubPropertyLabels(aKB); List<KBHandle> resultList = read(aKB, (conn) -> { String QUERY = SPARQLQueryStore.listInstances(aKB, labels); TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, QUERY); tupleQuery.setBinding("pTYPE", aKB.getTypeIri()); tupleQuery.setBinding("oPROPERTY", aType); tupleQuery.setBinding("pLABEL", aKB.getLabelIri()); tupleQuery.setBinding("pDESCRIPTION", aKB.getDescriptionIri()); tupleQuery.setBinding("pSUBPROPERTY", aKB.getSubPropertyIri()); tupleQuery.setIncludeInferred(aIncludeInferred); return evaluateListQuery(aKB, tupleQuery, aAll, "s"); }); resultList.sort(Comparator.comparing(KBObject::getUiLabel)); return resultList; }
@Override public List<KBHandle> listProperties(KnowledgeBase aKB, IRI aType, boolean aIncludeInferred, boolean aAll) throws QueryEvaluationException { Set<KBHandle> labels = getSubPropertyLabels(aKB); List<KBHandle> resultList = read(aKB, (conn) -> { String QUERY = SPARQLQueryStore.queryForPropertyList(aKB, labels); TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, QUERY); tupleQuery.setBinding("pTYPE", aKB.getTypeIri()); tupleQuery.setBinding("oPROPERTY", aType); tupleQuery.setBinding("pLABEL", aKB.getPropertyLabelIri()); tupleQuery.setBinding("pDESCRIPTION", aKB.getPropertyDescriptionIri()); tupleQuery.setBinding("pSUBPROPERTY", aKB.getSubPropertyIri()); tupleQuery.setIncludeInferred(aIncludeInferred); return evaluateListQuery(aKB, tupleQuery, aAll, "s"); }); resultList.sort(Comparator.comparing(KBObject::getUiLabel)); return resultList; }
@Override public List<KBHandle> listAllConcepts(KnowledgeBase aKB, boolean aAll) throws QueryEvaluationException { Set<KBHandle> labels = getSubPropertyLabels(aKB); List<KBHandle> resultList; resultList = read(aKB, (conn) -> { String QUERY = SPARQLQueryStore.queryForAllConceptList(aKB, labels); TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, QUERY); tupleQuery.setBinding("pTYPE", aKB.getTypeIri()); tupleQuery.setBinding("oCLASS", aKB.getClassIri()); tupleQuery.setBinding("pSUBCLASS", aKB.getSubclassIri()); tupleQuery.setBinding("pLABEL", aKB.getLabelIri()); tupleQuery.setBinding("pDESCRIPTION", aKB.getDescriptionIri()); tupleQuery.setBinding("pSUBPROPERTY", aKB.getSubPropertyIri()); tupleQuery.setIncludeInferred(false); return evaluateListQuery(aKB, tupleQuery, aAll, "s"); }); resultList.sort(Comparator.comparing(KBObject::getUiLabel)); return resultList; }
@Override public List<KBHandle> list(KnowledgeBase aKB, IRI aType, boolean aIncludeInferred, boolean aAll, int aLimit) throws QueryEvaluationException { Set<KBHandle> labels = getSubPropertyLabels(aKB); List<KBHandle> resultList = read(aKB, (conn) -> { String QUERY = SPARQLQueryStore.listInstances(aKB, labels); TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, QUERY); tupleQuery.setBinding("pTYPE", aKB.getTypeIri()); tupleQuery.setBinding("oPROPERTY", aType); tupleQuery.setBinding("pLABEL", aKB.getLabelIri()); tupleQuery.setBinding("pDESCRIPTION", aKB.getDescriptionIri()); tupleQuery.setBinding("pSUBPROPERTY", aKB.getSubPropertyIri()); tupleQuery.setIncludeInferred(aIncludeInferred); return evaluateListQuery(aKB, tupleQuery, aAll, "s"); }); resultList.sort(Comparator.comparing(KBObject::getUiLabel)); return resultList; }
@Override public List<KBHandle> listAllConcepts(KnowledgeBase aKB, boolean aAll) throws QueryEvaluationException { Set<KBHandle> labels = getSubPropertyLabels(aKB); List<KBHandle> resultList; resultList = read(aKB, (conn) -> { String QUERY = SPARQLQueryStore.queryForAllConceptList(aKB, labels); TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, QUERY); tupleQuery.setBinding("pTYPE", aKB.getTypeIri()); tupleQuery.setBinding("oCLASS", aKB.getClassIri()); tupleQuery.setBinding("pSUBCLASS", aKB.getSubclassIri()); tupleQuery.setBinding("pLABEL", aKB.getLabelIri()); tupleQuery.setBinding("pDESCRIPTION", aKB.getDescriptionIri()); tupleQuery.setBinding("pSUBPROPERTY", aKB.getSubPropertyIri()); tupleQuery.setIncludeInferred(false); return evaluateListQuery(aKB, tupleQuery, aAll, "s"); }); resultList.sort(Comparator.comparing(KBObject::getUiLabel)); return resultList; }
@Override public List<KBHandle> listProperties(KnowledgeBase aKB, boolean aIncludeInferred, boolean aAll) throws QueryEvaluationException { Set<KBHandle> labels = getSubPropertyLabels(aKB); List<KBHandle> resultList = read(aKB, (conn) -> { String QUERY = SPARQLQueryStore.queryForPropertyList(aKB, labels); TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, QUERY); tupleQuery.setBinding("pTYPE", aKB.getTypeIri()); tupleQuery.setBinding("oPROPERTY", aKB.getPropertyTypeIri()); tupleQuery.setBinding("pLABEL", aKB.getPropertyLabelIri()); tupleQuery.setBinding("pDESCRIPTION", aKB.getDescriptionIri()); tupleQuery.setBinding("pSUBPROPERTY", aKB.getSubPropertyIri()); tupleQuery.setIncludeInferred(aIncludeInferred); return evaluateListQuery(aKB, tupleQuery, aAll, "s"); }); resultList.sort(Comparator.comparing(KBObject::getUiLabel)); return resultList; }
@Override public List<KBHandle> listProperties(KnowledgeBase aKB, IRI aType, boolean aIncludeInferred, boolean aAll) throws QueryEvaluationException { Set<KBHandle> labels = getSubPropertyLabels(aKB); List<KBHandle> resultList = read(aKB, (conn) -> { String QUERY = SPARQLQueryStore.queryForPropertyList(aKB, labels); TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, QUERY); tupleQuery.setBinding("pTYPE", aKB.getTypeIri()); tupleQuery.setBinding("oPROPERTY", aType); tupleQuery.setBinding("pLABEL", aKB.getPropertyLabelIri()); tupleQuery.setBinding("pDESCRIPTION", aKB.getPropertyDescriptionIri()); tupleQuery.setBinding("pSUBPROPERTY", aKB.getSubPropertyIri()); tupleQuery.setIncludeInferred(aIncludeInferred); return evaluateListQuery(aKB, tupleQuery, aAll, "s"); }); resultList.sort(Comparator.comparing(KBObject::getUiLabel)); return resultList; }
private Optional<KBHandle> readLabelsWithoutLanguage(KnowledgeBase aKB, boolean aAll, String aIdentifier, boolean getLabel, boolean getDescription) throws QueryEvaluationException { Optional<KBHandle> handle = read(aKB, (conn) -> { String QUERY = SPARQLQueryStore.readLabelWithoutLanguage(aKB, 1, getLabel, getDescription); ValueFactory vf = SimpleValueFactory.getInstance(); TupleQuery tupleQueryLabel = conn.prepareTupleQuery(QueryLanguage.SPARQL, QUERY); tupleQueryLabel.setBinding("oItem", vf.createIRI(aIdentifier)); tupleQueryLabel.setBinding("pTYPE", aKB.getTypeIri()); tupleQueryLabel.setBinding("oCLASS", aKB.getClassIri()); tupleQueryLabel.setBinding("pSUBCLASS", aKB.getSubclassIri()); tupleQueryLabel.setBinding("pLABEL", aKB.getLabelIri()); tupleQueryLabel.setBinding("pDESCRIPTION", aKB.getDescriptionIri()); tupleQueryLabel.setIncludeInferred(false); return evaluateGenericLabelQuery(aKB, tupleQueryLabel, aAll, "oItem"); }); return handle; }
@Override public List<KBHandle> getConceptForInstance(KnowledgeBase aKB, String aIdentifier, boolean aAll) throws QueryEvaluationException { List<KBHandle> resultList = read(aKB, (conn) -> { String QUERY = SPARQLQueryStore.queryForConceptForInstance(aKB); ValueFactory vf = SimpleValueFactory.getInstance(); TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, QUERY); tupleQuery.setBinding("pTYPE", aKB.getTypeIri()); tupleQuery.setBinding("pInstance", vf.createIRI(aIdentifier)); tupleQuery.setBinding("pLABEL", aKB.getLabelIri()); tupleQuery.setBinding("pDESCRIPTION", aKB.getDescriptionIri()); tupleQuery.setBinding("pSUBPROPERTY", aKB.getSubPropertyIri()); tupleQuery.setIncludeInferred(true); return evaluateListQuery(aKB, tupleQuery, aAll, "s"); }); resultList.sort(Comparator.comparing(KBObject::getUiLabel)); return resultList; }
private Optional<KBHandle> readLabelsWithoutLanguage(KnowledgeBase aKB, boolean aAll, String aIdentifier, boolean getLabel, boolean getDescription) throws QueryEvaluationException { Optional<KBHandle> handle = read(aKB, (conn) -> { String QUERY = SPARQLQueryStore.readLabelWithoutLanguage(aKB, 1, getLabel, getDescription); ValueFactory vf = SimpleValueFactory.getInstance(); TupleQuery tupleQueryLabel = conn.prepareTupleQuery(QueryLanguage.SPARQL, QUERY); tupleQueryLabel.setBinding("oItem", vf.createIRI(aIdentifier)); tupleQueryLabel.setBinding("pTYPE", aKB.getTypeIri()); tupleQueryLabel.setBinding("oCLASS", aKB.getClassIri()); tupleQueryLabel.setBinding("pSUBCLASS", aKB.getSubclassIri()); tupleQueryLabel.setBinding("pLABEL", aKB.getLabelIri()); tupleQueryLabel.setBinding("pDESCRIPTION", aKB.getDescriptionIri()); tupleQueryLabel.setIncludeInferred(false); return evaluateGenericLabelQuery(aKB, tupleQueryLabel, aAll, "oItem"); }); return handle; }
@Override public List<KBHandle> getConceptForInstance(KnowledgeBase aKB, String aIdentifier, boolean aAll) throws QueryEvaluationException { List<KBHandle> resultList = read(aKB, (conn) -> { String QUERY = SPARQLQueryStore.queryForConceptForInstance(aKB); ValueFactory vf = SimpleValueFactory.getInstance(); TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, QUERY); tupleQuery.setBinding("pTYPE", aKB.getTypeIri()); tupleQuery.setBinding("pInstance", vf.createIRI(aIdentifier)); tupleQuery.setBinding("pLABEL", aKB.getLabelIri()); tupleQuery.setBinding("pDESCRIPTION", aKB.getDescriptionIri()); tupleQuery.setBinding("pSUBPROPERTY", aKB.getSubPropertyIri()); tupleQuery.setIncludeInferred(true); return evaluateListQuery(aKB, tupleQuery, aAll, "s"); }); resultList.sort(Comparator.comparing(KBObject::getUiLabel)); return resultList; }
@Override public List<KBHandle> listProperties(KnowledgeBase aKB, boolean aIncludeInferred, boolean aAll) throws QueryEvaluationException { Set<KBHandle> labels = getSubPropertyLabels(aKB); List<KBHandle> resultList = read(aKB, (conn) -> { String QUERY = SPARQLQueryStore.queryForPropertyList(aKB, labels); TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, QUERY); tupleQuery.setBinding("pTYPE", aKB.getTypeIri()); tupleQuery.setBinding("oPROPERTY", aKB.getPropertyTypeIri()); tupleQuery.setBinding("pLABEL", aKB.getPropertyLabelIri()); tupleQuery.setBinding("pDESCRIPTION", aKB.getDescriptionIri()); tupleQuery.setBinding("pSUBPROPERTY", aKB.getSubPropertyIri()); tupleQuery.setIncludeInferred(aIncludeInferred); return evaluateListQuery(aKB, tupleQuery, aAll, "s"); }); resultList.sort(Comparator.comparing(KBObject::getUiLabel)); return resultList; }
@Override public List<KBHandle> listDomainProperties(KnowledgeBase aKB, String aDomain, boolean aIncludeInferred, boolean aAll) throws QueryEvaluationException { Set<KBHandle> labels = getSubPropertyLabels(aKB); List<KBHandle> resultList = read(aKB, (conn) -> { ValueFactory vf = conn.getValueFactory(); String QUERY = SPARQLQueryStore.queryForPropertyListWithDomain(aKB, labels); TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, QUERY); tupleQuery.setBinding("aDomain", vf.createIRI(aDomain)); tupleQuery.setBinding("pLABEL", aKB.getLabelIri()); tupleQuery.setBinding("pDESCRIPTION", aKB.getPropertyDescriptionIri()); tupleQuery.setBinding("pSUBPROPERTY", aKB.getSubPropertyIri()); tupleQuery.setIncludeInferred(aIncludeInferred); return evaluateListQuery(aKB, tupleQuery, aAll, "s"); }); // Sorting is not done as part of SPARQL queries as it will be more expensive on // SPARQL with sorting the whole data and then setting a limit for the number of // result data set and hence will also skip number of results as part of sorted // data from SPARQL resultList.sort(Comparator.comparing(KBObject::getUiLabel)); return resultList; }
public List<KBHandle> getSubProperty(KnowledgeBase aKB, String aIdentifier, boolean aAll) throws QueryEvaluationException { List<KBHandle> resultList = read(aKB, (conn) -> { ValueFactory vf = conn.getValueFactory(); String QUERY = SPARQLQueryStore.getSubProperty(aKB); TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, QUERY); tupleQuery.setBinding("oItem", vf.createIRI(aIdentifier)); tupleQuery.setBinding("pSUBPROPERTY", aKB.getSubPropertyIri()); tupleQuery.setIncludeInferred(true); return evaluateListQuery(aKB, tupleQuery, aAll, "s"); }); resultList.sort(Comparator.comparing(KBObject::getUiLabel)); return resultList; }
public List<KBHandle> getSubProperty(KnowledgeBase aKB, String aIdentifier, boolean aAll) throws QueryEvaluationException { List<KBHandle> resultList = read(aKB, (conn) -> { ValueFactory vf = conn.getValueFactory(); String QUERY = SPARQLQueryStore.getSubProperty(aKB); TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, QUERY); tupleQuery.setBinding("oItem", vf.createIRI(aIdentifier)); tupleQuery.setBinding("pSUBPROPERTY", aKB.getSubPropertyIri()); tupleQuery.setIncludeInferred(true); return evaluateListQuery(aKB, tupleQuery, aAll, "s"); }); resultList.sort(Comparator.comparing(KBObject::getUiLabel)); return resultList; }
@Override public List<KBHandle> listPropertiesRangeValue(KnowledgeBase aKB, String aProperty, boolean aIncludeInferred, boolean aAll) throws QueryEvaluationException { List<KBHandle> resultList = read(aKB, (conn) -> { ValueFactory vf = conn.getValueFactory(); String QUERY = SPARQLQueryStore.queryForPropertySpecificRange(aKB); TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, QUERY); tupleQuery.setBinding("aProperty", vf.createIRI(aProperty)); tupleQuery.setBinding("pLABEL", aKB.getPropertyLabelIri()); tupleQuery.setBinding("pSUBPROPERTY", aKB.getSubPropertyIri()); tupleQuery.setIncludeInferred(aIncludeInferred); return evaluateListQuery(aKB, tupleQuery, aAll, "s"); }); List<KBHandle> resultLabelList = readLabelsWithoutLanguage(aKB, aAll, resultList); resultLabelList.sort(Comparator.comparing(KBObject::getUiLabel)); return resultLabelList; }
@Override public List<KBHandle> listPropertiesRangeValue(KnowledgeBase aKB, String aProperty, boolean aIncludeInferred, boolean aAll) throws QueryEvaluationException { List<KBHandle> resultList = read(aKB, (conn) -> { ValueFactory vf = conn.getValueFactory(); String QUERY = SPARQLQueryStore.queryForPropertySpecificRange(aKB); TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, QUERY); tupleQuery.setBinding("aProperty", vf.createIRI(aProperty)); tupleQuery.setBinding("pLABEL", aKB.getPropertyLabelIri()); tupleQuery.setBinding("pSUBPROPERTY", aKB.getSubPropertyIri()); tupleQuery.setIncludeInferred(aIncludeInferred); return evaluateListQuery(aKB, tupleQuery, aAll, "s"); }); List<KBHandle> resultLabelList = readLabelsWithoutLanguage(aKB, aAll, resultList); resultLabelList.sort(Comparator.comparing(KBObject::getUiLabel)); return resultLabelList; }
@Override public boolean statementsMatchSPO(KnowledgeBase akb, KBStatement mockStatement) { try (RepositoryConnection conn = kbService.getConnection(akb)) { ValueFactory vf = conn.getValueFactory(); String QUERY = "SELECT * WHERE { ?s ?p ?o . }"; TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, QUERY); tupleQuery.setBinding("s", vf.createIRI(mockStatement.getInstance().getIdentifier())); tupleQuery.setBinding("p", vf.createIRI(mockStatement.getProperty().getIdentifier())); InceptionValueMapper mapper = new InceptionValueMapper(); tupleQuery.setBinding("o", mapper.mapStatementValue(mockStatement, vf)); try (TupleQueryResult result = tupleQuery.evaluate()) { return result.hasNext(); } } }
@Override public boolean statementsMatchSPO(KnowledgeBase akb, KBStatement mockStatement) { try (RepositoryConnection conn = kbService.getConnection(akb)) { ValueFactory vf = conn.getValueFactory(); String QUERY = "SELECT * WHERE { ?s ?p ?o . }"; TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, QUERY); tupleQuery.setBinding("s", vf.createIRI(mockStatement.getInstance().getIdentifier())); tupleQuery.setBinding("p", vf.createIRI(mockStatement.getProperty().getIdentifier())); InceptionValueMapper mapper = new InceptionValueMapper(); tupleQuery.setBinding("o", mapper.mapStatementValue(mockStatement, vf)); try (TupleQueryResult result = tupleQuery.evaluate()) { return result.hasNext(); } } }
/** * Parametric Queries */ @Test public void example14() throws Exception { Map<String, Stmt> inputs = example2setup(); ValueFactory f = conn.getValueFactory(); conn.setAutoCommit(false); IRI alice = f.createIRI("http://example.org/people/alice"); IRI bob = f.createIRI("http://example.org/people/bob"); String queryString = "select ?s ?p ?o where { ?s ?p ?o} "; TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString); tupleQuery.setBinding("s", alice); assertSetsEqual("Facts about Alice", mapKeep(new String[] {"an", "at"}, inputs).values(), statementSet(tupleQuery.evaluate())); tupleQuery.setBinding("s", bob); assertSetsEqual("Facts about Bob", mapKeep(new String[] {"bn", "bt"}, inputs).values(), statementSet(tupleQuery.evaluate())); }