/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.any23.vocab;

import org.eclipse.rdf4j.model.IRI;

/**
 * <p>
 * An implementation of the <a href="https://github.com/RinkeHoekstra/lkif-core">lkif-core</a> vocabulary which is a
 * library of ontologies relevant for the legal domain. The library consists of 15 modules, each of which describes a
 * set of closely related concepts from both legal and commonsense domains.
 * </p>
 *
 * <p>
 * The expression module describes a vocabulary for describing, propositions and propositional attitudes (belief,
 * intention), qualifications, statements and media. It furthermore extends the role module with a number or epistemic
 * roles, and is the basis for the definition of norms.
 * </p>
 *
 * @author lewismc
 */
public class LKIFCoreExpression extends Vocabulary {

    /**
     * The namespace of the vocabulary as a string.
     */
    public static final String NS = "http://www.estrellaproject.org/lkif-core/expression.owl#";

    private static LKIFCoreExpression instance;

    public static LKIFCoreExpression getInstance() {
        if (instance == null) {
            instance = new LKIFCoreExpression();
        }
        return instance;
    }

    /////////////////////////////////////////////////////////////
    /* http://www.estrellaproject.org/lkif-core/expression.owl */
    /////////////////////////////////////////////////////////////
    // CLASSES
    public final IRI Argument = createClass(NS, "Argument");
    public final IRI Assertion = createClass(NS, "Assertion");
    public final IRI Assumption = createClass(NS, "Assumption");
    public final IRI Belief = createClass(NS, "Belief");
    public final IRI Cause = createClass(NS, "Cause");
    public final IRI Communicated_Attitude = createClass(NS, "Communicated_Attitude");
    public final IRI Declaration = createClass(NS, "Declaration");
    public final IRI Desire = createClass(NS, "Desire");
    public final IRI Document = createClass(NS, "Document");
    public final IRI Evaluative_Attitude = createClass(NS, "Evaluative_Attitude");
    public final IRI Evaluative_Proposition = createClass(NS, "Evaluative_Proposition");
    public final IRI Evidence = createClass(NS, "Evidence");
    public final IRI Exception = createClass(NS, "Exception");
    public final IRI Expectation = createClass(NS, "Expectation");
    public final IRI Expression = createClass(NS, "Expression");
    public final IRI Fact = createClass(NS, "Fact");
    public final IRI Intention = createClass(NS, "Intention");
    public final IRI Lie = createClass(NS, "Lie");
    public final IRI Medium = createClass(NS, "Medium");
    public final IRI Observation = createClass(NS, "Observation");
    public final IRI Problem = createClass(NS, "Problem");
    public final IRI Promise = createClass(NS, "Promise");
    public final IRI Proposition = createClass(NS, "Proposition");
    public final IRI Propositional_Attitude = createClass(NS, "Propositional_Attitude");
    public final IRI Qualification = createClass(NS, "Qualification");
    public final IRI Qualified = createClass(NS, "Qualified");
    public final IRI Reason = createClass(NS, "Reason");
    public final IRI Speech_Act = createClass(NS, "Speech_Act");
    public final IRI Statement_In_Writing = createClass(NS, "Statement_In_Writing");
    public final IRI Surprise = createClass(NS, "Surprise");

    // RESOURCES

    // PROPERTIES
    public final IRI addressee = createProperty(NS, "addressee");
    public final IRI asserted_by = createProperty(NS, "asserted_by");
    public final IRI asserts = createProperty(NS, "asserts");
    public final IRI attitude = createProperty(NS, "attitude");
    public final IRI author = createProperty(NS, "author");
    public final IRI bears = createProperty(NS, "bears");
    public final IRI believed_by = createProperty(NS, "believed_by");
    public final IRI believes = createProperty(NS, "believes");
    public final IRI declares = createProperty(NS, "declares");
    public final IRI declared_by = createProperty(NS, "declared_by");
    public final IRI evaluated_by = createProperty(NS, "evaluated_by");
    public final IRI evaluates = createProperty(NS, "evaluates");
    public final IRI evaluatively_comparable = createProperty(NS, "evaluatively_comparable");
    public final IRI held_by = createProperty(NS, "held_by");
    public final IRI holds = createProperty(NS, "holds");
    public final IRI intended_by = createProperty(NS, "intended_by");
    public final IRI intends = createProperty(NS, "intends");
    public final IRI medium = createProperty(NS, "medium");
    public final IRI observer = createProperty(NS, "observer");
    public final IRI observes = createProperty(NS, "observes");
    public final IRI promised_by = createProperty(NS, "promised_by");
    public final IRI promises = createProperty(NS, "promises");
    public final IRI qualified_by = createProperty(NS, "qualified_by");
    public final IRI qualifies = createProperty(NS, "qualifies");
    public final IRI qualitatively_comparable = createProperty(NS, "qualitatively_comparable");
    public final IRI stated_by = createProperty(NS, "stated_by");
    public final IRI states = createProperty(NS, "states");
    public final IRI towards = createProperty(NS, "towards");
    public final IRI utterer = createProperty(NS, "utterer");
    public final IRI utters = createProperty(NS, "utters");
    public final IRI creation = createProperty(NS, "creation");
    public final IRI counts_as = createProperty(NS, "counts_as");
    public final IRI imposed_on = createProperty(NS, "imposed_on");
    public final IRI played_by = createProperty(NS, "played_by");
    public final IRI plays = createProperty(NS, "plays");

    private LKIFCoreExpression() {
        super(NS);
    }

}
