private void index() { try { InputStream res = this.getClass().getResourceAsStream("/dbpedia_3Eng_class.ttl"); Model model = ModelFactory.createDefaultModel(); model.read(res, "http://dbpedia.org/", "TTL"); StmtIterator stmts = model.listStatements(null, RDFS.label, (RDFNode) null); while (stmts.hasNext()) { final Statement stmt = stmts.next(); RDFNode label = stmt.getObject(); addDocumentToIndex(stmt.getSubject(), "rdfs:label", label.asLiteral().getString()); } iwriter.commit(); iwriter.close(); } catch (IOException e) { log.error(e.getLocalizedMessage(), e); } }
@Override public PrefixDeclaration read(Resource resource) { checkNotNull(resource); PrefixDeclarationImpl.PrefixDeclarationImplBuilder prefixDeclarationImplBuilder = PrefixDeclarationImpl.builder(); prefixDeclarationImplBuilder.element(resource); for (Statement smt : resource.listProperties(SHACL.prefix).toList()) { prefixDeclarationImplBuilder.prefix(smt.getObject().asLiteral().getLexicalForm()); } for (Statement smt : resource.listProperties(SHACL.prefixNamespace).toList()) { prefixDeclarationImplBuilder.namespace(smt.getObject().asLiteral().getLexicalForm()); } return prefixDeclarationImplBuilder.build(); } }
private static DataPropertyStatement makeDataPropertyStatementFromStatement(Statement statement, RDFNode node) { Literal lit = (Literal) node.as(Literal.class); String value = lit.getLexicalForm(); String lang = lit.getLanguage(); String datatypeUri = lit.getDatatypeURI(); DataPropertyStatement dps = new DataPropertyStatementImpl(); dps.setDatatypeURI(datatypeUri); dps.setLanguage(lang); dps.setData(value); dps.setDatapropURI(statement.getPredicate().getURI()); dps.setIndividualURI(statement.getSubject().getURI()); return dps; }
private OWLLiteral asOWLLiteral(OWLDataFactory df, Literal literal){ OWLLiteral owlLiteral; if(literal.getDatatypeURI() == null){ owlLiteral = df.getOWLLiteral(literal.getLexicalForm(), literal.getLanguage()); } else { owlLiteral = df.getOWLLiteral(literal.getLexicalForm(), df.getOWLDatatype(IRI.create(literal.getDatatypeURI()))); } return owlLiteral; }
@Override public Map<OWLIndividual, SortedSet<Double>> getDoubleDatatypeMembersImpl(OWLDataProperty datatypeProperty) { Map<OWLIndividual, SortedSet<Double>> subject2objects = new HashMap<>(); String query = "SELECT ?s ?o WHERE {" + String.format("?s <%s> ?o.", datatypeProperty.toStringID()) + " FILTER(" + datatypeSparqlFilter(OWLAPIUtils.floatDatatypes) + ")}"; ResultSet rs = executeSelectQuery(query); while(rs.hasNext()){ QuerySolution qs = rs.next(); OWLIndividual sub = df.getOWLNamedIndividual(IRI.create(qs.getResource("s").getURI())); Literal val = qs.getLiteral("o").asLiteral(); // Virtuoso bug workaround which returns NAN instead of NaN Double obj = "NAN".equals(val.getLexicalForm()) ? Double.NaN : val.getDouble(); subject2objects.computeIfAbsent(sub, k -> new TreeSet<>()).add(obj); } return subject2objects; }
Need need = new Need(); ResIterator needIt = model.listSubjectsWithProperty(RDF.type, WON.NEED); if (!needIt.hasNext()) throw new IllegalArgumentException("at least one RDF node must be of type won:Need"); logger.debug("processing need resource {}", needRes.getURI()); need.setNeedURI(URI.create(needRes.getURI())); Statement dateStat = needRes.getProperty(DCTerms.created); if (dateStat != null && dateStat.getObject().isLiteral()) { need.setCreationDate(DateTimeUtils.toDate(dateStat.getObject().asLiteral(), model)); logger.debug("found needCreationDate literal value '{}'", dateStat.getObject().asLiteral().getString()); } else { logger.debug("no needCreationDate property found for need resource {}", needRes.getURI());
private String testWriteXML() { StringBuilder output = new StringBuilder(); output.append("<html><head><title>Test Write XML</title></head><body><pre>\n"); OntModel model = ModelAccess.on(getServletContext()).getOntModel(); Model tmp = ModelFactory.createDefaultModel(); boolean valid = true; for (Statement stmt : model.listStatements().toList() ) { tmp.add(stmt); StringWriter writer = new StringWriter(); try { tmp.write(writer, "RDF/XML"); } catch (Exception e) { valid = false; output.append("-----\n"); output.append("Unable to write statement as RDF/XML:\n"); output.append("Subject : \n").append(stmt.getSubject().getURI()); output.append("Subject : \n").append(stmt.getPredicate().getURI()); String objectStr = (stmt.getObject().isLiteral()) ? ((Literal)stmt.getObject()).getLexicalForm() : ((Resource)stmt.getObject()).getURI(); output.append("Subject : \n").append(objectStr); output.append("Exception: \n"); e.printStackTrace(); } tmp.removeAll(); } if (valid) { output.append("All statements were able to be written as RDF/XML\n"); } output.append("</body></html>"); return output.toString(); }
@Override public boolean test(Statement s) { String predicate = s.getPredicate().getURI().substring(s.getPredicate().getURI().lastIndexOf("/")); String object = null; if(s.getObject().isURIResource()){ object = s.getObject().asResource().getURI(); object = object.substring(object.lastIndexOf("/")+1); } else if(s.getObject().isLiteral()){ object = s.getObject().asLiteral().getLexicalForm(); } return isSimiliar2QuestionWord(object) || isSimiliar2QuestionWord(predicate); }
/** * Returns all won:hasTextMessage objects, or an empty set if none is found. The specified model has to be a * message's content graph. * @param model * @return */ public static Set<String> getTextMessages(Model model, URI messageUri){ Set<String> ret = new HashSet<>(); StmtIterator stmtIt = model.listStatements(model.getResource(messageUri.toString()), WON.HAS_TEXT_MESSAGE, (RDFNode) null); while(stmtIt.hasNext()) { RDFNode node = stmtIt.next().getObject(); if (node.isLiteral()) { ret.add(node.asLiteral().getLexicalForm()); } } return ret; }
Resource R1 = data.createResource(PrintUtil.egNS + "R1"); Resource D = data.createResource(PrintUtil.egNS + "D"); Property p = data.createProperty(PrintUtil.egNS, "p"); Property propbar = data.createProperty(PrintUtil.egNS, "propbar"); Property rbr = data.createProperty(ReasonerVocabulary.RBNamespace, "restriction"); R1.addProperty(OWL.onProperty, p).addProperty(OWL.allValuesFrom, D); InfGraph infgraph = createInfGraph(rules, data.getGraph()); Resource foo = infModel.createResource(PrintUtil.egNS + "foo"); RDFNode flit = infModel.getResource(R1.getURI()).getRequiredProperty(rbr).getObject(); assertNotNull(flit); assertEquals(flit.toString(), "allOK"); Literal one = (Literal)foo.getRequiredProperty(propbar).getObject(); assertEquals(new Integer(1), one.getValue());
private int getKBSize() { String query = "SELECT (COUNT(*) AS ?cnt) WHERE {[] a ?type . ?type a <http://www.w3.org/2002/07/owl#Class> .}"; QueryExecution qe = qef.createQueryExecution(query); ResultSet rs = qe.execSelect(); int size = rs.next().get("cnt").asLiteral().getInt(); qe.close(); return size; }
private static String rdfNodeToString(RDFNode node) { if (node.isLiteral()) { return node.asLiteral().getString(); } else if (node.isResource()) { return node.asResource().getURI(); } return null; }
/** * Utility method for logging */ public static String stmtString(Statement statement) { return " [subject = " + statement.getSubject().getURI() + "] [property = " + statement.getPredicate().getURI() + "] [object = " + (statement.getObject().isLiteral() ? ((Literal)statement.getObject()).getLexicalForm() + " (Literal)" : ((Resource)statement.getObject()).getURI() + " (Resource)") + "]"; }
public static WonSignatureData extractWonSignatureData(final Resource resource) { Statement stmt = resource.getRequiredProperty(WONMSG.HAS_SIGNED_GRAPH_PROPERTY); String signedGraphUri = stmt.getObject().asResource().getURI(); stmt = resource.getRequiredProperty(SFSIG.HAS_SIGNATURE_VALUE); String signatureValue = stmt.getObject().asLiteral().getString(); stmt = resource.getRequiredProperty(WONMSG.HAS_HASH_PROPERTY); String hash = stmt.getObject().asLiteral().getString(); stmt = resource.getRequiredProperty(WONMSG.HAS_PUBLIC_KEY_FINGERPRINT_PROPERTY); String fingerprint = stmt.getObject().asLiteral().getString(); stmt = resource.getRequiredProperty(SFSIG.HAS_VERIFICATION_CERT); String cert = stmt.getObject().asResource().getURI(); return new WonSignatureData(signedGraphUri, resource.getURI(), signatureValue, hash, fingerprint, cert); }
private int getCountNumber(QueryExecutionFactory model, Query query, String var) { checkNotNull(query); checkNotNull(var); int result = 0; try ( QueryExecution qe = model.createQueryExecution(query) ) { ResultSet results = qe.execSelect(); if (results != null && results.hasNext()) { QuerySolution qs = results.next(); result = qs.get(var).asLiteral().getInt(); } } return result; } }
public void testDateTime_7() { Calendar testCal3 = new GregorianCalendar(TimeZone.getTimeZone("GMT")); testCal3.clear(); testCal3.set(1999, Calendar.JANUARY, 30, 15, 9, 32); Literal lc = m.createTypedLiteral(testCal3); assertEquals("1999-01-30T15:09:32Z", lc.getLexicalForm()); String urib="rdf://test.com#"; String uri1=urib+"1"; String urip=urib+"prop"; String testN3 = "<"+uri1+"> <"+urip+"> \""+lc.getLexicalForm()+"\"^^<"+lc.getDatatypeURI()+"> ."; java.io.StringReader sr = new java.io.StringReader(testN3); m.read(sr, urib, "N3"); assertTrue(m.contains(m.getResource(uri1),m.getProperty(urip))); Resource r1 = m.getResource(uri1); Property p = m.getProperty(urip); XSDDateTime returnedDateTime = (XSDDateTime) r1.getProperty(p).getLiteral().getValue(); assertEquals("deserialized calendar value", testCal3, returnedDateTime.asCalendar()); }
/** * convenience method for use with functional datatype properties */ protected void updatePropertyStringValue(Resource res, Property dataprop, String value, Model model) { if (dataprop != null) { String existingValue = null; Statement stmt = res.getProperty(dataprop); if (stmt != null) { RDFNode object = stmt.getObject(); if (object != null && object.isLiteral()){ existingValue = ((Literal)object).getString(); } } if (value == null || value.length() == 0) { model.removeAll(res, dataprop, null); } else if (existingValue == null ) { model.add(res, dataprop, value, XSDDatatype.XSDstring); } else if (!existingValue.equals(value)) { model.removeAll(res, dataprop, null); model.add(res, dataprop, value, XSDDatatype.XSDstring); } } }
/** * Test query applied to graphs containing typed values */ public void testTypedContains() { Model model = ModelFactory.createDefaultModel(); Property p = model.createProperty("urn:x-eg/p"); Literal l1 = model.createTypedLiteral("10", "http://www.w3.org/2001/XMLSchema#integer"); Literal l2 = model.createTypedLiteral("010", "http://www.w3.org/2001/XMLSchema#integer"); assertSameValueAs( "sameas test", l1, l2 ); Resource a = model.createResource("urn:x-eg/a"); a.addProperty( p, l1 ); assertTrue( model.getGraph().contains( a.asNode(), p.asNode(), l1.asNode() ) ); assertTrue( model.getGraph().contains( a.asNode(), p.asNode(), l2.asNode() ) ); }
private void indexes(Resource root) { // ---- API ways StmtIterator sIter = root.listProperties(pIndex) ; while(sIter.hasNext()) { RDFNode obj = sIter.nextStatement().getObject() ; if ( obj.isLiteral() ) { String desc = ((Literal)obj).getString() ; System.out.printf("Index: %s\n", desc) ; System.out.flush(); continue ; } throw new TDBException("Wrong format for tdb:index: should be a string: found: "+NodeFmtLib.displayStr(obj)) ; // Resource x = (Resource)obj ; // String desc = x.getProperty(pDescription).getString() ; // String file = x.getProperty(pFile).getString() ; // System.out.printf("Index: %s in file %s\n", desc, file) ; System.out.flush(); } System.out.flush(); throw new TDBException("Custom indexes turned off") ; }
private Double getOrder(Resource subject) { Statement s = subject.getProperty(SH.order); if(s != null && s.getObject().isLiteral() && s.getLiteral().getValue() instanceof Number) { return ((Number)s.getLiteral().getValue()).doubleValue(); } return 0.0; } }