public static JSONArray getJSONArray(Set<OWLIndividual> individuals) { JSONArray j = new JSONArray(); for(OWLIndividual i : individuals) { j.put(i.toStringID()); } return j; }
private String triple(String subject, String predicate, OWLIndividual object){ return (subject.startsWith("?") ? subject : "<" + subject + ">") + " " + (predicate.startsWith("?") || predicate.equals("a") ? predicate : "<" + predicate + ">") + " " + "<" + object.toStringID() + ">.\n"; }
public static String[] sortedSet2StringListIndividuals(Set<OWLIndividual> individuals){ String[] ret=new String[individuals.size()]; Iterator<OWLIndividual> i=individuals.iterator(); int a=0; while (i.hasNext()){ ret[a++]=i.next().toStringID(); } Arrays.sort(ret); return ret; }
protected String buildIndividualsQueryValues(OWLClassExpression description, Collection<OWLIndividual> indValues, boolean isCountQuery) { StringBuilder query; String tp = converter.convert("?ind", description); if (isCountQuery) { query = new StringBuilder("SELECT (COUNT(DISTINCT ?ind) as ?cnt) WHERE { \n"); } else { query = new StringBuilder("SELECT DISTINCT ?ind WHERE { \n"); } query.append("VALUES ?ind { \n"); for (OWLIndividual x:indValues) { query.append("<").append(x.toStringID()).append("> "); } query.append("}. \n ").append(tp).append("\n}"); return query.toString(); }
public void setFuzzyExamples(Map<OWLIndividual, Double> fuzzyEx) { fuzzyExamples = new TreeSet<>(); for (OWLIndividual i : fuzzyEx.keySet()) { this.fuzzyExamples.add(new FuzzyIndividual(i.toStringID(), fuzzyEx.get(i).doubleValue())); } }
public static Map<String, SortedSet<String>> getStringMap( Map<OWLIndividual, SortedSet<OWLIndividual>> roleMembers) { Map<String, SortedSet<String>> ret = new TreeMap<>(); for (OWLIndividual i : roleMembers.keySet()) { ret.put(i.toStringID(), getStringSet(roleMembers.get(i))); } return ret; }
@Override public void visit(SWRLIndividualArgument node) { //get the id without the quotes <> terms.add(fac.getConstantLiteral(node.getIndividual().toStringID(), Predicate.COL_TYPE.STRING)); }
@Override protected String buildIndividualsQueryValues(OWLClassExpression description, Collection<OWLIndividual> indValues, boolean isCountQuery) { String query; String tp = converter.convert("?ind", description); // for ontoquad if (isCountQuery) { query = "SELECT (COUNT(?ind) as ?cnt) WHERE { \n" + "SELECT DISTINCT ?ind WHERE { \n"; } else { query = "SELECT DISTINCT ?ind WHERE { \n"; } query += tp + "\n}"; if (isCountQuery) query += "\n}"; query += "\n " + "VALUES (?ind) { \n"; for (OWLIndividual x:indValues) { query += "(<" + x.toStringID() + ">) "; } query += "\n}"; return query; }
@Override public Set<OWLClass> getTypesImpl(OWLIndividual individual) { String query = String.format(SPARQLQueryUtils.SELECT_INSTANCE_TYPES_QUERY, individual.toStringID()); ResultSet rs = executeSelectQuery(query); SortedSet<OWLClass> types = asOWLEntities(EntityType.CLASS, rs, "var1"); return types; }
@Override public void visit(SWRLIndividualArgument node) { //get the id without the quotes <> terms.add(termFactory.getConstantLiteral(node.getIndividual().toStringID(), typeFactory.getXsdStringDatatype())); }
@Override public void visit(OWLObjectOneOf ce) { String subject = variables.peek(); if(modalDepth() == 1){ sparql += triple(subject, "?p", "?o"); } sparql += "FILTER(" + subject + " IN ("; String values = ""; for (OWLIndividual ind : ce.getIndividuals()) { if(!values.isEmpty()){ values += ","; } values += "<" + ind.toStringID() + ">"; } sparql += values; sparql += "))"; }
@Override public Model call() throws Exception { ConciseBoundedDescriptionGenerator cbdGen = new ConciseBoundedDescriptionGeneratorImpl(ks.getQueryExecutionFactory()); return cbdGen.getConciseBoundedDescription(ind.toStringID(), 2); } }));
@Override public Model extractFragment(OWLClass cls, int maxFragmentDepth) { startTime = System.currentTimeMillis(); Model fragment = ModelFactory.createDefaultModel(); //get some random individuals Set<OWLIndividual> individuals = getRandomIndividuals(cls); //get for each individual the CBD Model cbd; for (OWLIndividual ind : individuals) { cbd = cbdGen.getConciseBoundedDescription(ind.toStringID(), maxFragmentDepth); fragment.add(cbd); } return fragment; }
public Set<OWLClass> getMostSpecificTypes(OWLIndividual individual) { Set<OWLClass> types = new HashSet<>(); String query = String.format( "SELECT ?type WHERE {<%s> a ?type ." + "FILTER NOT EXISTS{<%s> a ?moreSpecificType ." + "?moreSpecificType <http://www.w3.org/2000/01/rdf-schema#subClassOf> ?type ." + "FILTER((?type != ?moreSpecificType) && (?moreSpecificType!= <http://www.w3.org/2002/07/owl#Nothing>))}}", individual.toStringID(), individual.toStringID()); ResultSet rs = executeSelectQuery(query); while(rs.hasNext()){ QuerySolution qs = rs.next(); IRI iri = IRI.create(qs.getResource("type").getURI()); if(!iri.isReservedVocabulary()) { types.add(df.getOWLClass(iri)); } } return types; }
@Override public Set<OWLIndividual> getRelatedIndividualsImpl(OWLIndividual individual, OWLObjectProperty objectProperty) { Set<OWLIndividual> individuals = new HashSet<>(); String query = String.format("SELECT ?ind WHERE {<%s> <%s> ?ind, FILTER(isIRI(?ind))}", individual.toStringID(), objectProperty.toStringID()); ResultSet rs = executeSelectQuery(query); while(rs.hasNext()){ QuerySolution qs = rs.next(); individuals.add(df.getOWLNamedIndividual(IRI.create(qs.getResource("ind").getURI()))); } return individuals; }
private Model getFragment(SparqlEndpointKS ks, Set<OWLIndividual> individuals){ ConciseBoundedDescriptionGenerator cbdGen = new ConciseBoundedDescriptionGeneratorImpl(ks.getQueryExecutionFactory()); Model model = ModelFactory.createDefaultModel(); for(OWLIndividual ind : individuals){ Model cbd = cbdGen.getConciseBoundedDescription(ind.toStringID(), 2); model.add(cbd); } return model; }
@Override public Map<OWLObjectProperty, Set<OWLIndividual>> getObjectPropertyRelationshipsImpl(OWLIndividual individual) { Map<OWLObjectProperty, Set<OWLIndividual>> prop2individuals = new HashMap<>(); String query = String.format("SELECT ?prop ?ind WHERE {" + "<%s> ?prop ?ind." + " FILTER(isIRI(?ind) && ?prop != <%s> && ?prop != <%s>)}", individual.toStringID(), RDF.type.getURI(), OWL.sameAs.getURI()); ResultSet rs = executeSelectQuery(query); while(rs.hasNext()){ QuerySolution qs = rs.next(); OWLIndividual ind = df.getOWLNamedIndividual(IRI.create(qs.getResource("ind").getURI())); OWLObjectProperty property = df.getOWLObjectProperty(IRI.create(qs.getResource("prop").getURI())); prop2individuals.computeIfAbsent(property, k -> new HashSet<>()).add(ind); } return prop2individuals; }
protected synchronized IndividualName pointer(OWLIndividual individual) { if (!individual.isAnonymous()) { return individualTranslator.getPointerFromEntity(individual.asOWLNamedIndividual()); } else { // XXX work around this issue return em.individual(df.getOWLNamedIndividual(IRI.create(individual.toStringID()))); } }
/** * Predicate Frequency(PF) quantifies the informativeness of a predicate p * in the context of a URI u. With context we mean the RDF triples where p * and u appear together. * * @param individual * @param property the predicate * @param outgoing * @return */ public double getPredicateFrequency(OWLIndividual individual, OWLProperty property, boolean outgoing) { String query = outgoing ? "SELECT (COUNT(*) AS ?cnt) WHERE {<%s> <%s> ?o .}" : "SELECT (COUNT(*) AS ?cnt) WHERE {?s <%s> <%s> .}"; query = String.format(query, individual.toStringID(), property.toStringID()); QueryExecution qe = qef.createQueryExecution(query); int pf = qe.execSelect().next().getLiteral("cnt").getInt(); qe.close(); return pf; }
private static void setup(String turtleString) throws Exception{ OWLOntology ontology = OWLManager.createOWLOntologyManager().loadOntologyFromOntologyDocument( new ByteArrayInputStream(turtleString.getBytes(StandardCharsets.UTF_8))); KnowledgeSource ks = new OWLAPIOntology(ontology); ks.init(); reasoner = new OWLAPIReasoner(ks); reasoner.init(); // get examples Set<OWLIndividual> posExamples = new HashSet<>(); Set<OWLIndividual> negExamples = new HashSet<>(); for (OWLIndividual ind : ontology.getIndividualsInSignature()) { if (ind.toStringID().startsWith("http://example.org/p")) { posExamples.add(ind); } else { negExamples.add(ind); } } // create learning problem lp = new PosNegLPStandard(reasoner); lp.setPositiveExamples(posExamples); lp.setNegativeExamples(negExamples); }