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 + -
显示快捷键?