public Set<String> findCandidatesForClass(String classUri) { Set<String> listOfPotentialCandidates = new HashSet<String>(); listOfPotentialCandidates.addAll( luceneAnnotator.getDefinedPropertiesWhereClassIsADomain(classUri, forceSuperClasses)); listOfPotentialCandidates.addAll( luceneAnnotator.getDefinedPropertiesWhereClassIsARange(classUri, forceSuperClasses)); Set<String> filteredList = new HashSet<String>(); for (String t : listOfPotentialCandidates) { if (!isInIgnoreNameSpaceList(t)) { filteredList.add(t); } } return filteredList; }
/** * find properties with no domain or range defined and also add some generic elements like label * or type * * @return */ List<OntologyElement> findHangingElements() throws Exception { List<OntologyElement> elements = new ArrayList<OntologyElement>(); Set<String> properties = new HashSet<String>(); properties.add(RDFS.LABEL.toString()); properties.add(RDF.TYPE.toString()); String table = suggestionsHelper.getDatatypePropertiesNoDomain(); properties.addAll(StringUtil.fromStringToSet(table)); String thingUri = "http://www.w3.org/2002/07/owl#Thing"; properties.addAll( luceneAnnotator.getDefinedPropertiesWhereClassIsADomain(thingUri, forceSuperClasses)); properties.addAll( luceneAnnotator.getDefinedPropertiesWhereClassIsARange(thingUri, forceSuperClasses)); elements.addAll(returnPropertyElements(properties)); logger.info("Adding:" + properties.size() + " hanging properties"); Set<String> classes = new HashSet<String>(); classes.add(thingUri); elements.addAll(returnClassElements(classes)); return elements; }
/** * @param property * @param text * @return */ private List<OntologyElement> findCandidatesForAProperty(PropertyElement property, String text) throws Exception { // Set<String> allSuggestions = new HashSet<String>(); String uri = ((SerializableURI) property.getData()).toString(); logger.debug("Finding candidates for property:" + property.getData().toString()); // all elements List<OntologyElement> elements = new ArrayList<OntologyElement>(); // feed classes: these are used to find more suggestions but they are also // added to the list! Set<String> feedClasses = new HashSet<String>(); Set<String> properties = new HashSet<String>(); Set<String> allClasses = new HashSet<String>(); Set<String> rangeClasses = luceneAnnotator.findPropertyRange(uri); feedClasses.addAll(rangeClasses); logger.debug("getRangeClassesForProperty:" + uri + " found " + rangeClasses.size()); Set<String> domainClasses = luceneAnnotator.findPropertyDomain(uri); feedClasses.addAll(domainClasses); logger.debug("getDomainClassesForProperty:" + uri + " found " + domainClasses.size()); if (feedClasses == null || feedClasses.size() <= 1) { // find top classes logger.debug("Number of feed classes is 0....forceSuggestions=" + forceSuggestions); if (new Boolean(forceSuggestions).booleanValue() == true) { feedClasses.addAll(luceneAnnotator.findClassURIs()); } } // a onda za te classes nadji properties where class is a domain/range for (String classUri : feedClasses) { properties.addAll( luceneAnnotator.getDefinedPropertiesWhereClassIsADomain(classUri, forceSuperClasses)); properties.addAll( luceneAnnotator.getDefinedPropertiesWhereClassIsARange(classUri, forceSuperClasses)); } // if (new Boolean(forceSuggestions).booleanValue() == true) { logger.info( "cheating!!!!!!!!!!!!!!!!!!!!!!!!!!! here you should not get ALL properties but only relevant ones"); Set<String> datatypePropertiesList = luceneAnnotator.findDatatypePropertyURIs(); Set<String> objectPropertiesList = luceneAnnotator.findObjectPropertyURIs(); Set<String> rdfPropertiesList = luceneAnnotator.findRDFPropertyURIs(null); properties.addAll(datatypePropertiesList); properties.addAll(objectPropertiesList); properties.addAll(rdfPropertiesList); } Set<String> filteredProperties = new HashSet<String>(); for (String t : properties) { if (!isInIgnoreNameSpaceList(t)) { filteredProperties.add(t); } } // add datatype properties which do not have domain defined: mb endDate // beginDate // String table = getSparqlUtils().getDatatypePropertiesNoDomain(); // properties.addAll(gate.freya.util.StringUtil.fromStringToSet(table)); elements.addAll(returnPropertyElements(filteredProperties)); for (String classUri : feedClasses) { allClasses.addAll( luceneAnnotator.getNeighbouringClassesWhereGivenClassIsADomain( classUri, forceSuperClasses)); allClasses.addAll( luceneAnnotator.getNeighbouringClassesWhereGivenClassIsARange( classUri, forceSuperClasses)); } Set<String> filteredFeedClasses = new HashSet<String>(); for (String t : feedClasses) { if (!isInIgnoreNameSpaceList(t)) { filteredFeedClasses.add(t); } } allClasses.addAll(filteredFeedClasses); elements.addAll(returnClassElements(allClasses)); return elements; }