/** * Uses the public API to clone the state of this instance to the instance provided as parameter. * * @param <C> * An implementation of the FieldQuery interface * @param copyTo * An instance to copy the state of this on. * @return The parsed instance */ public <C extends FieldQuery> C copyTo(C copyTo) { copyTo.removeAllConstraints(); copyTo.removeAllSelectedFields(); for (Entry<String,Constraint> entry : queryConstraint.entrySet()) { // we need not to copy keys or values, because everything is // immutable copyTo.setConstraint(entry.getKey(), entry.getValue()); } copyTo.addSelectedFields(selected); copyTo.setLimit(limit); copyTo.setOffset(offset); return copyTo; }
query.addSelectedField(field); } else { if(!includeFields.contains(field)){ query.addSelectedField(field); query.addSelectedField(select); query.setLimit(20);//TODO make configurable query.setConstraint(field, new TextConstraint(search, languages)); return query;
@Override public boolean equals(Object obj) { if (obj instanceof FieldQuery && ((FieldQuery) obj).getConstraints().equals(getConstraints()) && ((FieldQuery) obj).getSelectedFields().equals(getSelectedFields()) && ((FieldQuery) obj).getOffset() == getOffset()) { if (limit != null) { return limit.equals(((FieldQuery) obj).getLimit()); } else { return ((FieldQuery) obj).getLimit() == null; } } else { return false; } }
@Test public void testFindTextWildcards(){ //init the test data FieldQueryTestData data = getFieldQueryTestData(); //prefix search with * FieldQuery query = getYard().getQueryFactory().createFieldQuery(); String wildcard = data.textValue1.getText(); wildcard = wildcard.substring(0, wildcard.length()-1) + "*"; query.setConstraint(data.textField, new TextConstraint(wildcard,PatternType.wildcard,false, "en")); query.addSelectedField(data.refField); query.addSelectedField(data.textField); validateQueryResults(query, getYard().find(query), Arrays.asList(data.r1en.getId(), data.r2en.getId()), Arrays.asList(data.refField, data.textField)); //wildcard with ? query = getYard().getQueryFactory().createFieldQuery(); //selects r1en and r2en wildcard = data.textValue1.getText(); wildcard = wildcard.substring(0, wildcard.length()-1) + "?"; query.setConstraint(data.textField, new TextConstraint(wildcard,PatternType.wildcard,false, "de")); query.addSelectedField(data.refField); query.addSelectedField(data.textField); validateQueryResults(query, getYard().find(query), Arrays.asList(data.r1de.getId(), data.r2de.getId()), Arrays.asList(data.refField, data.textField)); }
private void deleteEntities(Collection<String> ids) throws YardException { FieldQuery fieldQuery = getQueryFactory().createFieldQuery(); Collection<String> toDelete = new HashSet<String>(ids); for(String id : ids){ if(id != null && !id.isEmpty()){ fieldQuery.setConstraint(RdfResourceEnum.aboutRepresentation.getUri(), new ReferenceConstraint(id)); for(Iterator<String> it = entityhubYard.findReferences(fieldQuery).iterator();it.hasNext();){ toDelete.add(it.next()); } } } if(!toDelete.isEmpty()){ entityhubYard.remove(toDelete); } }
parsingError = true; continue; }else if(query.isConstrained(fieldUri)){ parsingErrorMessages.append('\n'); parsingErrorMessages.append("The parsed Query defines multiple constraints fr the field '").append(fieldUri).append("'!\n"); } else { try { query.setConstraint(fieldUri, parseConstraint(jConstraint,nsPrefixService)); } catch (IllegalArgumentException e) { parsingErrorMessages.append('\n'); selectedField = nsPrefixService.getFullName(selectedField); if(selectedField != null && !selectedField.isEmpty()){ query.addSelectedField(selectedField); query.setLimit(jQuery.getInt("limit")); } catch (JSONException e) { parsingErrorMessages.append('\n'); query.setOffset(jQuery.getInt("offset")); } catch (JSONException e) { parsingErrorMessages.append('\n');
Collection<String> selectedFields = new ArrayList<String>(); query.addSelectedFields(selectedFields); query.setConstraint(field, new TextConstraint(name, PatternType.wildcard, false)); } else { query.setConstraint(field, new TextConstraint(name, PatternType.wildcard, false, language)); query.setLimit(limit); query.setOffset(offset);
protected QueryResultList<Entity> query(Site dbpediaSite, String savedEntityLabel, String language, String extractionContext) throws SiteException { FieldQuery query = dbpediaSite.getQueryFactory().createFieldQuery(); if (savedEntityLabel != null && !savedEntityLabel.isEmpty()) { Constraint labelConstraint; if (language != null) { labelConstraint = new TextConstraint(savedEntityLabel, false, language, null); } else { labelConstraint = new TextConstraint(savedEntityLabel, false); } // TODO: what happens if a recommendation was not based on rdfs:label? query.setConstraint(RDFS_LABEL.getUnicodeString(), labelConstraint); } else { log.warn("parsed label {} was empty or NULL. Will use Similarity constraint only!", savedEntityLabel); } query.setConstraint(SpecialFieldEnum.fullText.getUri(), new SimilarityConstraint(extractionContext)); query.setLimit(25); return dbpediaSite.findEntities(query); }
FieldQuery query = createQuery(); if(this.isURI(object)){ query.setConstraint(property.toString(), new ReferenceConstraint(object.toString())); } else if(object instanceof Text){ Text text = (Text)object; constraint = new TextConstraint(text.getText(), PatternType.none, true,text.getLanguage()); query.setConstraint(property.toString(), constraint); } else { Set<DataTypeEnum> dataTypes = DataTypeEnum.getPrimaryDataTypes(object.getClass()); if(dataTypes == null || dataTypes.isEmpty()){ query.setConstraint(property.toString(), new ValueConstraint(object)); } else { types.add(type.getUri()); query.setConstraint(property.toString(), new ValueConstraint(object,types)); query.setLimit(Integer.valueOf(DEFAULT_MAX_SELECT)); QueryResultList<String> results; try { query.setOffset(offset); try { results = query(query);
fieldQuery.removeAllConstraints(); for(Entry<String,Constraint> constraint : processedFieldConstraints.entrySet()){ fieldQuery.setConstraint(constraint.getKey(), constraint.getValue());
case ID: query.addField(fieldMapper.getDocumentIdField()); fieldQuery.removeAllSelectedFields(); break; case QUERY: if (fieldQuery.getSelectedFields().isEmpty()) { query.addField(fieldMapper.getDocumentIdField()); } else { fieldQuery.addSelectedField(RdfResourceEnum.resultScore.getUri());
private JSONObject reconcile(String siteId, ReconcileQuery rQuery) throws JSONException, EntityhubException { FieldQuery query = createFieldQuery(siteId); query.addSelectedFields(SELECTED_FIELDS); addNameConstraint(rQuery, query); addTypeConstraint(rQuery, query); addPropertyConstraints(rQuery, query); query.setLimit(query.getLimit()); QueryResultList<Representation> results = performQuery(siteId, query); List<JSONObject> jResultList = new ArrayList<JSONObject>(results.size());
@Override public final Set<String> getSelectedFields(){ return query.getSelectedFields(); } /* (non-Javadoc)
@Override public Collection<? extends Representation> lookup(String field, Set<String> includeFields, List<String> search, String... languages) throws IllegalStateException { //build the query and than return the result Site site = getSearchService(); if(site == null){ throw new IllegalStateException("ReferencedSite "+siteId+" is currently not available"); } FieldQuery query = EntitySearcherUtils.createFieldQuery(site.getQueryFactory(), field, includeFields, search, languages); if(limit != null){ query.setLimit(limit); } QueryResultList<Representation> results; try { results = site.find(query); } catch (SiteException e) { throw new IllegalStateException("Exception while searchign for "+ search+'@'+Arrays.toString(languages)+"in the ReferencedSite "+ site.getId(), e); } return results.results(); }
jQuery.put("selected", new JSONArray(query.getSelectedFields())); JSONArray constraints = new JSONArray(); jQuery.put("constraints", constraints); if(query.getLimit() != null){ jQuery.put("limit", query.getLimit()); jQuery.put("offset", query.getOffset());
private QueryResultList<Representation> find(final FieldQuery parsedQuery, SELECT select) throws YardException { FieldQuery fieldQuery = parsedQuery.clone(); log.debug("find " + fieldQuery); long start = System.currentTimeMillis(); if (select == SELECT.QUERY) { selected = new HashSet<String>(fieldQuery.getSelectedFields());
query.addSelectedFields(additionalSelectedFields); return executeQuery(query, headers, acceptedMediaType);
query.setConstraint(data.intField, new RangeConstraint(data.intValue2,data.intValue5, true)); query.setConstraint(data.refField, new ReferenceConstraint(data.refValue1.getReference())); query.addSelectedField(data.intField); query.addSelectedField(data.refField); validateQueryResults(query, getYard().find(query), Arrays.asList(data.r5.getId()), query.setConstraint(data.textField, new TextConstraint(wildcard,PatternType.wildcard,false, "en")); query.setConstraint(data.refField, new ReferenceConstraint(data.refValue1.getReference())); query.addSelectedField(data.refField); query.addSelectedField(data.textField); validateQueryResults(query, getYard().find(query), Arrays.asList(data.r1en.getId()), query.setConstraint(data.textField, new TextConstraint(wildcard,PatternType.wildcard,false, "de")); query.setConstraint(data.intField, new ValueConstraint(data.intValue2)); query.addSelectedField(data.refField); query.addSelectedField(data.textField); validateQueryResults(query, getYard().find(query), Arrays.asList(data.r2de.getId()),
private void deleteEntities(Collection<String> ids) throws YardException { FieldQuery fieldQuery = getQueryFactory().createFieldQuery(); Collection<String> toDelete = new HashSet<String>(ids); for(String id : ids){ if(id != null && !id.isEmpty()){ fieldQuery.setConstraint(RdfResourceEnum.aboutRepresentation.getUri(), new ReferenceConstraint(id)); for(Iterator<String> it = entityhubYard.findReferences(fieldQuery).iterator();it.hasNext();){ toDelete.add(it.next()); } } } if(!toDelete.isEmpty()){ entityhubYard.remove(toDelete); } }