001/* 002 * GeoAPI - Java interfaces for OGC/ISO standards 003 * Copyright © 2014-2023 Open Geospatial Consortium, Inc. 004 * http://www.geoapi.org 005 * 006 * Licensed under the Apache License, Version 2.0 (the "License"); 007 * you may not use this file except in compliance with the License. 008 * You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package org.opengis.metadata.identification; 019 020import java.net.URI; 021import org.opengis.annotation.UML; 022import org.opengis.metadata.citation.Citation; 023import org.opengis.util.InternationalString; 024 025import static org.opengis.annotation.Obligation.*; 026import static org.opengis.annotation.Specification.ISO_19115; 027 028 029/** 030 * Specification of a class to categorize keywords in a domain-specific 031 * vocabulary that has a binding to a formal ontology. 032 * 033 * @author Rémi Maréchal (Geomatys) 034 * @version 3.1 035 * @since 3.1 036 * 037 * @see Keywords#getKeywordClass() 038 */ 039@UML(identifier="MD_KeywordClass", specification=ISO_19115) 040public interface KeywordClass { 041 /** 042 * A character string to label the keyword category in natural language. 043 * 044 * @return the keyword category in natural language. 045 */ 046 @UML(identifier="className", obligation=MANDATORY, specification=ISO_19115) 047 InternationalString getClassName(); 048 049 /** 050 * URI of concept in the ontology specified by the {@linkplain #getOntology() ontology} citation 051 * and labeled by the {@linkplain #getClassName() class name}. 052 * 053 * @return URI of concept in the ontology, or {@code null} if none. 054 */ 055 @UML(identifier="conceptIdentifier", obligation=OPTIONAL, specification=ISO_19115) 056 default URI getConceptIdentifier() { 057 return null; 058 } 059 060 /** 061 * A reference that binds the keyword class to a formal conceptualization 062 * of a knowledge domain for use in semantic processing. 063 * 064 * <div class="note"><b>Note:</b> 065 * {@linkplain Keywords#getKeywords() keywords} in the associated {@link Keywords} list 066 * must be within the scope of this ontology. 067 * </div> 068 * 069 * @return a reference that binds the keyword class to a formal conceptualization. 070 */ 071 @UML(identifier="ontology", obligation=MANDATORY, specification=ISO_19115) 072 Citation getOntology(); 073}