turtleentityrenderer.java
来自「Semantic Web Ontology Editor」· Java 代码 · 共 1,609 行 · 第 1/4 页
JAVA
1,609 行
// object property values Map propertyValues = ind.getObjectPropertyValues(reasoner.getOntologies()); for (Iterator it = propertyValues.keySet().iterator(); it.hasNext();) { OWLObjectProperty prop = (OWLObjectProperty) it.next(); Set vals = (Set) propertyValues.get(prop); for (Iterator valIt = vals.iterator(); valIt.hasNext();) { OWLIndividual oi = (OWLIndividual) valIt.next(); TV.reset(); oi.accept(TV); print(TV.getIndentString() + encodeHLink(prop.getURI(), shortForms.shortForm(prop.getURI())) + TAB + TV.result() + ";"); if (valIt.hasNext()) { println(); } } if (it.hasNext()) println(); } if (propertyValues.size() != 0) println(); // data property values Map dataValues = ind.getDataPropertyValues(reasoner.getOntologies()); for (Iterator it = dataValues.keySet().iterator(); it.hasNext();) { OWLDataProperty prop = (OWLDataProperty) it.next(); Set vals = (Set) dataValues.get(prop); for (Iterator valIt = vals.iterator(); valIt.hasNext();) { OWLDataValue dtv = (OWLDataValue) valIt.next(); TV.reset(); dtv.accept(TV); print(TV.getIndentString() + encodeHLink(prop.getURI(), shortForms.shortForm(prop.getURI())) + TAB + TV.result() + ";"); //System.out.println("Datatype Prop:" + prop.getURI().toString()); if (valIt.hasNext()) { println(); } } if (it.hasNext()) println(); } TV.indentLevel++; } catch (Exception ex) { ex.printStackTrace(); } } protected void renderObjectProperty(OWLObjectProperty prop) throws OWLException { try{ TurtleVisitor TV = (TurtleVisitor)visitor; // rendering type ShortFormProvider shortForms = null; if (myModel.getShowQNames()) shortForms = this.myQNameProvider; else shortForms = new TurtleShortFormProvider(); String classQName = shortForms.shortForm(prop.getURI()); URI typeURI = new URI(OWL_OBJECTPROPERTY); // print the class and its type println(encodeHLink(prop.getURI(), classQName) + TAB + encodeHLink(new URI(RDF_TYPE_URI), "a") + SPACE + encodeHLink(typeURI, myQNameProvider.shortForm(typeURI)) + ";"); TV.indentLevel ++; // print out ANNOTATIONS if(!prop.getAnnotations(reasoner.getOntology()).isEmpty()) { renderAnnotations(prop); println(";"); } // is TRANSITIVE? if (prop.isTransitive(reasoner.getOntologies())) { typeURI = new URI(OWL_TRANSITIVEPROP); print(TV.getIndentString() + encodeHLink(new URI(RDF_TYPE_URI), "a") + TAB + encodeHLink(typeURI, myQNameProvider.shortForm(typeURI)) + ";"); } // is FUNCTIONAL? if (prop.isFunctional(reasoner.getOntologies())) { typeURI = new URI(OWL_FUNCTIONALPROP); println(TV.getIndentString() + encodeHLink(new URI(RDF_TYPE_URI), "a") + TAB + encodeHLink(typeURI, myQNameProvider.shortForm(typeURI)) + ";"); } // is INVERSE FUNCTIONAL? if (prop.isInverseFunctional(reasoner.getOntologies())) { typeURI = new URI(OWL_INVERSEFUNCTIONALPROP); println(TV.getIndentString() + encodeHLink(new URI(RDF_TYPE_URI), "a") + TAB + encodeHLink(typeURI, myQNameProvider.shortForm(typeURI)) + ";"); } // is SYMMETRIC? if (prop.isSymmetric(reasoner.getOntologies())) { typeURI = new URI(OWL_SYMMETRICPROP); println(TV.getIndentString() + encodeHLink(new URI(RDF_TYPE_URI), "a") + TAB + encodeHLink(typeURI, myQNameProvider.shortForm(typeURI)) + ";"); } // EQUIVALENT properties for (Iterator it = reasoner.equivalentPropertiesOf(prop).iterator(); it.hasNext();) { URI uri = new URI(OWL_EQUIVALENTPROP); print(TV.getIndentString() + encodeHLink(uri, myQNameProvider.shortForm(uri)) + TAB); Object equi = (Object) it.next(); OWLObjectProperty op = (OWLObjectProperty)equi; TV.reset(); op.accept(TV); println( TV.result() + ";"); } // INVERSE for (Iterator it = prop.getInverses(reasoner.getOntologies()).iterator(); it.hasNext();) { URI uri = new URI(OWL_INVERSEOF); print(TV.getIndentString() + encodeHLink(uri, myQNameProvider.shortForm(uri)) + TAB); OWLObjectProperty inv = (OWLObjectProperty) it.next(); TV.reset(); inv.accept(TV); println( TV.result() + ";"); } // DOMAIN for (Iterator it = reasoner.domainsOf(prop).iterator(); it.hasNext();) { URI uri = new URI(RDFS_DOMAIN); print(TV.getIndentString() + encodeHLink(uri, myQNameProvider.shortForm(uri)) + TAB); OWLDescription dom = (OWLDescription) it.next(); TV.reset(); dom.accept(TV); println( TV.result() + ";"); } // RANGE for (Iterator it = reasoner.rangesOf(prop).iterator(); it.hasNext();) { URI uri = new URI(RDFS_RANGE); print(TV.getIndentString() + encodeHLink(uri, myQNameProvider.shortForm(uri)) + TAB); OWLDescription ran = (OWLDescription) it.next(); TV.reset(); ran.accept(TV); println( TV.result() + ";"); } // print out superclasses (SUBCLASSOF) for (Iterator it = reasoner.superPropertiesOf(prop).iterator(); it.hasNext();) { URI uri = new URI(RDFS_SUBPROPERTYOF); print(TV.getIndentString() + encodeHLink(uri, myQNameProvider.shortForm(uri)) + TAB); Object Obj = it.next(); if (Obj instanceof OWLObjectProperty) { //System.out.println(Obj.getClass().toString() ); OWLObjectProperty sup = (OWLObjectProperty)Obj; TV.reset(); sup.accept(TV); println( TV.result() + ";"); } else // could be a set of ObjProperties ... very strange { Set set = (Set)Obj; for (Iterator i = set.iterator(); i.hasNext();) { OWLObjectProperty sup = (OWLObjectProperty)i.next(); TV.reset(); sup.accept(TV); println( TV.result() + ";"); } } } TV.indentLevel ++; } catch (Exception ex) { ex.printStackTrace(); } } protected void println() { pw.println(BREAK); } protected void println(String str){ pw.print(str + BREAK); } public String getContentType() { return TURTLE_CONTENT_TYPE; } public String getName() { return TURTLE_NAME; } private String getOtherStatements(OWLEntity ent) { String result = BREAK; ShortFormProvider shortForms = null; if (myModel.getShowQNames()) shortForms = this.myQNameProvider; else shortForms = new TurtleShortFormProvider(); //System.out.println(ent.getClass().toString()); try { OWLClass owlNothing = reasoner.getOntology().getOWLDataFactory().getOWLNothing(); TurtleVisitor TV = (TurtleVisitor)visitor; if (ent instanceof OWLClass) // here we render all subclasses of this OWLClass { OWLClass clazz = (OWLClass)ent; Set subs = reasoner.subClassesOf(clazz); // SUPERCLASSOF (separate triple statements) // here we only print if the set of subclass is not { owlNothing } if ( (subs.size() >= 1 && !((Set)subs.iterator().next()).contains(owlNothing)) ) { URI uri = new URI(RDFS_SUBCLASSOF); for (Iterator it = subs.iterator(); it.hasNext(); ) { Object obj = (Object)it.next(); // if there is more than one element for this line // we only print the first one. rest are either // equivalent classes (or properties) if(obj instanceof Collection) obj = ((Collection)obj).iterator().next(); OWLDescription desc = (OWLDescription)obj; TV.reset(); desc.accept(TV); result = result + TV.getIndentString() + TV.result() + TAB + encodeHLink(uri, myQNameProvider.shortForm(uri) ) + TAB + encodeHLink(clazz.getURI(), shortForms.shortForm(clazz.getURI())) + PERIOD + BREAK; } result = result + BREAK; } // as DOMAIN of properties Set propDomains = getPropertiesWithDomain(clazz, showInherited); // whether to show inherited or not URI uri = new URI(RDFS_DOMAIN); for (Iterator it = propDomains.iterator(); it.hasNext(); ) { Object obj = it.next(); OWLProperty desc = (OWLProperty)obj; TV.reset(); desc.accept(TV); result = result + TV.getIndentString() + TV.result() + TAB + encodeHLink(uri, myQNameProvider.shortForm(uri) ) + TAB + encodeHLink(clazz.getURI(), shortForms.shortForm(clazz.getURI()) )+ PERIOD + BREAK; } if (propDomains.size() > 0) result = result + BREAK; // as RANGE of properties Set propRanges = getPropertiesWithRange(clazz, showInherited); // whether to show inherited or not uri = new URI(RDFS_RANGE); for (Iterator it = propRanges.iterator(); it.hasNext(); ) { Object obj = it.next(); OWLProperty desc = (OWLProperty)obj; TV.reset(); desc.accept(TV); result = result + TV.getIndentString() + TV.result() + TAB + encodeHLink(uri, myQNameProvider.shortForm(uri) ) + TAB + encodeHLink(clazz.getURI(), shortForms.shortForm(clazz.getURI()) )+ PERIOD + BREAK; } if (propRanges.size() > 0) result = result + BREAK; // INSTANCEs of this class Set instances = new HashSet(); if (showInherited) instances = reasoner.allInstancesOf(clazz); else instances = reasoner.instancesOf(clazz); for (Iterator it = instances.iterator(); it.hasNext(); ) { Object obj = it.next(); OWLIndividual ind = (OWLIndividual)obj; result = result +TV.getIndentString() + encodeHLink(ind.getURI(), shortForms.shortForm(ind.getURI()) ) + TAB + encodeHLink(new URI(RDF_TYPE_URI), "a") + TAB + encodeHLink(clazz.getURI(), shortForms.shortForm(clazz.getURI()) )+ PERIOD + BREAK; } } else if (ent instanceof OWLProperty) // OWLDataProperty + OWLObjectProperty { OWLProperty prop = (OWLProperty) ent; for (Iterator it = reasoner.subPropertiesOf(prop).iterator(); it.hasNext();) { URI uri = new URI(RDFS_SUBPROPERTYOF); Object obj = it.next(); // if there is more than one element for this line // we only print the first one. rest are either // equivalent classes (or properties) if(obj instanceof Collection) obj = ((Collection)obj).iterator().next(); OWLProperty dom = (OWLProperty)obj; TV.reset(); dom.accept(TV); result = result + TV.result() + TAB + encodeHLink(uri, myQNameProvider.shortForm(uri)) + TAB + encodeHLink(prop.getURI(), shortForms.shortForm(prop.getURI())) + PERIOD + BREAK; } } } catch (Exception ex) { ex.printStackTrace(); } return result; } /* * SwoopRenderer method * */ public Component getDisplayComponent( SwoopDisplayPanel panel ) { if (!(panel instanceof TermsDisplay )) throw new IllegalArgumentException(); JEditorPane editorPane = BaseEntityRenderer.getEditorPane( this.getContentType(), (TermsDisplay)panel ); if (!editorEnabled) { return editorPane; } else { editorPane.setEditable(true); // adding to UI listeners of TermsDisplay editorPane.getDocument().addDocumentListener((TermsDisplay)panel); editorPane.addMouseListener((TermsDisplay)panel); editorPane.addKeyListener((TermsDisplay)panel); } return editorPane; } private String repairForEndOfStatement(String toBeRendered){ toBeRendered = toBeRendered.trim(); while (toBeRendered.endsWith(BREAK)) toBeRendered = toBeRendered.substring(0, toBeRendered.length() - BREAK.length()); while (toBeRendered.endsWith(SPACE)) toBeRendered = toBeRendered.substring(0, toBeRendered.length() - SPACE.length()); while (toBeRendered.endsWith(TAB)) toBeRendered = toBeRendered.substring(0, toBeRendered.length() - TAB.length()); if (toBeRendered.endsWith(";")) toBeRendered = toBeRendered.substring(0, toBeRendered.length() - 1) + PERIOD; else { //System.out.println(toBeRendered.substring(toBeRendered.length() - 5)); toBeRendered = toBeRendered + PERIOD; } return toBeRendered; } private String encodeHLink(URI uri, String name) { if (!editorEnabled) return "<a href="+escape(uri)+">"+escape(name)+"</a>"; else return name; } private String encodeHLink(String uri_string, String name) throws URISyntaxException { URI uri = new URI(uri_string); if (!editorEnabled) return "<a href="+escape(uri)+">"+escape(name)+"</a>"; else return escape(name); } /* Sanity check. This way we know if message below is printed, * we are using the wrong ShortFormProvider */ public String shortForm(URI uri) { return "WRONG SHORTFORM PROVIDER!!!"; }/* (non-Javadoc) * @see org.mindswap.swoop.renderer.BaseEntityRenderer#renderForeignEntity(org.semanticweb.owl.model.OWLEntity) */protected void renderForeignEntity(OWLEntity ent) throws OWLException { // TODO Auto-generated method stub }/* (non-Javadoc) * @see org.mindswap.swoop.renderer.SwoopEditableRenderer#setEditorEnabled(boolean) */public void setEditorEnabled(boolean mode) { editorEnabled = mode; }/* (non-Javadoc) * @see org.mindswap.swoop.renderer.SwoopEditableRenderer#isEditableText() */public boolean isEditableText() { return editorEnabled; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?