final TripleCollection base) {
Set<Triple> resultSet = new HashSet<Triple>();
if (classCityFilter.accept(subject, base)) {
if (predicate.equals(weatherProperty)) {
BNode weatherNode = getWeatherNode(subject);
resultSet.add(new TripleImpl(subject, predicate, weatherNode));
}
} else {
NonLiteral city = null;
Collection<NonLiteral> obsoleteCities = new ArrayList<NonLiteral>();
for (Map.Entry<NonLiteral, WeakReference<BNode>> entry : cityWeatherMap.entrySet()) {
BNode node = entry.getValue().get();
if (node == null) {
obsoleteCities.add(entry.getKey());
}
if (node.equals(subject)) {
city = entry.getKey();
break;
}
}
for (NonLiteral nonLiteral : obsoleteCities) {
cityWeatherMap.remove(nonLiteral);
}
if (predicate.equals(temperatureProperty) || (predicate == null)) {
resultSet.add(new TripleImpl(subject,
temperatureProperty, LiteralFactory.getInstance().createTypedLiteral((double)city.toString().length())));
}
if (predicate.equals(humidityProperty) || (predicate == null)) {
resultSet.add(new TripleImpl(subject,
humidityProperty, LiteralFactory.getInstance().createTypedLiteral(0.51)));
}
}
return resultSet.iterator();
}