?? rdfschemamodelenumeration.java
字號:
package edu.stanford.db.rdf.schema;import org.w3c.rdf.model.*;import java.util.*;import org.w3c.rdf.vocabulary.rdf_syntax_19990222.RDF;import org.w3c.rdf.vocabulary.rdf_schema_19990303.RDFS;public class RDFSchemaModelEnumeration implements Enumeration { /** * Enumerates all triples (including derived) for a given model and schema */ Model instances, schema; Enumeration statements; Enumeration derived; Hashtable derivedList; Statement current; public RDFSchemaModelEnumeration(Model instances, Model schema) throws ModelException { this.instances = instances; this.schema = schema; this.statements = instances.elements(); derivedList = new Hashtable(); derived = derivedList.elements(); current = null; } public boolean hasMoreElements() { if(current != null || derived.hasMoreElements()) return true; try { if(statements.hasMoreElements()) { fetchNext(); return true; } } catch (ModelException any) {} return false; } public Object nextElement() { if(current != null) { Statement s = current; current = null; return s; } else if(derived.hasMoreElements()) { return derived.nextElement(); } else throw new NoSuchElementException("RDFSchemaModelEnumeration"); } private void fetchNext() throws ModelException { Statement s = (Statement)statements.nextElement(); derivedList.clear(); if(RDF.type.equals(s.predicate())) { // find superclasses Model superclass = schema.find((Resource)s.object(), RDFS.subClassOf, null); // Model superclass = schema.find(null, RDFS.subClassOf, null); // System.out.println("Superclasses of " + s.object() + ": " + superclass.size() + " of " + schema.size()); if(!superclass.isEmpty()) { for(Enumeration en = superclass.elements(); en.hasMoreElements();) { Statement d = instances.getNodeFactory().createStatement(s.subject(), RDF.type, ((Statement)en.nextElement()).object() ); derivedList.put(d, d); } } } else { // check for superproperties Model superprop = schema.find(s.predicate(), RDFS.subPropertyOf, null); if(!superprop.isEmpty()) { for(Enumeration en = superprop.elements(); en.hasMoreElements();) { Statement d = instances.getNodeFactory().createStatement(s.subject(), (Resource)((Statement)en.nextElement()).object(), s.object() ); derivedList.put(d, d); } } } derived = derivedList.elements(); current = s; }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -