001: /*****************************************************************************
002: * Source code information
003: * -----------------------
004: * Original author Ian Dickinson, HP Labs Bristol
005: * Author email Ian.Dickinson@hp.com
006: * Package Jena 2
007: * Web http://sourceforge.net/projects/jena/
008: * Created 06-Mar-2003
009: * Filename $RCSfile: ProfileRegistry.java,v $
010: * Revision $Revision: 1.13 $
011: * Release status $State: Exp $
012: *
013: * Last modified on $Date: 2008/01/02 12:06:41 $
014: * by $Author: andy_seaborne $
015: *
016: * (c) Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
017: * (see footer for full conditions)
018: *****************************************************************************/package com.hp.hpl.jena.ontology;
019:
020: // Imports
021: ///////////////
022: import com.hp.hpl.jena.ontology.impl.*;
023: import com.hp.hpl.jena.vocabulary.*;
024:
025: import java.util.*;
026:
027: /**
028: * <p>
029: * Provides a means to map between the URI's that represent ontology languages
030: * and their language profiles.
031: * </p>
032: *
033: * @author Ian Dickinson, HP Labs
034: * (<a href="mailto:Ian.Dickinson@hp.com" >email</a>)
035: * @version CVS $Id: ProfileRegistry.java,v 1.13 2008/01/02 12:06:41 andy_seaborne Exp $
036: */
037: public class ProfileRegistry {
038: // Constants
039: //////////////////////////////////
040:
041: /** The URI that maps to the language profile for OWL-Full */
042: public static final String OWL_LANG = OWL.FULL_LANG.getURI();
043:
044: /** The URI that maps to the language profile for OWL-DL */
045: public static final String OWL_DL_LANG = OWL.DL_LANG.getURI();
046:
047: /** The URI that maps to the language profile for OWL-Lite */
048: public static final String OWL_LITE_LANG = OWL.LITE_LANG.getURI();
049:
050: /** The URI that maps to the language profile for DAML+OIL */
051: public static final String DAML_LANG = DAML_OIL.NAMESPACE_DAML_2001_03_URI;
052:
053: /** The URI that maps to the language profile for RDFS */
054: public static final String RDFS_LANG = RDFS.getURI();
055:
056: // Static variables
057: //////////////////////////////////
058:
059: private static Object[][] s_initData = new Object[][] {
060: { OWL_LANG, new OWLProfile() },
061: { OWL_DL_LANG, new OWLDLProfile() },
062: { OWL_LITE_LANG, new OWLLiteProfile() },
063: { DAML_LANG, new DAML_OILProfile() },
064: { RDFS_LANG, new RDFSProfile() } };
065:
066: /** Singleton instance */
067: private static ProfileRegistry s_instance = new ProfileRegistry();
068:
069: // Instance variables
070: //////////////////////////////////
071:
072: /** Maps from public URI's to language profiles */
073: private Map m_registry = new HashMap();
074:
075: // Constructors
076: //////////////////////////////////
077:
078: /**
079: * <p>
080: * Singleton constructor
081: * </p>
082: */
083: private ProfileRegistry() {
084: for (int i = 0; i < s_initData.length; i++) {
085: registerProfile((String) s_initData[i][0],
086: (Profile) s_initData[i][1]);
087: }
088: }
089:
090: // External signature methods
091: //////////////////////////////////
092:
093: /**
094: * <p>
095: * Answer the singleton instance
096: * </p>
097: *
098: * @return The singleton registry
099: */
100: public static ProfileRegistry getInstance() {
101: return s_instance;
102: }
103:
104: /**
105: * <p>
106: * Add a language profile with the given URI key
107: * </p>
108: *
109: * @param uri The URI denoting the language
110: * @param profile The language profile for the language
111: */
112: public void registerProfile(String uri, Profile profile) {
113: m_registry.put(uri, profile);
114: }
115:
116: /**
117: * <p>
118: * Answer the language profile for the given language URI, or null if not known.
119: * </p>
120: *
121: * @param uri A URI denoting an ontology language
122: * @return An ontology langugae profile for that language
123: */
124: public Profile getProfile(String uri) {
125: return (Profile) m_registry.get(uri);
126: }
127:
128: // Internal implementation methods
129: //////////////////////////////////
130:
131: //==============================================================================
132: // Inner class definitions
133: //==============================================================================
134:
135: }
136:
137: /*
138: (c) Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
139: All rights reserved.
140:
141: Redistribution and use in source and binary forms, with or without
142: modification, are permitted provided that the following conditions
143: are met:
144:
145: 1. Redistributions of source code must retain the above copyright
146: notice, this list of conditions and the following disclaimer.
147:
148: 2. Redistributions in binary form must reproduce the above copyright
149: notice, this list of conditions and the following disclaimer in the
150: documentation and/or other materials provided with the distribution.
151:
152: 3. The name of the author may not be used to endorse or promote products
153: derived from this software without specific prior written permission.
154:
155: THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
156: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
157: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
158: IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
159: INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
160: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
161: DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
162: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
163: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
164: THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
165: */
|