public String getLocalName() { Resource mr = getJenaResource(); return mr.getLocalName(); }
protected JenaResourceItem makeItemOfMyJClazz(Resource res) { return new JenaResourceItem(res); }
@Override public int hashCode() { // Blank-nodes do not have an absUriString String uriString = getAbsUriString(); if (uriString != null) { return getAbsUriString().hashCode(); } else { return myResource.hashCode(); } }
@Override protected List<Item> getLinkedItems(Ident linkName, LinkDirection linkDir) { List<RDFNode> linkedNodes; linkedNodes = getPropertyValues(linkName, linkDir); List<Item> results = new ArrayList<Item>(); for (RDFNode rn : linkedNodes) { Resource res = rn.asResource(); JenaResourceItem jri = makeItemOfMyJClazz(res); // new JenaResourceItem(res); results.add(jri); } return results; }
public Map<Property, List<RDFNode>> getPropertyMap() { Model model = getModel(); if (model == null) { throw new RuntimeException("This item is not connected to a model: " + this.toString()); } Map<Property, List<RDFNode>> properties = new HashMap<Property, List<RDFNode>>(); StmtIterator iter = model.listStatements(); Resource meRes = getJenaResource(); // TODO this is slow while (iter.hasNext()) { Statement stmt = iter.nextStatement(); // get next statement Resource subject = stmt.getSubject(); // get the subject if (subject.equals(meRes)) { Property predicate = stmt.getPredicate(); // get the predicate List<RDFNode> results = properties.get(predicate); if (results == null) { results = new ArrayList<RDFNode>(); properties.put(predicate, results); } RDFNode object = stmt.getObject(); // get the object results.add(object); } } return properties; }
/** * If there *is* no model, then we return another resource that has no model. * @param absURI * @return */ @Override public Ident getIdentInSameModel(String absURI) { Model m = getModel(); Resource createdRes = null; if (m != null) { createdRes = m.createResource(absURI); } else { createdRes = ResourceFactory.createResource(absURI); } JenaResourceItem itemInSameJClazz = makeItemOfMyJClazz(createdRes); return itemInSameJClazz; }
@Override public List<Item> getLinkedOrderedList(Ident linkName) { List<Item> results = new ArrayList<Item>(); RDFNode resultNode = getSinglePropertyVal(linkName, false); if (resultNode != null) { RDFList rdfList = resultNode.as(RDFList.class); //System.out.println("Found rdfList[" + linkName + "] = " + rdfList); if (rdfList != null) { List<RDFNode> javaNodeList = rdfList.asJavaList(); // System.out.println("JavaNodeList = " + javaNodeList); for (RDFNode elementNode : javaNodeList) { Resource res = elementNode.asResource(); JenaResourceItem jri = makeItemOfMyJClazz(res); // new JenaResourceItem(res); results.add(jri); } } } return results; } public Resource getJenaResource() {
protected RDFNode getSinglePropertyVal(Ident fieldID, boolean throwOnFailure) { List<RDFNode> nodes = getPropertyValues(fieldID, Item.LinkDirection.FORWARD); int nodeListSize = nodes.size(); if (nodeListSize == 1) { return nodes.get(0); } else if (throwOnFailure) { throw new RuntimeException("Got " + nodeListSize + " nodes instead of expected 1 for " + fieldID); } else { return null; } }
@Override protected Literal getLiteralVal(Ident fieldID, boolean throwOnFailure) { Literal resultLit = null; RDFNode resultNode = getSinglePropertyVal(fieldID, throwOnFailure); if (resultNode != null) { resultLit = resultNode.asLiteral(); } return resultLit; }
protected List<RDFNode> getPropertyValues(Ident fieldID, LinkDirection linkDir) { List<RDFNode> results = new ArrayList<RDFNode>(); Model model = getModel(); if (model == null) { throw new RuntimeException("This item is not connected to a model: " + this.toString()); Resource meRes = getJenaResource(); if (fieldID instanceof JenaResourceItem) { fieldPropertyRes = ((JenaResourceItem) fieldID).getJenaResource(); } else { String fieldPropURI = fieldID.getAbsUriString();
public String getAbsUriString() { Resource mr = getJenaResource(); return mr.getURI(); }
/** * We attempt to compare based on the absUriString. * @param o * @return */ @Override public boolean equals(Object o) { if ((o != null) && (o instanceof Ident)) { String absUri = getAbsUriString(); if (absUri != null) { String otherAbsUri = ((Ident) o).getAbsUriString(); return getAbsUriString().equals(otherAbsUri); } else { if (o instanceof JenaResourceItem) { myResource.equals(((JenaResourceItem) o).myResource); } } } return false; }
@Override protected List<Item> getLinkedItems(Ident linkName, LinkDirection linkDir) { if (linkDir != LinkDirection.FORWARD) { // Should we define a new "direction" for query results? throw new UnsupportedOperationException("Only FORWARD link direction is supported for ArqRowItem"); } List<Item> result = new ArrayList<Item>(); String varName = linkName.getLocalName(); Resource r1 = mySolutionCopy.getResource(varName); if (r1 != null) { Item resultItem = new JenaResourceItem(r1); result.add(resultItem); } return result; }
public Model getModel() { return getJenaResource().getModel(); }
@Override public String toKey(Object toBecomeAString) { if (toBecomeAString instanceof JenaResourceItem) { toBecomeAString = ((JenaResourceItem) toBecomeAString).getJenaResource(); } RDFNode rdfnode = null; Model model = getModel(toBecomeAString); offerModel(model); Object literalOrNode_URI = JenaLiteralUtils.cvtToString(toBecomeAString, model); String str = "" + literalOrNode_URI; if (false) { Object r = fromKey(str, RDFNode.class); if (!(r instanceof RDFNode)) { str = "" + literalOrNode_URI; } } if (str.startsWith("http") || str.startsWith("urn:") || str.contains(":")) { return str; } return str; }