⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ontologyimpl.java

📁 jena2.5.4推理机系统的一种最基本实现 HP实验室出品
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*****************************************************************************
 * Source code information
 * -----------------------
 * Original author    Ian Dickinson, HP Labs Bristol
 * Author email       Ian.Dickinson@hp.com
 * Package            Jena 2
 * Web                http://sourceforge.net/projects/jena/
 * Created            25-Mar-2003
 * Filename           $RCSfile: OntologyImpl.java,v $
 * Revision           $Revision: 1.14 $
 * Release status     $State: Exp $
 *
 * Last modified on   $Date: 2007/01/02 11:49:47 $
 *               by   $Author: andy_seaborne $
 *
 * (c) Copyright 2002, 2003, 2004, 2005, 2006, 2007 Hewlett-Packard Development Company, LP
 * (see footer for full conditions)
 *****************************************************************************/

// Package
///////////////
package com.hp.hpl.jena.ontology.impl;


// Imports
///////////////
import com.hp.hpl.jena.enhanced.*;
import com.hp.hpl.jena.graph.Node;
import com.hp.hpl.jena.ontology.*;
import com.hp.hpl.jena.rdf.model.*;
import com.hp.hpl.jena.util.iterator.ExtendedIterator;


/**
 * <p>
 * Implementation of the Ontology interface, encapsulating nodes that hold the
 * meta-data about whole ontologies.
 * </p>
 *
 * @author Ian Dickinson, HP Labs
 *         (<a  href="mailto:Ian.Dickinson@hp.com" >email</a>)
 * @version CVS $Id: OntologyImpl.java,v 1.14 2007/01/02 11:49:47 andy_seaborne Exp $
 */
public class OntologyImpl
    extends OntResourceImpl
    implements Ontology 
{
    // Constants
    //////////////////////////////////


    // Static variables
    //////////////////////////////////

    /**
     * A factory for generating Ontology facets from nodes in enhanced graphs.
     */
    public static Implementation factory = new Implementation() {
        public EnhNode wrap( Node n, EnhGraph eg ) { 
            if (canWrap( n, eg )) {
                return new OntologyImpl( n, eg );
            }
            else {
                throw new ConversionException( "Cannot convert node " + n + " to Ontology");
            } 
        }
            
        public boolean canWrap( Node node, EnhGraph eg ) {
            // node will support being an Ontology facet if it has rdf:type owl:Ontology or equivalent
            Profile profile = (eg instanceof OntModel) ? ((OntModel) eg).getProfile() : null;
            return (profile != null)  &&  profile.isSupported( node, eg, Ontology.class );
        }
    };



    // Instance variables
    //////////////////////////////////

    // Constructors
    //////////////////////////////////

    /**
     * <p>
     * Construct an ontology metadata node represented by the given node in the given graph.
     * </p>
     * 
     * @param n The node that represents the resource
     * @param g The enh graph that contains n
     */
    public OntologyImpl( Node n, EnhGraph g ) {
        super( n, g );
    }


    // External signature methods
    //////////////////////////////////

    // imports
    
    /**
     * <p>Assert that this ontology imports only the given ontology. Any existing 
     * statements for <code>sameAs</code> will be removed.</p>
     * @param res Represents a resource that this ontology imports.
     * @exception OntProfileException If the {@link Profile#IMPORTS()()} property is not supported in the current language profile.   
     */ 
    public void setImport( Resource res ) {
        setPropertyValue( getProfile().IMPORTS(), "IMPORTS", res );
    }

    /**
     * <p>Add a resource representing an ontology that this ontology 
     * (strictly, the ontology reprsented by this node) imports.</p>
     * @param res Represents a resource that this ontology imports.
     * @exception OntProfileException If the {@link Profile#IMPORTS()()} property is not supported in the current language profile.   
     */ 
    public void addImport( Resource res ) {
        addPropertyValue( getProfile().IMPORTS(), "IMPORTS", res );
    }

    /**
     * <p>Answer a resource that represents an ontology imported by this ontology. If there is
     * more than one such resource, an arbitrary selection is made.</p>
     * @return An ont resource representing a resource that this ontology imports
     * @exception OntProfileException If the {@link Profile#IMPORTS()()} property is not supported in the current language profile.   
     */ 
    public OntResource getImport() {
        return objectAsResource( getProfile().IMPORTS(), "IMPORTS" );
    }

    /**
     * <p>Answer an iterator over all of the resources representing ontologies imported by this ontology. 
     * Each elemeent of the iterator will be an {@link OntResource}.</p>
     * @return An iterator over the ontology import resources
     * @exception OntProfileException If the {@link Profile#IMPORTS()()} property is not supported in the current language profile.   
     */ 
    public ExtendedIterator listImports() {
        return listAs( getProfile().IMPORTS(), "IMPORTS", OntResource.class );
    }

    /**
     * <p>Answer true if this ontology (the ontology represented by this 
     * resource) imports the given resource.</p>
     * @param res A resource to test against
     * @return True if this ontology imports the ontology represented by <code>res</code>
     */
    public boolean imports( Resource res ) {
        return hasPropertyValue( getProfile().IMPORTS(), "IMPORTS", res );
    }
    
    /**
     * <p>Remove the statement that this ontology imports the ontology represented by the given resource.  If this statement
     * is not true of the current model, nothing happens.</p>
     * @param res A resource that represents an ontology that is no longer to be imported
     */
    public void removeImport( Resource res ) {
        removePropertyValue( getProfile().IMPORTS(), "IMPORTS", res );
    }
    

    // backwardCompatibleWith
    
    /**
     * <p>Assert that this ontology is backward compatible with the given ontology. Any existing 
     * statements for <code>sameAs</code> will be removed.</p>
     * @param res Represents a resource that this ontology is compatible with.
     * @exception OntProfileException If the {@link Profile#BACKWARD_COMPATIBLE_WITH} property is not supported in the current language profile.   
     */ 
    public void setBackwardCompatibleWith( Resource res ) {
        setPropertyValue( getProfile().BACKWARD_COMPATIBLE_WITH(), "BACKWARD_COMPATIBLE_WITH", res );
    }

    /**
     * <p>Add a resource representing an ontology that this ontology 
     * (strictly, the ontology reprsented by this node) is backwards compatible with.</p>
     * @param res Represents a resource that this ontology is compatible with.
     * @exception OntProfileException If the {@link Profile#BACKWARD_COMPATIBLE_WITH} property is not supported in the current language profile.   
     */ 
    public void addBackwardCompatibleWith( Resource res ) {
        addPropertyValue( getProfile().BACKWARD_COMPATIBLE_WITH(), "BACKWARD_COMPATIBLE_WITH", res );
    }

    /**
     * <p>Answer a resource that represents an ontology that is backwards compatible with this ontology. If there is
     * more than one such resource, an arbitrary selection is made.</p>
     * @return An ont resource representing an ontology that this ontology is compatible with
     * @exception OntProfileException If the {@link Profile#BACKWARD_COMPATIBLE_WITH} property is not supported in the current language profile.   
     */ 
    public OntResource getBackwardCompatibleWith() {
        return objectAsResource( getProfile().BACKWARD_COMPATIBLE_WITH(), "BACKWARD_COMPATIBLE_WITH" );
    }

    /**
     * <p>Answer an iterator over all of the resources representing 
     * ontologies that this ontology is backwards compatible with. 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -