001: /******************************************************************
002: * File: RDFSReasonerFactory.java
003: * Created by: Dave Reynolds
004: * Created on: 21-Jan-03
005: *
006: * (c) Copyright 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
007: * [See end of file]
008: * $Id: RDFSReasonerFactory.java,v 1.20 2008/01/02 12:06:44 andy_seaborne Exp $
009: *****************************************************************/package com.hp.hpl.jena.reasoner.rdfsReasoner1;
010:
011: import com.hp.hpl.jena.reasoner.*;
012: import com.hp.hpl.jena.reasoner.transitiveReasoner.TransitiveReasoner;
013: import com.hp.hpl.jena.rdf.model.*;
014: import com.hp.hpl.jena.rdf.model.impl.PropertyImpl;
015: import com.hp.hpl.jena.vocabulary.*;
016:
017: /**
018: * Factory class for creating blank instances of the RDFS reasoner.
019: *
020: * @deprecated Obsoleted at jena2p4, replaced by
021: * {@link com.hp.hpl.jena.reasoner.rulesys.RDFSRuleReasonerFactory}.
022: *
023: * @author <a href="mailto:der@hplb.hpl.hp.com">Dave Reynolds</a>
024: * @version $Revision: 1.20 $ on $Date: 2008/01/02 12:06:44 $
025: */
026: public class RDFSReasonerFactory implements ReasonerFactory {
027:
028: /** Single global instance of this factory */
029: private static ReasonerFactory theInstance = new RDFSReasonerFactory();
030:
031: /** Static URI for this reasoner type */
032: public static final String URI = "http://jena.hpl.hp.com/2003/RDFSReasoner1";
033:
034: /** Cache of the capabilities description */
035: protected Model capabilities;
036:
037: /** Property used to configure the scan behaviour of the reasoner.
038: * Set to "true" to enable scanning of triples looking for rdf:_1 assertions. */
039: public static final Property scanProperties = new PropertyImpl(URI
040: + "#", "scanProperties");
041:
042: /**
043: * Return the single global instance of this factory
044: */
045: public static ReasonerFactory theInstance() {
046: return theInstance;
047: }
048:
049: /**
050: * Constructor method that builds an instance of the associated Reasoner
051: * @param configuration a set of arbitrary configuration information to be
052: * passed the reasoner, encoded as RDF properties of a base configuration resource,
053: * can be null in no custom configuration is required.
054: */
055: public Reasoner create(Resource configuration) {
056: return new RDFSReasoner(configuration);
057: }
058:
059: /**
060: * Return a description of the capabilities of this reasoner encoded in
061: * RDF. This method is normally called by the ReasonerRegistry which caches
062: * the resulting information so dynamically creating here is not really an overhead.
063: */
064: public Model getCapabilities() {
065: if (capabilities == null) {
066: capabilities = ModelFactory.createDefaultModel();
067: Resource base = capabilities.createResource(getURI());
068: base
069: .addProperty(ReasonerVocabulary.nameP,
070: "RDFS Reasoner 1")
071: .addProperty(
072: ReasonerVocabulary.descriptionP,
073: "Complete RDFS implementation supporting metalevel statements.\n"
074: + "Eager caching of schema information, back chaining for most entailments\n"
075: + "Can separate tbox and abox data if desired to reuse tbox caching or mix them.")
076: .addProperty(ReasonerVocabulary.configurationP,
077: scanProperties).addProperty(
078: ReasonerVocabulary.supportsP,
079: RDFS.subClassOf).addProperty(
080: ReasonerVocabulary.supportsP,
081: RDFS.subPropertyOf).addProperty(
082: ReasonerVocabulary.supportsP, RDFS.member)
083: .addProperty(ReasonerVocabulary.supportsP,
084: RDFS.range).addProperty(
085: ReasonerVocabulary.supportsP, RDFS.domain)
086: .addProperty(
087: ReasonerVocabulary.supportsP,
088: TransitiveReasoner.directSubClassOf
089: .toString()) // TODO -- typing
090: .addProperty(
091: ReasonerVocabulary.supportsP,
092: TransitiveReasoner.directSubPropertyOf
093: .toString()) // TODO -- typing
094: .addProperty(ReasonerVocabulary.versionP, "0.1");
095: }
096: return capabilities;
097: }
098:
099: /**
100: * Return the URI labelling this type of reasoner
101: */
102: public String getURI() {
103: return URI;
104: }
105:
106: /**
107: * Temporary testing hack
108: */
109: public static void main(String[] args) {
110: Resource rdfsDescr = ReasonerRegistry.theRegistry()
111: .getDescription(URI);
112: System.out.println("Reasoner: " + rdfsDescr);
113: for (StmtIterator i = rdfsDescr.listProperties(); i.hasNext();) {
114: Statement s = i.nextStatement();
115: System.out.println(s.getPredicate().getLocalName() + " = "
116: + s.getObject());
117: }
118: }
119: }
120:
121: /*
122: (c) Copyright 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
123: All rights reserved.
124:
125: Redistribution and use in source and binary forms, with or without
126: modification, are permitted provided that the following conditions
127: are met:
128:
129: 1. Redistributions of source code must retain the above copyright
130: notice, this list of conditions and the following disclaimer.
131:
132: 2. Redistributions in binary form must reproduce the above copyright
133: notice, this list of conditions and the following disclaimer in the
134: documentation and/or other materials provided with the distribution.
135:
136: 3. The name of the author may not be used to endorse or promote products
137: derived from this software without specific prior written permission.
138:
139: THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
140: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
141: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
142: IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
143: INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
144: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
145: DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
146: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
147: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
148: THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
149: */
|