swoopspeciesvalidator.java

来自「Semantic Web Ontology Editor」· Java 代码 · 共 1,398 行 · 第 1/3 页

JAVA
1,398
字号
					for (Iterator dit = op.getRanges(onto).iterator(); dit.hasNext();) {						/* Check the expressivity of any equivalences */						OWLDescription description = (OWLDescription) dit.next();						evv.reset();						try {							description.accept(evv);							expressivityLevel = expressivityLevel | evv.getLevel();						} catch (OWLException ex) {							explain(OTHER, UNKNOWN, ex.getMessage());							expressivityLevel = OTHER;						}					}				}				for (Iterator iit = onto.getDataProperties().iterator(); iit.hasNext();) {					OWLDataProperty dp = (OWLDataProperty) iit.next();					for (Iterator dit = dp.getDomains(onto).iterator(); dit.hasNext();) {						/* Check the expressivity of any equivalences */						OWLDescription description = (OWLDescription) dit.next();						evv.reset();						try {							description.accept(evv);							expressivityLevel = expressivityLevel | evv.getLevel();						} catch (OWLException ex) {							explain(OTHER, UNKNOWN, ex.getMessage());							expressivityLevel = OTHER;						}					}					for (Iterator dit = dp.getRanges(onto).iterator(); dit							.hasNext();) {						/* Check the expressivity of any equivalences */						OWLDataRange description = (OWLDataRange) dit.next();						evv.reset();						try {							description.accept(evv);							expressivityLevel = expressivityLevel | evv.getLevel();						} catch (OWLException ex) {							explain(OTHER, UNKNOWN, ex.getMessage());							expressivityLevel = OTHER;						}					}				}				for (Iterator iit = onto.getIndividuals().iterator(); iit.hasNext();) {					OWLIndividual ind = (OWLIndividual) iit.next();					for (Iterator typeit = ind.getTypes(onto).iterator(); typeit.hasNext();) {						/* Check the expressivity of any equivalences */						OWLDescription description = (OWLDescription) typeit.next();						evv.reset();						try {							description.accept(evv);							expressivityLevel = expressivityLevel | evv.getLevel();						} catch (OWLException ex) {							explain(OTHER, UNKNOWN, ex.getMessage());							expressivityLevel = OTHER;						}					}				}			}			Set complexProperties = evv.getComplexProperties();			/*			 * Gather all the properties that are known to be functional or			 * inverse functional			 */			for (Iterator it = allOntologies.iterator(); it.hasNext();) {				OWLOntology onto = (OWLOntology) it.next();				for (Iterator pit = onto.getObjectProperties().iterator(); pit.hasNext();) {					OWLObjectProperty prop = (OWLObjectProperty) pit.next();					if (prop.isFunctional(onto) || prop.isInverseFunctional(onto)) {						complexProperties.add(prop);					}				}			}			/*			 * We aren't doing everything yet as we still need to grab those			 * that have complex superproperties.			 */			/*			 * Now check to see if they've been said to be transitive, in which			 * case we're in FULL.			 */			for (Iterator pit = complexProperties.iterator(); pit.hasNext();) {				OWLObjectProperty prop = (OWLObjectProperty) pit.next();				for (Iterator it = allOntologies.iterator(); it.hasNext();) {					OWLOntology onto = (OWLOntology) it.next();					if (prop.isTransitive(onto)) {						expressivityLevel = FULL;						URI uri = prop.getURI();						explain(FULL, COMPLEXTRANSITIVE, "Complex property "								+ encodeHLink(uri.toString(), myModel.shortForm(uri))								+ " asserted to be transitive.");					}				}			}		} catch (Exception ex) {			ex.printStackTrace();			throw new OWLException(ex.getMessage());		}	}	private void checkCorrectOWLUsage() throws OWLException {		/* Check that nothing in the OWL vocabulary has been redefined. */		/*		 * This was too strong. We are actually allowed to say that some things		 * e.g. Bag, Set, Alt and Statement are classes. Also some other stuff		 * in the RDF vocabulary. SKB.		 */		try {			for (Iterator it = classURIs.iterator(); it.hasNext();) {				URI uri = (URI) it.next();				if (uri != null && reservedVocabulary.contains(uri.toString())) {					if (!classOnlyVocabulary.contains(uri.toString())) {						/*						 * It's a redefinition of something that we can't						 * redefine.						 */						correctOWLUsage = false;						explain(FULL, BUILTINREDEFINITION, "Redefinition of: "								+ encodeHLink(uri.toString(), myModel.shortForm(uri)));					}				}			}			for (Iterator it = individualURIs.iterator(); it.hasNext();) {				URI uri = (URI) it.next();				if (uri != null && reservedVocabulary.contains(uri.toString())) {					/* It's a redefinition of something that we can't redefine. */					correctOWLUsage = false;					explain(FULL, BUILTINREDEFINITION, "Redefinition of: "							+ encodeHLink(uri.toString(), myModel.shortForm(uri)));				}			}			for (Iterator it = objectPropertyURIs.iterator(); it.hasNext();) {				URI uri = (URI) it.next();				if (uri != null && reservedVocabulary.contains(uri.toString())) {					/* It's a redefinition of something that we can't redefine. */					correctOWLUsage = false;					explain(FULL, BUILTINREDEFINITION, "Redefinition of: "							+ encodeHLink(uri.toString(), myModel.shortForm(uri)));				}			}			for (Iterator it = dataPropertyURIs.iterator(); it.hasNext();) {				URI uri = (URI) it.next();				if (uri != null && reservedVocabulary.contains(uri.toString())) {					/* It's a redefinition of something that we can't redefine. */					correctOWLUsage = false;					explain(FULL, BUILTINREDEFINITION, "Redefinition of: "							+ encodeHLink(uri.toString(), myModel.shortForm(uri)));				}			}			for (Iterator it = datatypeURIs.iterator(); it.hasNext();) {				URI uri = (URI) it.next();				if (uri != null						&& reservedVocabulary.contains(uri.toString())						||						/*						 * Nasty. Need to check that thing/nothing aren't						 * redefined as datatypes.						 */						uri.toString().equals(OWLVocabularyAdapter.INSTANCE.getThing())						|| uri.toString().equals(OWLVocabularyAdapter.INSTANCE.getNothing())) {					/* It's a redefinition of something that we can't redefine. */					correctOWLUsage = false;					explain(FULL, BUILTINREDEFINITION, "Redefinition of: "							+ encodeHLink(uri.toString(), myModel.shortForm(uri)));				}			}		} catch (Exception ex) {			ex.printStackTrace();			throw new OWLException(ex.getMessage());		}	}	private void checkCorrectOWLNamespaceUsage() throws OWLException {		/* Check that nothing's been defined in the OWL namespace. */		try {			for (Iterator it = allURIs.iterator(); it.hasNext();) {				URI uri = (URI) it.next();				if (uri != null) {					String str = uri.toString();					if (str.startsWith(OWLVocabularyAdapter.OWL)							&& !str.equals(OWLVocabularyAdapter.INSTANCE.getThing())							&& !str.equals(OWLVocabularyAdapter.INSTANCE.getNothing())							&&							/* Added check for built ins */							!OWLVocabularyAdapter.INSTANCE.getAnnotationProperties().contains(str)) {						correctOWLNamespaceUsage = false;						explain(FULL, OWLNAMESPACEUSED, 								encodeHLink(str, myModel.shortForm(uri))								+ " in OWL Namespace");					}				}			}		} catch (Exception ex) {			ex.printStackTrace();			throw new OWLException(ex.getMessage());		}	}	/*	 * Returns a readable string corresponding to the error or validation code	 */	public static String readableCode(int code) {		switch (code) {		case OWLRDFErrorConstants.OTHER:			return "Unknown RDF Error";		case OWLRDFErrorConstants.UNTYPED_CLASS:			return "Untyped Class";		case OWLRDFErrorConstants.UNTYPED_PROPERTY:			return "Untyped Property";		case OWLRDFErrorConstants.UNTYPED_INDIVIDUAL:			return "Untyped Individual";		case OWLRDFErrorConstants.UNTYPED_ONTOLOGY:			return "Untyped Ontology";		case OWLRDFErrorConstants.UNTYPED_DATATYPE:			return "Untyped Datatype";		case OWLRDFErrorConstants.UNTYPED_URI:			return "Untyped URI";		case OWLRDFErrorConstants.MALFORMED_LIST:			return "Malformed List";		case OWLRDFErrorConstants.INVERSE_FUNCTIONAL_DATA_PROPERTY:			return "Inverse Functional Data Property";		case OWLRDFErrorConstants.UNSPECIFIED_FUNCTIONAL_PROPERTY:			return "Unspecified Functional Property";		case OWLRDFErrorConstants.STRUCTURE_SHARING:			return "Structure Sharing";		case OWLRDFErrorConstants.CYCLICAL_BNODES:			return "Cyclical BNodes";		case OWLRDFErrorConstants.MULTIPLE_DEFINITIONS:			return "Multiple Definitions";		case OWLRDFErrorConstants.MALFORMED_RESTRICTION:			return "Malformed Restriction";		case OWLRDFErrorConstants.MALFORMED_DESCRIPTION:			return "Malformed Description";		case OWLRDFErrorConstants.UNUSED_TRIPLES:			return "Unused Triples";		case OWLRDFErrorConstants.ILLEGAL_SUBPROPERTY:			return "Illegal Sub Property";		case OWLRDFErrorConstants.MALFORMED_IMPORT:			return "Malformed Import";		case UNKNOWN:			return "Unknown";		case INTERSECTION:			return "Intersection";		case UNION:			return "Union";		case COMPLEMENT:			return "Complement";		case ZEROONECARDINALITY:			return "0/1 Cardinality";		case CARDINALITY:			return "Cardinality";		case ONEOF:			return "One Of";		case DATATYPE:			return "DataType";		case DATARANGE:			return "DataRange";		case SUBCLASS:			return "SubClass";		case EQUIVALENCE:			return "Equivalence";		case DISJOINT:			return "Disjoint";		case PARTIAL:			return "Partial";		case COMPLETE:			return "Complete";		case SUBPROPERTY:			return "SubProperty";		case EQUIVALENTPROPERTY:			return "EquivalentProperty";		case INVERSE:			return "Inverse";		case TRANSITIVE:			return "Transitive";		case SYMMETRIC:			return "Symmetric";		case FUNCTIONAL:			return "Functional";		case INVERSEFUNCTIONAL:			return "InverseFunctional";		case INDIVIDUALS:			return "Individuals";		case RELATEDINDIVIDUALS:			return "RelatedIndividuals";		case INDIVIDUALDATA:			return "IndividualData";		case SAMEINDIVIDUAL:			return "SameIndividual";		case DIFFERENTINDIVIDUAL:			return "DifferentIndividuals";		case SEPARATIONVIOLATION:			return "Name Separation Violated";		case UNTYPEDINDIVIDUAL:			return "Untyped Individual";		case COMPLEXTRANSITIVE:			return "Complex Transitive Property";		case BUILTINREDEFINITION:			return "Redefinition of Builtin Vocabulary";		case OWLNAMESPACEUSED:			return "Definition in OWL Namespace";		case EXPRESSIONINAXIOM:			return "Expression used in Axiom";		case EXPRESSIONINRESTRICTION:			return "Expression used in Restriction";		}		return "---";	}	private String encodeHLink(String uri_string, String name)			throws URISyntaxException {		// System.out.println("linking: >>"+uri_string);		//URI uri = new URI(uri_string);		return ("<a href=" + StringEscapeUtils.escapeHtml(uri_string) + ">" 				+ StringEscapeUtils.escapeHtml(name) + "</a>");	}	/*	 * (non-Javadoc)	 * 	 * @see org.semanticweb.owl.validation.SpeciesValidator#isOWLLite(java.io.Reader,	 *      java.net.URI)	 */	public boolean isOWLLite(Reader r, URI physicalURI) throws OWLException {		// TODO Auto-generated method stub		return false;	}	/*	 * (non-Javadoc)	 * 	 * @see org.semanticweb.owl.validation.SpeciesValidator#isOWLDL(java.io.Reader,	 *      java.net.URI)	 */	public boolean isOWLDL(Reader r, URI physicalURI) throws OWLException {		// TODO Auto-generated method stub		return false;	}	/*	 * (non-Javadoc)	 * 	 * @see org.semanticweb.owl.validation.SpeciesValidator#isOWLFull(java.io.Reader,	 *      java.net.URI)	 */	public boolean isOWLFull(Reader r, URI physicalURI) throws OWLException {		// TODO Auto-generated method stub		return false;	}}/* * public void render(OWLOntology ontology, SwoopModel swoopModel, Writer * writer) throws RendererException { *  * myModel = swoopModel; *  * PrintWriter out = new PrintWriter(writer); *  * SpeciesValidator sv = null; try { sv = new SpeciesValidator(); *  } catch (OWLException e1) { throw new RendererException(e1.getMessage()); } * StringWriter lw = new StringWriter(); StringWriter dw = new StringWriter(); * StringWriter fw = new StringWriter(); StringWriter rw = new StringWriter(); * StringWriter mw = new StringWriter(); final PrintWriter lpw = new * PrintWriter(lw); final PrintWriter dpw = new PrintWriter(dw); final * PrintWriter fpw = new PrintWriter(fw); final PrintWriter rpw = new * PrintWriter(rw); final PrintWriter mpw = new PrintWriter(mw); *  * final StringBuffer level = new StringBuffer(); *  * sv.setReporter(new SpeciesValidatorReporter() { public void * ontology(OWLOntology onto) { } *  * public void done(String str) { level.setLength(0); level.append(str); } *  * public void message(String str) { mpw.println( "<li>" + reformatInHTML(str) + "</li>"); * //mpw.println("<li>" + str + "</li>"); } *  * public void explain(int l, String str) { switch (l) { case * SpeciesValidator.LITE : lpw.println( "<li>" + reformatInHTML(str) + "</li>"); * //lpw.println("<li>" + (str) + "</li>"); break; case SpeciesValidator.DL : * dpw.println( "<li>" + reformatInHTML(str) + "</li>"); //dpw.println("<li>" + * (str) + "</li>"); break; case SpeciesValidator.FULL : fpw.println( "<li>" + * reformatInHTML(str) + "</li>"); //fpw.println("<li>" + (str) + "</li>"); * break; } } *  * public void explain(int l, int code, String str) { switch (l) { case * SpeciesValidator.LITE : lpw.println( "<li>" + reformatInHTML(str) + "</li>"); * //lpw.println("<li>" + (str) + "</li>"); break; case SpeciesValidator.DL : * dpw.println( "<li>" + reformatInHTML(str) + "</li>"); //dpw.println("<li>" + * (str) + "</li>"); break; case SpeciesValidator.FULL : fpw.println( "<li>" + * reformatInHTML(str) + "</li>"); //fpw.println("<li>" + (str) + "</li>"); * break; } } }); *  * try { int l = SpeciesValidator.LITE; // check for OWL lite so we get all the * messages sv.isOWLLite(ontology); *  * out.println("<FONT FACE=\"Verdana\" SIZE=2>"); out.println("<b>DL * Expressivity:</b> " + swoopModel.getReasoner().getExpressivity()+"<br>"); * out.println("<p><b>Level: " + level +"</b>"); *  * //out.println( "<li>"+"asdf adfd "+ encodeHLink("http://www.google.com", * "http://www.google.com") + "</li>"); *  *  * if ((l < SpeciesValidator.LITE) && !lw.toString().equals("")) { out.println("<ul>"); * out.println( reformatInHTML(lw.toString()) ); //out.println( lw.toString() ); * out.println("</ul>"); } // end of if () if ((l < SpeciesValidator.DL) && * !dw.toString().equals("")) { out.println("<ul>"); out.println( * reformatInHTML(dw.toString()) ) ; //out.println( dw.toString() ) ; * out.println("</ul>"); } // end of if () if ((l < SpeciesValidator.FULL) && * !fw.toString().equals("")) { out.println("<ul>"); out.println( * reformatInHTML(fw.toString()) ); //out.println( fw.toString()); // * System.out.println(fw.toString() ); out.println("</ul>"); } // end of if () * if (!mw.toString().equals("")) { out.println("<b>Additional Messages</b>"); * out.println("<ul>"); out.println( reformatInHTML(mw.toString()) ); * //out.println( mw.toString() ); out.println("</ul>"); } // end of if () *  * out.println("</FONT>"); *  } catch (Exception e) { out.println("Exception: " + e.getMessage()); * e.printStackTrace(); } // end of try-catch *  } *  *  * public void setOptions(Map options) { } *  *  * public Map getOptions() { return null; } *  *  * private String reformatInHTML(String source) { source = * source.replaceAll(SPACE, " "); try{ StringTokenizer tokens = new * StringTokenizer(source); String result = ""; while (tokens.hasMoreTokens()) { * String token = tokens.nextToken(); String temp = ""; for (int i = 0; i < * POPULAR_SCHEME_NAMES.length; i++) { int index = -1; if ((index = * token.indexOf(POPULAR_SCHEME_NAMES[i])) != -1) { String head = * token.substring(0, index); String tail = token.substring(index); String tip = * ""; *  * int x = 0; int y = 0; int z = 0; int w = 0; int ind = Integer.MAX_VALUE; if * ((x = tail.indexOf("<")) != -1) ind = Math.min(ind, x); //if ((y = * tail.indexOf(")")) != -1) // ind = Math.min(ind, y); //if ((z = * tail.indexOf("(")) != -1) // ind = Math.min(ind, z); if ((w = * tail.indexOf(">")) != -1) ind = Math.min(ind, w); *  * if (ind != Integer.MAX_VALUE) { tail = tail.substring(0, ind); if (ind == y) * tip = ")"; } *  * temp = head + encodeHLink(tail, myModel.shortForm(new URI(tail))) + tip; * break; } temp = token; } result = result + SPACE + temp; } return result ; } * catch (URISyntaxException ex) { ex.printStackTrace(); } *  * return source; // exception has occurred. No 'pretty printing' is returned } *  * private String encodeHLink(String uri_string, String name) throws * URISyntaxException { //System.out.println("linking: >>"+uri_string); URI uri = * new URI(uri_string); return "<a href="+uri+">"+name+"</a>"; } */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?