- g.claimValue(valueResource, value);
- //g.claimLiteral(destination, s.getPredicate(), value);
+ } else if (g.isInstanceOf(s.getObject(), l0.SCLValue)) {
+ Resource valueResource = g.newResource();
+ g.claim(valueResource, l0.InstanceOf, g.getSingleObject(s.getObject(), l0.InstanceOf));
+ g.claim(destination, s.getPredicate(), valueResource);
+ copyProperties(g, s.getObject(), valueResource);
+ } else {
+ Resource type = g.getPossibleType(s.getObject(), l0.Value);
+ if (type != null && g.hasStatement(type, l0.Enumeration, type)) {
+ g.deny(destination, s.getPredicate());
+ g.claim(destination, s.getPredicate(), s.getObject());
+ } else {
+ throw new DatabaseException("Expected to copy property resource " + s.getObject());
+ }
+ }
+ }
+ }
+
+ public static void copyTags(WriteGraph g, Resource source, Resource destination) throws DatabaseException {
+ Layer0 L0 = Layer0.getInstance(g);
+ for (Statement s : g.getStatements(source, L0.IsWeaklyRelatedTo)) {
+ if (s.getObject().equals(source)) {
+ g.claim(destination, s.getPredicate(), destination);