- Collection<Resource> objects = graph.getObjects(r, L0.IsOwnedBy);
- // FIXME:
- // TODO: getObjects returns duplicate entries (https://www.simantics.org/redmine/issues/4885) and therefore direct is Set<Resource>. Fix getObjects to not return duplicate entries
- if (objects.size() > 1) objects = new HashSet<Resource>(objects);
-
- if (objects.size() == 1)
- direct.addAll(objects);
- else if (objects.isEmpty()) {
- for(Statement stm : graph.getStatements(r, L0.IsWeaklyRelatedTo)) {
- Resource inverse = graph.getPossibleInverse(stm.getPredicate());
- if(inverse != null) {
- if(graph.isSubrelationOf(inverse, L0.IsRelatedTo)) {
- // Filter away tags
- if(!r.equals(stm.getObject()))
- owners.add(stm.getObject());
- }
+ // If there are no owners, collect resources referring to this resource by IsRelatedTo
+ for(Statement statement : graph.getStatements(resource, L0.IsWeaklyRelatedTo)) {
+ Resource inverse = graph.getPossibleInverse(statement.getPredicate());
+ if(inverse != null) {
+ if(graph.isSubrelationOf(inverse, L0.IsRelatedTo)) {
+ // Filter away tags
+ if(resource.equals(statement.getObject()))
+ continue;
+ owners.add(statement.getObject());