On Fri, Sep 6, 2013 at 11:44 AM, Joshua TAYLOR <[email protected]> wrote: > On Fri, Sep 6, 2013 at 10:49 AM, Tom Emerson <[email protected]> wrote: >> I am working with SKOS in Jena and needed to create a utility class >> containing the properties and resources defined in the vocabulary (just >> like those in com.hp.hpl.jena.vocabulary). Instead of creating these >> manually, I did the normal engineer thing and wrote a program to generate >> them for me. It works for SKOS: I haven't tried it with other vocabularies. >> >> The code is available if you want to try it out. Suggestions/improvements >> are welcome. >> >> https://github.com/TreeRex/vocab2jena > > Code-generation is always interesting. Can you give a quick overview > of how it compares with Jena's schemagen [1]? > > [1] http://jena.apache.org/documentation/tools/schemagen.html
For comparison purposes, here's what Jena's schemagen produces for SKOS: $ schemagen -i http://www.w3.org/TR/skos-reference/skos.rdf /* CVS $Id: $ */ import com.hp.hpl.jena.rdf.model.*; /** * Vocabulary definitions from http://www.w3.org/TR/skos-reference/skos.rdf * @author Auto-generated by schemagen on 06 Sep 2013 11:47 */ public class Skos { /** <p>The RDF model that holds the vocabulary terms</p> */ private static Model m_model = ModelFactory.createDefaultModel(); /** <p>The namespace of the vocabulary as a string</p> */ public static final String NS = "http://www.w3.org/2004/02/skos/core#"; /** <p>The namespace of the vocabulary as a string</p> * @see #NS */ public static String getURI() {return NS;} /** <p>The namespace of the vocabulary as a resource</p> */ public static final Resource NAMESPACE = m_model.createResource( NS ); /** <p>The range of skos:altLabel is the class of RDF plain literals.skos:prefLabel, * skos:altLabel and skos:hiddenLabel are pairwise disjoint properties.</p> */ public static final Property altLabel = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#altLabel" ); public static final Property broadMatch = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#broadMatch" ); /** <p>Broader concepts are typically rendered as parents in a concept hierarchy * (tree).</p> */ public static final Property broader = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#broader" ); public static final Property broaderTransitive = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#broaderTransitive" ); public static final Property changeNote = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#changeNote" ); public static final Property closeMatch = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#closeMatch" ); public static final Property definition = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#definition" ); public static final Property editorialNote = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#editorialNote" ); /** <p>skos:exactMatch is disjoint with each of the properties skos:broadMatch and * skos:relatedMatch.</p> */ public static final Property exactMatch = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#exactMatch" ); public static final Property example = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#example" ); public static final Property hasTopConcept = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#hasTopConcept" ); /** <p>The range of skos:hiddenLabel is the class of RDF plain literals.skos:prefLabel, * skos:altLabel and skos:hiddenLabel are pairwise disjoint properties.</p> */ public static final Property hiddenLabel = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#hiddenLabel" ); public static final Property historyNote = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#historyNote" ); public static final Property inScheme = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#inScheme" ); /** <p>These concept mapping relations mirror semantic relations, and the data model * defined below is similar (with the exception of skos:exactMatch) to the data * model defined for semantic relations. A distinct vocabulary is provided for * concept mapping relations, to provide a convenient way to differentiate links * within a concept scheme from links between concept schemes. However, this * pattern of usage is not a formal requirement of the SKOS data model, and relies * on informal definitions of best practice.</p> */ public static final Property mappingRelation = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#mappingRelation" ); public static final Property member = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#member" ); /** <p>For any resource, every item in the list given as the value of the skos:memberList * property is also a value of the skos:member property.</p> */ public static final Property memberList = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#memberList" ); public static final Property narrowMatch = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#narrowMatch" ); /** <p>Narrower concepts are typically rendered as children in a concept hierarchy * (tree).</p> */ public static final Property narrower = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#narrower" ); public static final Property narrowerTransitive = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#narrowerTransitive" ); public static final Property notation = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#notation" ); public static final Property note = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#note" ); /** <p>skos:prefLabel, skos:altLabel and skos:hiddenLabel are pairwise disjoint properties.A * resource has no more than one value of skos:prefLabel per language tag, and * no more than one value of skos:prefLabel without language tag.The range of * skos:prefLabel is the class of RDF plain literals.</p> */ public static final Property prefLabel = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#prefLabel" ); /** <p>skos:related is disjoint with skos:broaderTransitive</p> */ public static final Property related = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#related" ); public static final Property relatedMatch = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#relatedMatch" ); public static final Property scopeNote = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#scopeNote" ); public static final Property semanticRelation = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#semanticRelation" ); public static final Property topConceptOf = m_model.createProperty( "http://www.w3.org/2004/02/skos/core#topConceptOf" ); public static final Resource Collection = m_model.createResource( "http://www.w3.org/2004/02/skos/core#Collection" ); public static final Resource Concept = m_model.createResource( "http://www.w3.org/2004/02/skos/core#Concept" ); public static final Resource ConceptScheme = m_model.createResource( "http://www.w3.org/2004/02/skos/core#ConceptScheme" ); public static final Resource OrderedCollection = m_model.createResource( "http://www.w3.org/2004/02/skos/core#OrderedCollection" ); } -- Joshua Taylor, http://www.cs.rpi.edu/~tayloj/
