All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.xowl.infra.lang.runtime.ObjectProperty Maven / Gradle / Ivy

There is a newer version: 2.3.4
Show newest version
/* This file has been generated by:
   xOWL Code Generator
*/
package org.xowl.infra.lang.runtime;

public class ObjectProperty implements org.xowl.infra.lang.runtime.Property {
    // 
    private static class subPropertyOf_impl implements org.xowl.infra.lang.runtime.Property.subPropertyOf {
        private org.xowl.infra.lang.runtime.ObjectProperty domain;
        private java.util.List data;
        public java.util.Collection get_raw() { return new java.util.ArrayList(data); }
        public java.util.Collection get() { return new java.util.ArrayList(data); }
        private boolean check_card(int modifier) {
            int card = data.size() + 0 + modifier;
            return (card >= 0 && card <= 2147483647);
        }
        public boolean check_contains(org.xowl.infra.lang.runtime.ObjectProperty elem) { return (data.contains(elem)); }
        @Override public boolean check_contains(org.xowl.infra.lang.runtime.Property elem) {
            if (!(elem instanceof org.xowl.infra.lang.runtime.ObjectProperty)) return false;
            return (data.contains((org.xowl.infra.lang.runtime.ObjectProperty)elem));
        }
        public boolean simple_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (check_contains(elem)) return false;
            if (!check_card(1)) return false;
            return true;
        }
        public boolean simple_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!check_contains(elem)) return false;
            if (!check_card(-1)) return false;
            return true;
        }
        public boolean simple_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            if (check_contains(newElem)) return false;
            if (!check_contains(oldElem)) return false;
            return true;
        }
        public void simple_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            data.add(elem);
        }
        public void simple_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            data.remove(elem);
        }
        private boolean tree_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!simple_check_add(elem)) return false;
            return true;
        }
        private boolean tree_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!simple_check_remove(elem)) return false;
            return true;
        }
        private boolean tree_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            if (!simple_check_replace(oldElem, newElem)) return false;
            return true;
        }
        private void tree_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            simple_add(elem);
        }
        private void tree_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            simple_remove(elem);
        }
        public boolean user_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!elem.__getImplOfsuperPropertyOf().inverse_check_add(domain)) return false;
            return tree_check_add(elem);
        }
        public boolean user_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!elem.__getImplOfsuperPropertyOf().inverse_check_remove(domain)) return false;
            return tree_check_remove(elem);
        }
        public boolean user_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            if (!oldElem.__getImplOfsuperPropertyOf().inverse_check_remove(domain)) return false;
            if (!newElem.__getImplOfsuperPropertyOf().inverse_check_add(domain)) return false;
            return tree_check_replace(oldElem, newElem);
        }
        public void user_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            elem.__getImplOfsuperPropertyOf().inverse_add(domain);
            tree_add(elem);
        }
        public void user_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            elem.__getImplOfsuperPropertyOf().inverse_remove(domain);
            tree_remove(elem);
        }
        @Override public boolean user_check_add(org.xowl.infra.lang.runtime.Property elem) { return user_check_add((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public boolean user_check_remove(org.xowl.infra.lang.runtime.Property elem) { return user_check_remove((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public boolean user_check_replace(org.xowl.infra.lang.runtime.Property oldElem, org.xowl.infra.lang.runtime.Property  newElem) { return user_check_replace((org.xowl.infra.lang.runtime.ObjectProperty)oldElem, (org.xowl.infra.lang.runtime.ObjectProperty)newElem); }
        @Override public void user_add(org.xowl.infra.lang.runtime.Property elem) { user_add((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public void user_remove(org.xowl.infra.lang.runtime.Property elem) { user_remove((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        public boolean inverse_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            return tree_check_add(elem);
        }
        public boolean inverse_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            return tree_check_remove(elem);
        }
        public boolean inverse_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        public void inverse_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            tree_add(elem);
        }
        public void inverse_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            tree_remove(elem);
        }
        @Override public boolean inverse_check_add(org.xowl.infra.lang.runtime.Property elem) { return inverse_check_add((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public boolean inverse_check_remove(org.xowl.infra.lang.runtime.Property elem) { return inverse_check_remove((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public boolean inverse_check_replace(org.xowl.infra.lang.runtime.Property oldElem, org.xowl.infra.lang.runtime.Property  newElem) { return inverse_check_replace((org.xowl.infra.lang.runtime.ObjectProperty)oldElem, (org.xowl.infra.lang.runtime.ObjectProperty)newElem); }
        @Override public void inverse_add(org.xowl.infra.lang.runtime.Property elem) { inverse_add((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public void inverse_remove(org.xowl.infra.lang.runtime.Property elem) { inverse_remove((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        public subPropertyOf_impl(org.xowl.infra.lang.runtime.ObjectProperty domain) {
            this.domain = domain;
            this.data = new java.util.ArrayList();
        }
    }
    private subPropertyOf_impl dataSubPropertyOf;
    public org.xowl.infra.lang.runtime.Property.subPropertyOf __getImplOfsubPropertyOf() { return dataSubPropertyOf; }
    public boolean addSubPropertyOf(org.xowl.infra.lang.runtime.Property elem) {
        org.xowl.infra.lang.runtime.ObjectProperty value = (org.xowl.infra.lang.runtime.ObjectProperty)elem;
        if (!dataSubPropertyOf.user_check_add(value)) return false;
        dataSubPropertyOf.user_add(value);
        return true;
    }
    public boolean removeSubPropertyOf(org.xowl.infra.lang.runtime.Property elem) {
        org.xowl.infra.lang.runtime.ObjectProperty value = (org.xowl.infra.lang.runtime.ObjectProperty)elem;
        if (!dataSubPropertyOf.user_check_remove(value)) return false;
        dataSubPropertyOf.user_remove(value);
        return true;
    }
    public java.util.Collection getAllSubPropertyOfAs(org.xowl.infra.lang.runtime.Property type) {
        java.util.List result = new java.util.ArrayList();
        for (org.xowl.infra.lang.runtime.ObjectProperty value : dataSubPropertyOf.get())
            result.add(value);
        return result;
    }
    public boolean addSubPropertyOf(org.xowl.infra.lang.runtime.ObjectProperty elem) {
        if (!dataSubPropertyOf.user_check_add(elem)) return false;
        dataSubPropertyOf.user_add(elem);
        return true;
    }
    public boolean removeSubPropertyOf(org.xowl.infra.lang.runtime.ObjectProperty elem) {
        if (!dataSubPropertyOf.user_check_remove(elem)) return false;
        dataSubPropertyOf.user_remove(elem);
        return true;
    }
    public java.util.Collection getAllSubPropertyOfAs(org.xowl.infra.lang.runtime.ObjectProperty type) { return dataSubPropertyOf.get(); }
    // 

    // 
    public static interface isIrreflexive {
        boolean check_contains(java.lang.Boolean elem);
        boolean user_check_add(java.lang.Boolean elem);
        boolean user_check_remove(java.lang.Boolean elem);
        boolean user_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem);
        void user_add(java.lang.Boolean elem);
        void user_remove(java.lang.Boolean elem);
        boolean inverse_check_add(java.lang.Boolean elem);
        boolean inverse_check_remove(java.lang.Boolean elem);
        boolean inverse_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem);
        void inverse_add(java.lang.Boolean elem);
        void inverse_remove(java.lang.Boolean elem);
    }
    private static class isIrreflexive_impl implements org.xowl.infra.lang.runtime.ObjectProperty.isIrreflexive {
        private org.xowl.infra.lang.runtime.ObjectProperty domain;
        private java.lang.Boolean data;
        public java.lang.Boolean get_raw() { return data; }
        public java.lang.Boolean get() { return data; }
        private boolean check_card(int modifier) {
            int card = modifier + 0;
            if (data != null) card++;
            return (card >= 0 && card <= 1);
        }
        @Override public boolean check_contains(java.lang.Boolean elem) { return data.equals(elem); }
        public boolean simple_check_add(java.lang.Boolean elem) {
            if (check_contains(elem)) return false;
            if (!check_card(1)) return false;
            return true;
        }
        public boolean simple_check_remove(java.lang.Boolean elem) {
            if (!check_contains(elem)) return false;
            if (!check_card(-1)) return false;
            return true;
        }
        public boolean simple_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            if (check_contains(newElem)) return false;
            if (!check_contains(oldElem)) return false;
            return true;
        }
        public void simple_add(java.lang.Boolean elem) {
            data = elem;
        }
        public void simple_remove(java.lang.Boolean elem) {
            data = null;
        }
        private boolean tree_check_add(java.lang.Boolean elem) {
            if (!simple_check_add(elem)) return false;
            return true;
        }
        private boolean tree_check_remove(java.lang.Boolean elem) {
            if (!simple_check_remove(elem)) return false;
            return true;
        }
        private boolean tree_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            if (!simple_check_replace(oldElem, newElem)) return false;
            return true;
        }
        private void tree_add(java.lang.Boolean elem) {
            simple_add(elem);
        }
        private void tree_remove(java.lang.Boolean elem) {
            simple_remove(elem);
        }
        @Override public boolean user_check_add(java.lang.Boolean elem) {
            return tree_check_add(elem);
        }
        @Override public boolean user_check_remove(java.lang.Boolean elem) {
            return tree_check_remove(elem);
        }
        @Override public boolean user_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        @Override public void user_add(java.lang.Boolean elem) {
            tree_add(elem);
        }
        @Override public void user_remove(java.lang.Boolean elem) {
            tree_remove(elem);
        }
        @Override public boolean inverse_check_add(java.lang.Boolean elem) {
            return tree_check_add(elem);
        }
        @Override public boolean inverse_check_remove(java.lang.Boolean elem) {
            return tree_check_remove(elem);
        }
        @Override public boolean inverse_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        @Override public void inverse_add(java.lang.Boolean elem) {
            tree_add(elem);
        }
        @Override public void inverse_remove(java.lang.Boolean elem) {
            tree_remove(elem);
        }
        public isIrreflexive_impl(org.xowl.infra.lang.runtime.ObjectProperty domain) {
            this.domain = domain;
        }
    }
    private isIrreflexive_impl dataIsIrreflexive;
    public org.xowl.infra.lang.runtime.ObjectProperty.isIrreflexive __getImplOfisIrreflexive() { return dataIsIrreflexive; }
    public boolean setIsIrreflexive(java.lang.Boolean elem) {
        dataIsIrreflexive.simple_add(elem);
        return true;
    }
    public java.lang.Boolean getIsIrreflexive() { return dataIsIrreflexive.get(); }
    // 

    // 
    private static class interpretationOf_impl implements org.xowl.infra.lang.runtime.Interpretation.interpretationOf {
        private org.xowl.infra.lang.runtime.ObjectProperty domain;
        private org.xowl.infra.lang.runtime.Entity data;
        public org.xowl.infra.lang.runtime.Entity get_raw() { return data; }
        public org.xowl.infra.lang.runtime.Entity get() { return data; }
        private boolean check_card(int modifier) {
            int card = modifier + 0;
            if (data != null) card++;
            return (card >= 0 && card <= 1);
        }
        @Override public boolean check_contains(org.xowl.infra.lang.runtime.Entity elem) { return (data == elem); }
        public boolean simple_check_add(org.xowl.infra.lang.runtime.Entity elem) {
            if (check_contains(elem)) return false;
            if (!check_card(1)) return false;
            return true;
        }
        public boolean simple_check_remove(org.xowl.infra.lang.runtime.Entity elem) {
            if (!check_contains(elem)) return false;
            if (!check_card(-1)) return false;
            return true;
        }
        public boolean simple_check_replace(org.xowl.infra.lang.runtime.Entity oldElem, org.xowl.infra.lang.runtime.Entity  newElem) {
            if (check_contains(newElem)) return false;
            if (!check_contains(oldElem)) return false;
            return true;
        }
        public void simple_add(org.xowl.infra.lang.runtime.Entity elem) {
            data = elem;
        }
        public void simple_remove(org.xowl.infra.lang.runtime.Entity elem) {
            data = null;
        }
        private boolean tree_check_add(org.xowl.infra.lang.runtime.Entity elem) {
            if (!simple_check_add(elem)) return false;
            return true;
        }
        private boolean tree_check_remove(org.xowl.infra.lang.runtime.Entity elem) {
            if (!simple_check_remove(elem)) return false;
            return true;
        }
        private boolean tree_check_replace(org.xowl.infra.lang.runtime.Entity oldElem, org.xowl.infra.lang.runtime.Entity  newElem) {
            if (!simple_check_replace(oldElem, newElem)) return false;
            return true;
        }
        private void tree_add(org.xowl.infra.lang.runtime.Entity elem) {
            simple_add(elem);
        }
        private void tree_remove(org.xowl.infra.lang.runtime.Entity elem) {
            simple_remove(elem);
        }
        @Override public boolean user_check_add(org.xowl.infra.lang.runtime.Entity elem) {
            if (!elem.__getImplOfinterpretedAs().inverse_check_add(domain)) return false;
            return tree_check_add(elem);
        }
        @Override public boolean user_check_remove(org.xowl.infra.lang.runtime.Entity elem) {
            if (!elem.__getImplOfinterpretedAs().inverse_check_remove(domain)) return false;
            return tree_check_remove(elem);
        }
        @Override public boolean user_check_replace(org.xowl.infra.lang.runtime.Entity oldElem, org.xowl.infra.lang.runtime.Entity  newElem) {
            if (!oldElem.__getImplOfinterpretedAs().inverse_check_remove(domain)) return false;
            if (!newElem.__getImplOfinterpretedAs().inverse_check_add(domain)) return false;
            return tree_check_replace(oldElem, newElem);
        }
        @Override public void user_add(org.xowl.infra.lang.runtime.Entity elem) {
            elem.__getImplOfinterpretedAs().inverse_add(domain);
            tree_add(elem);
        }
        @Override public void user_remove(org.xowl.infra.lang.runtime.Entity elem) {
            elem.__getImplOfinterpretedAs().inverse_remove(domain);
            tree_remove(elem);
        }
        @Override public boolean inverse_check_add(org.xowl.infra.lang.runtime.Entity elem) {
            return tree_check_add(elem);
        }
        @Override public boolean inverse_check_remove(org.xowl.infra.lang.runtime.Entity elem) {
            return tree_check_remove(elem);
        }
        @Override public boolean inverse_check_replace(org.xowl.infra.lang.runtime.Entity oldElem, org.xowl.infra.lang.runtime.Entity  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        @Override public void inverse_add(org.xowl.infra.lang.runtime.Entity elem) {
            tree_add(elem);
        }
        @Override public void inverse_remove(org.xowl.infra.lang.runtime.Entity elem) {
            tree_remove(elem);
        }
        public interpretationOf_impl(org.xowl.infra.lang.runtime.ObjectProperty domain) {
            this.domain = domain;
        }
    }
    private interpretationOf_impl dataInterpretationOf;
    public org.xowl.infra.lang.runtime.Interpretation.interpretationOf __getImplOfinterpretationOf() { return dataInterpretationOf; }
    public boolean setInterpretationOf(org.xowl.infra.lang.runtime.Entity elem) {
        if (dataInterpretationOf.get() != null) {
            if (elem == null) {
                if (!dataInterpretationOf.user_check_remove(dataInterpretationOf.get())) return false;
                dataInterpretationOf.user_remove(dataInterpretationOf.get());
            } else {
                if (!dataInterpretationOf.user_check_replace(dataInterpretationOf.get(), elem)) return false;
                dataInterpretationOf.user_remove(dataInterpretationOf.get());
                dataInterpretationOf.user_add(elem);
            }
        } else {
            if (elem == null) return true;
            if (!dataInterpretationOf.user_check_add(elem)) return false;
            dataInterpretationOf.user_add(elem);
        }
        return true;
    }
    public org.xowl.infra.lang.runtime.Entity getInterpretationOf() { return dataInterpretationOf.get(); }
    // 

    // 
    public static interface isAsymmetric {
        boolean check_contains(java.lang.Boolean elem);
        boolean user_check_add(java.lang.Boolean elem);
        boolean user_check_remove(java.lang.Boolean elem);
        boolean user_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem);
        void user_add(java.lang.Boolean elem);
        void user_remove(java.lang.Boolean elem);
        boolean inverse_check_add(java.lang.Boolean elem);
        boolean inverse_check_remove(java.lang.Boolean elem);
        boolean inverse_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem);
        void inverse_add(java.lang.Boolean elem);
        void inverse_remove(java.lang.Boolean elem);
    }
    private static class isAsymmetric_impl implements org.xowl.infra.lang.runtime.ObjectProperty.isAsymmetric {
        private org.xowl.infra.lang.runtime.ObjectProperty domain;
        private java.lang.Boolean data;
        public java.lang.Boolean get_raw() { return data; }
        public java.lang.Boolean get() { return data; }
        private boolean check_card(int modifier) {
            int card = modifier + 0;
            if (data != null) card++;
            return (card >= 0 && card <= 1);
        }
        @Override public boolean check_contains(java.lang.Boolean elem) { return data.equals(elem); }
        public boolean simple_check_add(java.lang.Boolean elem) {
            if (check_contains(elem)) return false;
            if (!check_card(1)) return false;
            return true;
        }
        public boolean simple_check_remove(java.lang.Boolean elem) {
            if (!check_contains(elem)) return false;
            if (!check_card(-1)) return false;
            return true;
        }
        public boolean simple_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            if (check_contains(newElem)) return false;
            if (!check_contains(oldElem)) return false;
            return true;
        }
        public void simple_add(java.lang.Boolean elem) {
            data = elem;
        }
        public void simple_remove(java.lang.Boolean elem) {
            data = null;
        }
        private boolean tree_check_add(java.lang.Boolean elem) {
            if (!simple_check_add(elem)) return false;
            return true;
        }
        private boolean tree_check_remove(java.lang.Boolean elem) {
            if (!simple_check_remove(elem)) return false;
            return true;
        }
        private boolean tree_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            if (!simple_check_replace(oldElem, newElem)) return false;
            return true;
        }
        private void tree_add(java.lang.Boolean elem) {
            simple_add(elem);
        }
        private void tree_remove(java.lang.Boolean elem) {
            simple_remove(elem);
        }
        @Override public boolean user_check_add(java.lang.Boolean elem) {
            return tree_check_add(elem);
        }
        @Override public boolean user_check_remove(java.lang.Boolean elem) {
            return tree_check_remove(elem);
        }
        @Override public boolean user_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        @Override public void user_add(java.lang.Boolean elem) {
            tree_add(elem);
        }
        @Override public void user_remove(java.lang.Boolean elem) {
            tree_remove(elem);
        }
        @Override public boolean inverse_check_add(java.lang.Boolean elem) {
            return tree_check_add(elem);
        }
        @Override public boolean inverse_check_remove(java.lang.Boolean elem) {
            return tree_check_remove(elem);
        }
        @Override public boolean inverse_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        @Override public void inverse_add(java.lang.Boolean elem) {
            tree_add(elem);
        }
        @Override public void inverse_remove(java.lang.Boolean elem) {
            tree_remove(elem);
        }
        public isAsymmetric_impl(org.xowl.infra.lang.runtime.ObjectProperty domain) {
            this.domain = domain;
        }
    }
    private isAsymmetric_impl dataIsAsymmetric;
    public org.xowl.infra.lang.runtime.ObjectProperty.isAsymmetric __getImplOfisAsymmetric() { return dataIsAsymmetric; }
    public boolean setIsAsymmetric(java.lang.Boolean elem) {
        dataIsAsymmetric.simple_add(elem);
        return true;
    }
    public java.lang.Boolean getIsAsymmetric() { return dataIsAsymmetric.get(); }
    // 

    // 
    public static interface isTransitive {
        boolean check_contains(java.lang.Boolean elem);
        boolean user_check_add(java.lang.Boolean elem);
        boolean user_check_remove(java.lang.Boolean elem);
        boolean user_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem);
        void user_add(java.lang.Boolean elem);
        void user_remove(java.lang.Boolean elem);
        boolean inverse_check_add(java.lang.Boolean elem);
        boolean inverse_check_remove(java.lang.Boolean elem);
        boolean inverse_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem);
        void inverse_add(java.lang.Boolean elem);
        void inverse_remove(java.lang.Boolean elem);
    }
    private static class isTransitive_impl implements org.xowl.infra.lang.runtime.ObjectProperty.isTransitive {
        private org.xowl.infra.lang.runtime.ObjectProperty domain;
        private java.lang.Boolean data;
        public java.lang.Boolean get_raw() { return data; }
        public java.lang.Boolean get() { return data; }
        private boolean check_card(int modifier) {
            int card = modifier + 0;
            if (data != null) card++;
            return (card >= 0 && card <= 1);
        }
        @Override public boolean check_contains(java.lang.Boolean elem) { return data.equals(elem); }
        public boolean simple_check_add(java.lang.Boolean elem) {
            if (check_contains(elem)) return false;
            if (!check_card(1)) return false;
            return true;
        }
        public boolean simple_check_remove(java.lang.Boolean elem) {
            if (!check_contains(elem)) return false;
            if (!check_card(-1)) return false;
            return true;
        }
        public boolean simple_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            if (check_contains(newElem)) return false;
            if (!check_contains(oldElem)) return false;
            return true;
        }
        public void simple_add(java.lang.Boolean elem) {
            data = elem;
        }
        public void simple_remove(java.lang.Boolean elem) {
            data = null;
        }
        private boolean tree_check_add(java.lang.Boolean elem) {
            if (!simple_check_add(elem)) return false;
            return true;
        }
        private boolean tree_check_remove(java.lang.Boolean elem) {
            if (!simple_check_remove(elem)) return false;
            return true;
        }
        private boolean tree_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            if (!simple_check_replace(oldElem, newElem)) return false;
            return true;
        }
        private void tree_add(java.lang.Boolean elem) {
            simple_add(elem);
        }
        private void tree_remove(java.lang.Boolean elem) {
            simple_remove(elem);
        }
        @Override public boolean user_check_add(java.lang.Boolean elem) {
            return tree_check_add(elem);
        }
        @Override public boolean user_check_remove(java.lang.Boolean elem) {
            return tree_check_remove(elem);
        }
        @Override public boolean user_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        @Override public void user_add(java.lang.Boolean elem) {
            tree_add(elem);
        }
        @Override public void user_remove(java.lang.Boolean elem) {
            tree_remove(elem);
        }
        @Override public boolean inverse_check_add(java.lang.Boolean elem) {
            return tree_check_add(elem);
        }
        @Override public boolean inverse_check_remove(java.lang.Boolean elem) {
            return tree_check_remove(elem);
        }
        @Override public boolean inverse_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        @Override public void inverse_add(java.lang.Boolean elem) {
            tree_add(elem);
        }
        @Override public void inverse_remove(java.lang.Boolean elem) {
            tree_remove(elem);
        }
        public isTransitive_impl(org.xowl.infra.lang.runtime.ObjectProperty domain) {
            this.domain = domain;
        }
    }
    private isTransitive_impl dataIsTransitive;
    public org.xowl.infra.lang.runtime.ObjectProperty.isTransitive __getImplOfisTransitive() { return dataIsTransitive; }
    public boolean setIsTransitive(java.lang.Boolean elem) {
        dataIsTransitive.simple_add(elem);
        return true;
    }
    public java.lang.Boolean getIsTransitive() { return dataIsTransitive.get(); }
    // 

    // 
    private static class propertyEquivalentTo_impl implements org.xowl.infra.lang.runtime.Property.propertyEquivalentTo {
        private org.xowl.infra.lang.runtime.ObjectProperty domain;
        private java.util.List data;
        public java.util.Collection get_raw() { return new java.util.ArrayList(data); }
        public java.util.Collection get() { return new java.util.ArrayList(data); }
        private boolean check_card(int modifier) {
            int card = data.size() + 0 + modifier;
            return (card >= 0 && card <= 2147483647);
        }
        public boolean check_contains(org.xowl.infra.lang.runtime.ObjectProperty elem) { return (data.contains(elem)); }
        @Override public boolean check_contains(org.xowl.infra.lang.runtime.Property elem) {
            if (!(elem instanceof org.xowl.infra.lang.runtime.ObjectProperty)) return false;
            return (data.contains((org.xowl.infra.lang.runtime.ObjectProperty)elem));
        }
        public boolean simple_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (check_contains(elem)) return false;
            if (!check_card(1)) return false;
            return true;
        }
        public boolean simple_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!check_contains(elem)) return false;
            if (!check_card(-1)) return false;
            return true;
        }
        public boolean simple_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            if (check_contains(newElem)) return false;
            if (!check_contains(oldElem)) return false;
            return true;
        }
        public void simple_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            data.add(elem);
        }
        public void simple_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            data.remove(elem);
        }
        private boolean tree_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!simple_check_add(elem)) return false;
            return true;
        }
        private boolean tree_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!simple_check_remove(elem)) return false;
            return true;
        }
        private boolean tree_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            if (!simple_check_replace(oldElem, newElem)) return false;
            return true;
        }
        private void tree_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            simple_add(elem);
        }
        private void tree_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            simple_remove(elem);
        }
        public boolean user_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!elem.__getImplOfpropertyEquivalentTo().inverse_check_add(domain)) return false;
            return tree_check_add(elem);
        }
        public boolean user_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!elem.__getImplOfpropertyEquivalentTo().inverse_check_remove(domain)) return false;
            return tree_check_remove(elem);
        }
        public boolean user_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            if (!oldElem.__getImplOfpropertyEquivalentTo().inverse_check_remove(domain)) return false;
            if (!newElem.__getImplOfpropertyEquivalentTo().inverse_check_add(domain)) return false;
            return tree_check_replace(oldElem, newElem);
        }
        public void user_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            elem.__getImplOfpropertyEquivalentTo().inverse_add(domain);
            tree_add(elem);
        }
        public void user_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            elem.__getImplOfpropertyEquivalentTo().inverse_remove(domain);
            tree_remove(elem);
        }
        @Override public boolean user_check_add(org.xowl.infra.lang.runtime.Property elem) { return user_check_add((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public boolean user_check_remove(org.xowl.infra.lang.runtime.Property elem) { return user_check_remove((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public boolean user_check_replace(org.xowl.infra.lang.runtime.Property oldElem, org.xowl.infra.lang.runtime.Property  newElem) { return user_check_replace((org.xowl.infra.lang.runtime.ObjectProperty)oldElem, (org.xowl.infra.lang.runtime.ObjectProperty)newElem); }
        @Override public void user_add(org.xowl.infra.lang.runtime.Property elem) { user_add((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public void user_remove(org.xowl.infra.lang.runtime.Property elem) { user_remove((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        public boolean inverse_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            return tree_check_add(elem);
        }
        public boolean inverse_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            return tree_check_remove(elem);
        }
        public boolean inverse_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        public void inverse_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            tree_add(elem);
        }
        public void inverse_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            tree_remove(elem);
        }
        @Override public boolean inverse_check_add(org.xowl.infra.lang.runtime.Property elem) { return inverse_check_add((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public boolean inverse_check_remove(org.xowl.infra.lang.runtime.Property elem) { return inverse_check_remove((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public boolean inverse_check_replace(org.xowl.infra.lang.runtime.Property oldElem, org.xowl.infra.lang.runtime.Property  newElem) { return inverse_check_replace((org.xowl.infra.lang.runtime.ObjectProperty)oldElem, (org.xowl.infra.lang.runtime.ObjectProperty)newElem); }
        @Override public void inverse_add(org.xowl.infra.lang.runtime.Property elem) { inverse_add((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public void inverse_remove(org.xowl.infra.lang.runtime.Property elem) { inverse_remove((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        public propertyEquivalentTo_impl(org.xowl.infra.lang.runtime.ObjectProperty domain) {
            this.domain = domain;
            this.data = new java.util.ArrayList();
        }
    }
    private propertyEquivalentTo_impl dataPropertyEquivalentTo;
    public org.xowl.infra.lang.runtime.Property.propertyEquivalentTo __getImplOfpropertyEquivalentTo() { return dataPropertyEquivalentTo; }
    public boolean addPropertyEquivalentTo(org.xowl.infra.lang.runtime.Property elem) {
        org.xowl.infra.lang.runtime.ObjectProperty value = (org.xowl.infra.lang.runtime.ObjectProperty)elem;
        if (!dataPropertyEquivalentTo.user_check_add(value)) return false;
        dataPropertyEquivalentTo.user_add(value);
        return true;
    }
    public boolean removePropertyEquivalentTo(org.xowl.infra.lang.runtime.Property elem) {
        org.xowl.infra.lang.runtime.ObjectProperty value = (org.xowl.infra.lang.runtime.ObjectProperty)elem;
        if (!dataPropertyEquivalentTo.user_check_remove(value)) return false;
        dataPropertyEquivalentTo.user_remove(value);
        return true;
    }
    public java.util.Collection getAllPropertyEquivalentToAs(org.xowl.infra.lang.runtime.Property type) {
        java.util.List result = new java.util.ArrayList();
        for (org.xowl.infra.lang.runtime.ObjectProperty value : dataPropertyEquivalentTo.get())
            result.add(value);
        return result;
    }
    public boolean addPropertyEquivalentTo(org.xowl.infra.lang.runtime.ObjectProperty elem) {
        if (!dataPropertyEquivalentTo.user_check_add(elem)) return false;
        dataPropertyEquivalentTo.user_add(elem);
        return true;
    }
    public boolean removePropertyEquivalentTo(org.xowl.infra.lang.runtime.ObjectProperty elem) {
        if (!dataPropertyEquivalentTo.user_check_remove(elem)) return false;
        dataPropertyEquivalentTo.user_remove(elem);
        return true;
    }
    public java.util.Collection getAllPropertyEquivalentToAs(org.xowl.infra.lang.runtime.ObjectProperty type) { return dataPropertyEquivalentTo.get(); }
    // 

    // 
    private static class superPropertyOf_impl implements org.xowl.infra.lang.runtime.Property.superPropertyOf {
        private org.xowl.infra.lang.runtime.ObjectProperty domain;
        private java.util.List data;
        public java.util.Collection get_raw() { return new java.util.ArrayList(data); }
        public java.util.Collection get() { return new java.util.ArrayList(data); }
        private boolean check_card(int modifier) {
            int card = data.size() + 0 + modifier;
            return (card >= 0 && card <= 2147483647);
        }
        public boolean check_contains(org.xowl.infra.lang.runtime.ObjectProperty elem) { return (data.contains(elem)); }
        @Override public boolean check_contains(org.xowl.infra.lang.runtime.Property elem) {
            if (!(elem instanceof org.xowl.infra.lang.runtime.ObjectProperty)) return false;
            return (data.contains((org.xowl.infra.lang.runtime.ObjectProperty)elem));
        }
        public boolean simple_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (check_contains(elem)) return false;
            if (!check_card(1)) return false;
            return true;
        }
        public boolean simple_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!check_contains(elem)) return false;
            if (!check_card(-1)) return false;
            return true;
        }
        public boolean simple_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            if (check_contains(newElem)) return false;
            if (!check_contains(oldElem)) return false;
            return true;
        }
        public void simple_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            data.add(elem);
        }
        public void simple_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            data.remove(elem);
        }
        private boolean tree_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!simple_check_add(elem)) return false;
            return true;
        }
        private boolean tree_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!simple_check_remove(elem)) return false;
            return true;
        }
        private boolean tree_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            if (!simple_check_replace(oldElem, newElem)) return false;
            return true;
        }
        private void tree_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            simple_add(elem);
        }
        private void tree_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            simple_remove(elem);
        }
        public boolean user_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!elem.__getImplOfsubPropertyOf().inverse_check_add(domain)) return false;
            return tree_check_add(elem);
        }
        public boolean user_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!elem.__getImplOfsubPropertyOf().inverse_check_remove(domain)) return false;
            return tree_check_remove(elem);
        }
        public boolean user_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            if (!oldElem.__getImplOfsubPropertyOf().inverse_check_remove(domain)) return false;
            if (!newElem.__getImplOfsubPropertyOf().inverse_check_add(domain)) return false;
            return tree_check_replace(oldElem, newElem);
        }
        public void user_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            elem.__getImplOfsubPropertyOf().inverse_add(domain);
            tree_add(elem);
        }
        public void user_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            elem.__getImplOfsubPropertyOf().inverse_remove(domain);
            tree_remove(elem);
        }
        @Override public boolean user_check_add(org.xowl.infra.lang.runtime.Property elem) { return user_check_add((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public boolean user_check_remove(org.xowl.infra.lang.runtime.Property elem) { return user_check_remove((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public boolean user_check_replace(org.xowl.infra.lang.runtime.Property oldElem, org.xowl.infra.lang.runtime.Property  newElem) { return user_check_replace((org.xowl.infra.lang.runtime.ObjectProperty)oldElem, (org.xowl.infra.lang.runtime.ObjectProperty)newElem); }
        @Override public void user_add(org.xowl.infra.lang.runtime.Property elem) { user_add((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public void user_remove(org.xowl.infra.lang.runtime.Property elem) { user_remove((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        public boolean inverse_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            return tree_check_add(elem);
        }
        public boolean inverse_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            return tree_check_remove(elem);
        }
        public boolean inverse_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        public void inverse_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            tree_add(elem);
        }
        public void inverse_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            tree_remove(elem);
        }
        @Override public boolean inverse_check_add(org.xowl.infra.lang.runtime.Property elem) { return inverse_check_add((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public boolean inverse_check_remove(org.xowl.infra.lang.runtime.Property elem) { return inverse_check_remove((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public boolean inverse_check_replace(org.xowl.infra.lang.runtime.Property oldElem, org.xowl.infra.lang.runtime.Property  newElem) { return inverse_check_replace((org.xowl.infra.lang.runtime.ObjectProperty)oldElem, (org.xowl.infra.lang.runtime.ObjectProperty)newElem); }
        @Override public void inverse_add(org.xowl.infra.lang.runtime.Property elem) { inverse_add((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public void inverse_remove(org.xowl.infra.lang.runtime.Property elem) { inverse_remove((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        public superPropertyOf_impl(org.xowl.infra.lang.runtime.ObjectProperty domain) {
            this.domain = domain;
            this.data = new java.util.ArrayList();
        }
    }
    private superPropertyOf_impl dataSuperPropertyOf;
    public org.xowl.infra.lang.runtime.Property.superPropertyOf __getImplOfsuperPropertyOf() { return dataSuperPropertyOf; }
    public boolean addSuperPropertyOf(org.xowl.infra.lang.runtime.Property elem) {
        org.xowl.infra.lang.runtime.ObjectProperty value = (org.xowl.infra.lang.runtime.ObjectProperty)elem;
        if (!dataSuperPropertyOf.user_check_add(value)) return false;
        dataSuperPropertyOf.user_add(value);
        return true;
    }
    public boolean removeSuperPropertyOf(org.xowl.infra.lang.runtime.Property elem) {
        org.xowl.infra.lang.runtime.ObjectProperty value = (org.xowl.infra.lang.runtime.ObjectProperty)elem;
        if (!dataSuperPropertyOf.user_check_remove(value)) return false;
        dataSuperPropertyOf.user_remove(value);
        return true;
    }
    public java.util.Collection getAllSuperPropertyOfAs(org.xowl.infra.lang.runtime.Property type) {
        java.util.List result = new java.util.ArrayList();
        for (org.xowl.infra.lang.runtime.ObjectProperty value : dataSuperPropertyOf.get())
            result.add(value);
        return result;
    }
    public boolean addSuperPropertyOf(org.xowl.infra.lang.runtime.ObjectProperty elem) {
        if (!dataSuperPropertyOf.user_check_add(elem)) return false;
        dataSuperPropertyOf.user_add(elem);
        return true;
    }
    public boolean removeSuperPropertyOf(org.xowl.infra.lang.runtime.ObjectProperty elem) {
        if (!dataSuperPropertyOf.user_check_remove(elem)) return false;
        dataSuperPropertyOf.user_remove(elem);
        return true;
    }
    public java.util.Collection getAllSuperPropertyOfAs(org.xowl.infra.lang.runtime.ObjectProperty type) { return dataSuperPropertyOf.get(); }
    // 

    // 
    private static class range_impl implements org.xowl.infra.lang.runtime.Property.range {
        private org.xowl.infra.lang.runtime.ObjectProperty domain;
        private org.xowl.infra.lang.runtime.Class data;
        public org.xowl.infra.lang.runtime.Class get_raw() { return data; }
        public org.xowl.infra.lang.runtime.Class get() { return data; }
        private boolean check_card(int modifier) {
            int card = modifier + 0;
            if (data != null) card++;
            return (card >= 0 && card <= 1);
        }
        public boolean check_contains(org.xowl.infra.lang.runtime.Class elem) { return (data == elem); }
        @Override public boolean check_contains(org.xowl.infra.lang.runtime.Class_OR_Datatype elem) {
            if (!(elem instanceof org.xowl.infra.lang.runtime.Class)) return false;
            return (data == elem);
        }
        public boolean simple_check_add(org.xowl.infra.lang.runtime.Class elem) {
            if (check_contains(elem)) return false;
            if (!check_card(1)) return false;
            return true;
        }
        public boolean simple_check_remove(org.xowl.infra.lang.runtime.Class elem) {
            if (!check_contains(elem)) return false;
            if (!check_card(-1)) return false;
            return true;
        }
        public boolean simple_check_replace(org.xowl.infra.lang.runtime.Class oldElem, org.xowl.infra.lang.runtime.Class  newElem) {
            if (check_contains(newElem)) return false;
            if (!check_contains(oldElem)) return false;
            return true;
        }
        public void simple_add(org.xowl.infra.lang.runtime.Class elem) {
            data = elem;
        }
        public void simple_remove(org.xowl.infra.lang.runtime.Class elem) {
            data = null;
        }
        private boolean tree_check_add(org.xowl.infra.lang.runtime.Class elem) {
            if (!simple_check_add(elem)) return false;
            return true;
        }
        private boolean tree_check_remove(org.xowl.infra.lang.runtime.Class elem) {
            if (!simple_check_remove(elem)) return false;
            return true;
        }
        private boolean tree_check_replace(org.xowl.infra.lang.runtime.Class oldElem, org.xowl.infra.lang.runtime.Class  newElem) {
            if (!simple_check_replace(oldElem, newElem)) return false;
            return true;
        }
        private void tree_add(org.xowl.infra.lang.runtime.Class elem) {
            simple_add(elem);
        }
        private void tree_remove(org.xowl.infra.lang.runtime.Class elem) {
            simple_remove(elem);
        }
        public boolean user_check_add(org.xowl.infra.lang.runtime.Class elem) {
            return tree_check_add(elem);
        }
        public boolean user_check_remove(org.xowl.infra.lang.runtime.Class elem) {
            return tree_check_remove(elem);
        }
        public boolean user_check_replace(org.xowl.infra.lang.runtime.Class oldElem, org.xowl.infra.lang.runtime.Class  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        public void user_add(org.xowl.infra.lang.runtime.Class elem) {
            tree_add(elem);
        }
        public void user_remove(org.xowl.infra.lang.runtime.Class elem) {
            tree_remove(elem);
        }
        @Override public boolean user_check_add(org.xowl.infra.lang.runtime.Class_OR_Datatype elem) { return user_check_add((org.xowl.infra.lang.runtime.Class)elem); }
        @Override public boolean user_check_remove(org.xowl.infra.lang.runtime.Class_OR_Datatype elem) { return user_check_remove((org.xowl.infra.lang.runtime.Class)elem); }
        @Override public boolean user_check_replace(org.xowl.infra.lang.runtime.Class_OR_Datatype oldElem, org.xowl.infra.lang.runtime.Class_OR_Datatype  newElem) { return user_check_replace((org.xowl.infra.lang.runtime.Class)oldElem, (org.xowl.infra.lang.runtime.Class)newElem); }
        @Override public void user_add(org.xowl.infra.lang.runtime.Class_OR_Datatype elem) { user_add((org.xowl.infra.lang.runtime.Class)elem); }
        @Override public void user_remove(org.xowl.infra.lang.runtime.Class_OR_Datatype elem) { user_remove((org.xowl.infra.lang.runtime.Class)elem); }
        public boolean inverse_check_add(org.xowl.infra.lang.runtime.Class elem) {
            return tree_check_add(elem);
        }
        public boolean inverse_check_remove(org.xowl.infra.lang.runtime.Class elem) {
            return tree_check_remove(elem);
        }
        public boolean inverse_check_replace(org.xowl.infra.lang.runtime.Class oldElem, org.xowl.infra.lang.runtime.Class  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        public void inverse_add(org.xowl.infra.lang.runtime.Class elem) {
            tree_add(elem);
        }
        public void inverse_remove(org.xowl.infra.lang.runtime.Class elem) {
            tree_remove(elem);
        }
        @Override public boolean inverse_check_add(org.xowl.infra.lang.runtime.Class_OR_Datatype elem) { return inverse_check_add((org.xowl.infra.lang.runtime.Class)elem); }
        @Override public boolean inverse_check_remove(org.xowl.infra.lang.runtime.Class_OR_Datatype elem) { return inverse_check_remove((org.xowl.infra.lang.runtime.Class)elem); }
        @Override public boolean inverse_check_replace(org.xowl.infra.lang.runtime.Class_OR_Datatype oldElem, org.xowl.infra.lang.runtime.Class_OR_Datatype  newElem) { return inverse_check_replace((org.xowl.infra.lang.runtime.Class)oldElem, (org.xowl.infra.lang.runtime.Class)newElem); }
        @Override public void inverse_add(org.xowl.infra.lang.runtime.Class_OR_Datatype elem) { inverse_add((org.xowl.infra.lang.runtime.Class)elem); }
        @Override public void inverse_remove(org.xowl.infra.lang.runtime.Class_OR_Datatype elem) { inverse_remove((org.xowl.infra.lang.runtime.Class)elem); }
        public range_impl(org.xowl.infra.lang.runtime.ObjectProperty domain) {
            this.domain = domain;
        }
    }
    private range_impl dataRange;
    public org.xowl.infra.lang.runtime.Property.range __getImplOfrange() { return dataRange; }
    public boolean setRange(org.xowl.infra.lang.runtime.Class_OR_Datatype elem) {
        if (dataRange.get() != null) {
            if (elem == null) {
                if (!dataRange.user_check_remove(dataRange.get())) return false;
                dataRange.user_remove(dataRange.get());
            } else {
                if (!dataRange.user_check_replace(dataRange.get(), (org.xowl.infra.lang.runtime.Class)elem)) return false;
                dataRange.user_remove(dataRange.get());
                dataRange.user_add((org.xowl.infra.lang.runtime.Class)elem);
            }
        } else {
            if (elem == null) return true;
            if (!dataRange.user_check_add((org.xowl.infra.lang.runtime.Class)elem)) return false;
            dataRange.user_add((org.xowl.infra.lang.runtime.Class)elem);
        }
        return true;
    }
    public org.xowl.infra.lang.runtime.Class_OR_Datatype getRangeAs(org.xowl.infra.lang.runtime.Class_OR_Datatype type) { return dataRange.get(); }
    public boolean setRange(org.xowl.infra.lang.runtime.Class elem) {
        if (dataRange.get() != null) {
            if (elem == null) {
                if (!dataRange.user_check_remove(dataRange.get())) return false;
                dataRange.user_remove(dataRange.get());
            } else {
                if (!dataRange.user_check_replace(dataRange.get(), elem)) return false;
                dataRange.user_remove(dataRange.get());
                dataRange.user_add(elem);
            }
        } else {
            if (elem == null) return true;
            if (!dataRange.user_check_add(elem)) return false;
            dataRange.user_add(elem);
        }
        return true;
    }
    public org.xowl.infra.lang.runtime.Class getRangeAs(org.xowl.infra.lang.runtime.Class type) { return dataRange.get(); }
    // 

    // 
    public static interface isInverseFunctional {
        boolean check_contains(java.lang.Boolean elem);
        boolean user_check_add(java.lang.Boolean elem);
        boolean user_check_remove(java.lang.Boolean elem);
        boolean user_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem);
        void user_add(java.lang.Boolean elem);
        void user_remove(java.lang.Boolean elem);
        boolean inverse_check_add(java.lang.Boolean elem);
        boolean inverse_check_remove(java.lang.Boolean elem);
        boolean inverse_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem);
        void inverse_add(java.lang.Boolean elem);
        void inverse_remove(java.lang.Boolean elem);
    }
    private static class isInverseFunctional_impl implements org.xowl.infra.lang.runtime.ObjectProperty.isInverseFunctional {
        private org.xowl.infra.lang.runtime.ObjectProperty domain;
        private java.lang.Boolean data;
        public java.lang.Boolean get_raw() { return data; }
        public java.lang.Boolean get() { return data; }
        private boolean check_card(int modifier) {
            int card = modifier + 0;
            if (data != null) card++;
            return (card >= 0 && card <= 1);
        }
        @Override public boolean check_contains(java.lang.Boolean elem) { return data.equals(elem); }
        public boolean simple_check_add(java.lang.Boolean elem) {
            if (check_contains(elem)) return false;
            if (!check_card(1)) return false;
            return true;
        }
        public boolean simple_check_remove(java.lang.Boolean elem) {
            if (!check_contains(elem)) return false;
            if (!check_card(-1)) return false;
            return true;
        }
        public boolean simple_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            if (check_contains(newElem)) return false;
            if (!check_contains(oldElem)) return false;
            return true;
        }
        public void simple_add(java.lang.Boolean elem) {
            data = elem;
        }
        public void simple_remove(java.lang.Boolean elem) {
            data = null;
        }
        private boolean tree_check_add(java.lang.Boolean elem) {
            if (!simple_check_add(elem)) return false;
            return true;
        }
        private boolean tree_check_remove(java.lang.Boolean elem) {
            if (!simple_check_remove(elem)) return false;
            return true;
        }
        private boolean tree_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            if (!simple_check_replace(oldElem, newElem)) return false;
            return true;
        }
        private void tree_add(java.lang.Boolean elem) {
            simple_add(elem);
        }
        private void tree_remove(java.lang.Boolean elem) {
            simple_remove(elem);
        }
        @Override public boolean user_check_add(java.lang.Boolean elem) {
            return tree_check_add(elem);
        }
        @Override public boolean user_check_remove(java.lang.Boolean elem) {
            return tree_check_remove(elem);
        }
        @Override public boolean user_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        @Override public void user_add(java.lang.Boolean elem) {
            tree_add(elem);
        }
        @Override public void user_remove(java.lang.Boolean elem) {
            tree_remove(elem);
        }
        @Override public boolean inverse_check_add(java.lang.Boolean elem) {
            return tree_check_add(elem);
        }
        @Override public boolean inverse_check_remove(java.lang.Boolean elem) {
            return tree_check_remove(elem);
        }
        @Override public boolean inverse_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        @Override public void inverse_add(java.lang.Boolean elem) {
            tree_add(elem);
        }
        @Override public void inverse_remove(java.lang.Boolean elem) {
            tree_remove(elem);
        }
        public isInverseFunctional_impl(org.xowl.infra.lang.runtime.ObjectProperty domain) {
            this.domain = domain;
        }
    }
    private isInverseFunctional_impl dataIsInverseFunctional;
    public org.xowl.infra.lang.runtime.ObjectProperty.isInverseFunctional __getImplOfisInverseFunctional() { return dataIsInverseFunctional; }
    public boolean setIsInverseFunctional(java.lang.Boolean elem) {
        dataIsInverseFunctional.simple_add(elem);
        return true;
    }
    public java.lang.Boolean getIsInverseFunctional() { return dataIsInverseFunctional.get(); }
    // 

    // 
    public static interface chains {
        boolean check_contains(org.xowl.infra.lang.runtime.ObjectProperty elem);
        boolean user_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem);
        boolean user_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem);
        boolean user_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem);
        void user_add(org.xowl.infra.lang.runtime.ObjectProperty elem);
        void user_remove(org.xowl.infra.lang.runtime.ObjectProperty elem);
        boolean inverse_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem);
        boolean inverse_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem);
        boolean inverse_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem);
        void inverse_add(org.xowl.infra.lang.runtime.ObjectProperty elem);
        void inverse_remove(org.xowl.infra.lang.runtime.ObjectProperty elem);
    }
    private static class chains_impl implements org.xowl.infra.lang.runtime.ObjectProperty.chains {
        private org.xowl.infra.lang.runtime.ObjectProperty domain;
        private java.util.List data;
        public java.util.Collection get_raw() { return new java.util.ArrayList(data); }
        public java.util.Collection get() { return new java.util.ArrayList(data); }
        private boolean check_card(int modifier) {
            int card = data.size() + 0 + modifier;
            return (card >= 0 && card <= 2147483647);
        }
        @Override public boolean check_contains(org.xowl.infra.lang.runtime.ObjectProperty elem) { return (data.contains(elem)); }
        public boolean simple_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (check_contains(elem)) return false;
            if (!check_card(1)) return false;
            return true;
        }
        public boolean simple_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!check_contains(elem)) return false;
            if (!check_card(-1)) return false;
            return true;
        }
        public boolean simple_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            if (check_contains(newElem)) return false;
            if (!check_contains(oldElem)) return false;
            return true;
        }
        public void simple_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            data.add(elem);
        }
        public void simple_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            data.remove(elem);
        }
        private boolean tree_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!simple_check_add(elem)) return false;
            return true;
        }
        private boolean tree_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!simple_check_remove(elem)) return false;
            return true;
        }
        private boolean tree_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            if (!simple_check_replace(oldElem, newElem)) return false;
            return true;
        }
        private void tree_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            simple_add(elem);
        }
        private void tree_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            simple_remove(elem);
        }
        @Override public boolean user_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            return tree_check_add(elem);
        }
        @Override public boolean user_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            return tree_check_remove(elem);
        }
        @Override public boolean user_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        @Override public void user_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            tree_add(elem);
        }
        @Override public void user_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            tree_remove(elem);
        }
        @Override public boolean inverse_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            return tree_check_add(elem);
        }
        @Override public boolean inverse_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            return tree_check_remove(elem);
        }
        @Override public boolean inverse_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        @Override public void inverse_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            tree_add(elem);
        }
        @Override public void inverse_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            tree_remove(elem);
        }
        public chains_impl(org.xowl.infra.lang.runtime.ObjectProperty domain) {
            this.domain = domain;
            this.data = new java.util.ArrayList();
        }
    }
    private chains_impl dataChains;
    public org.xowl.infra.lang.runtime.ObjectProperty.chains __getImplOfchains() { return dataChains; }
    public boolean addChains(org.xowl.infra.lang.runtime.ObjectProperty elem) {
        if (!dataChains.user_check_add(elem)) return false;
        dataChains.user_add(elem);
        return true;
    }
    public boolean removeChains(org.xowl.infra.lang.runtime.ObjectProperty elem) {
        if (!dataChains.user_check_remove(elem)) return false;
        dataChains.user_remove(elem);
        return true;
    }
    public java.util.Collection getAllChains() { return dataChains.get(); }
    // 

    // 
    private static class propertyDisjointWith_impl implements org.xowl.infra.lang.runtime.Property.propertyDisjointWith {
        private org.xowl.infra.lang.runtime.ObjectProperty domain;
        private java.util.List data;
        public java.util.Collection get_raw() { return new java.util.ArrayList(data); }
        public java.util.Collection get() { return new java.util.ArrayList(data); }
        private boolean check_card(int modifier) {
            int card = data.size() + 0 + modifier;
            return (card >= 0 && card <= 2147483647);
        }
        public boolean check_contains(org.xowl.infra.lang.runtime.ObjectProperty elem) { return (data.contains(elem)); }
        @Override public boolean check_contains(org.xowl.infra.lang.runtime.Property elem) {
            if (!(elem instanceof org.xowl.infra.lang.runtime.ObjectProperty)) return false;
            return (data.contains((org.xowl.infra.lang.runtime.ObjectProperty)elem));
        }
        public boolean simple_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (check_contains(elem)) return false;
            if (!check_card(1)) return false;
            return true;
        }
        public boolean simple_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!check_contains(elem)) return false;
            if (!check_card(-1)) return false;
            return true;
        }
        public boolean simple_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            if (check_contains(newElem)) return false;
            if (!check_contains(oldElem)) return false;
            return true;
        }
        public void simple_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            data.add(elem);
        }
        public void simple_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            data.remove(elem);
        }
        private boolean tree_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!simple_check_add(elem)) return false;
            return true;
        }
        private boolean tree_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!simple_check_remove(elem)) return false;
            return true;
        }
        private boolean tree_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            if (!simple_check_replace(oldElem, newElem)) return false;
            return true;
        }
        private void tree_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            simple_add(elem);
        }
        private void tree_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            simple_remove(elem);
        }
        public boolean user_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!elem.__getImplOfpropertyDisjointWith().inverse_check_add(domain)) return false;
            return tree_check_add(elem);
        }
        public boolean user_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!elem.__getImplOfpropertyDisjointWith().inverse_check_remove(domain)) return false;
            return tree_check_remove(elem);
        }
        public boolean user_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            if (!oldElem.__getImplOfpropertyDisjointWith().inverse_check_remove(domain)) return false;
            if (!newElem.__getImplOfpropertyDisjointWith().inverse_check_add(domain)) return false;
            return tree_check_replace(oldElem, newElem);
        }
        public void user_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            elem.__getImplOfpropertyDisjointWith().inverse_add(domain);
            tree_add(elem);
        }
        public void user_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            elem.__getImplOfpropertyDisjointWith().inverse_remove(domain);
            tree_remove(elem);
        }
        @Override public boolean user_check_add(org.xowl.infra.lang.runtime.Property elem) { return user_check_add((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public boolean user_check_remove(org.xowl.infra.lang.runtime.Property elem) { return user_check_remove((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public boolean user_check_replace(org.xowl.infra.lang.runtime.Property oldElem, org.xowl.infra.lang.runtime.Property  newElem) { return user_check_replace((org.xowl.infra.lang.runtime.ObjectProperty)oldElem, (org.xowl.infra.lang.runtime.ObjectProperty)newElem); }
        @Override public void user_add(org.xowl.infra.lang.runtime.Property elem) { user_add((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public void user_remove(org.xowl.infra.lang.runtime.Property elem) { user_remove((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        public boolean inverse_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            return tree_check_add(elem);
        }
        public boolean inverse_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            return tree_check_remove(elem);
        }
        public boolean inverse_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        public void inverse_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            tree_add(elem);
        }
        public void inverse_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            tree_remove(elem);
        }
        @Override public boolean inverse_check_add(org.xowl.infra.lang.runtime.Property elem) { return inverse_check_add((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public boolean inverse_check_remove(org.xowl.infra.lang.runtime.Property elem) { return inverse_check_remove((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public boolean inverse_check_replace(org.xowl.infra.lang.runtime.Property oldElem, org.xowl.infra.lang.runtime.Property  newElem) { return inverse_check_replace((org.xowl.infra.lang.runtime.ObjectProperty)oldElem, (org.xowl.infra.lang.runtime.ObjectProperty)newElem); }
        @Override public void inverse_add(org.xowl.infra.lang.runtime.Property elem) { inverse_add((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        @Override public void inverse_remove(org.xowl.infra.lang.runtime.Property elem) { inverse_remove((org.xowl.infra.lang.runtime.ObjectProperty)elem); }
        public propertyDisjointWith_impl(org.xowl.infra.lang.runtime.ObjectProperty domain) {
            this.domain = domain;
            this.data = new java.util.ArrayList();
        }
    }
    private propertyDisjointWith_impl dataPropertyDisjointWith;
    public org.xowl.infra.lang.runtime.Property.propertyDisjointWith __getImplOfpropertyDisjointWith() { return dataPropertyDisjointWith; }
    public boolean addPropertyDisjointWith(org.xowl.infra.lang.runtime.Property elem) {
        org.xowl.infra.lang.runtime.ObjectProperty value = (org.xowl.infra.lang.runtime.ObjectProperty)elem;
        if (!dataPropertyDisjointWith.user_check_add(value)) return false;
        dataPropertyDisjointWith.user_add(value);
        return true;
    }
    public boolean removePropertyDisjointWith(org.xowl.infra.lang.runtime.Property elem) {
        org.xowl.infra.lang.runtime.ObjectProperty value = (org.xowl.infra.lang.runtime.ObjectProperty)elem;
        if (!dataPropertyDisjointWith.user_check_remove(value)) return false;
        dataPropertyDisjointWith.user_remove(value);
        return true;
    }
    public java.util.Collection getAllPropertyDisjointWithAs(org.xowl.infra.lang.runtime.Property type) {
        java.util.List result = new java.util.ArrayList();
        for (org.xowl.infra.lang.runtime.ObjectProperty value : dataPropertyDisjointWith.get())
            result.add(value);
        return result;
    }
    public boolean addPropertyDisjointWith(org.xowl.infra.lang.runtime.ObjectProperty elem) {
        if (!dataPropertyDisjointWith.user_check_add(elem)) return false;
        dataPropertyDisjointWith.user_add(elem);
        return true;
    }
    public boolean removePropertyDisjointWith(org.xowl.infra.lang.runtime.ObjectProperty elem) {
        if (!dataPropertyDisjointWith.user_check_remove(elem)) return false;
        dataPropertyDisjointWith.user_remove(elem);
        return true;
    }
    public java.util.Collection getAllPropertyDisjointWithAs(org.xowl.infra.lang.runtime.ObjectProperty type) { return dataPropertyDisjointWith.get(); }
    // 

    // 
    public static interface inverseOf {
        boolean check_contains(org.xowl.infra.lang.runtime.ObjectProperty elem);
        boolean user_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem);
        boolean user_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem);
        boolean user_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem);
        void user_add(org.xowl.infra.lang.runtime.ObjectProperty elem);
        void user_remove(org.xowl.infra.lang.runtime.ObjectProperty elem);
        boolean inverse_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem);
        boolean inverse_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem);
        boolean inverse_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem);
        void inverse_add(org.xowl.infra.lang.runtime.ObjectProperty elem);
        void inverse_remove(org.xowl.infra.lang.runtime.ObjectProperty elem);
    }
    private static class inverseOf_impl implements org.xowl.infra.lang.runtime.ObjectProperty.inverseOf {
        private org.xowl.infra.lang.runtime.ObjectProperty domain;
        private org.xowl.infra.lang.runtime.ObjectProperty data;
        public org.xowl.infra.lang.runtime.ObjectProperty get_raw() { return data; }
        public org.xowl.infra.lang.runtime.ObjectProperty get() { return data; }
        private boolean check_card(int modifier) {
            int card = modifier + 0;
            if (data != null) card++;
            return (card >= 0 && card <= 1);
        }
        @Override public boolean check_contains(org.xowl.infra.lang.runtime.ObjectProperty elem) { return (data == elem); }
        public boolean simple_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (check_contains(elem)) return false;
            if (!check_card(1)) return false;
            return true;
        }
        public boolean simple_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!check_contains(elem)) return false;
            if (!check_card(-1)) return false;
            return true;
        }
        public boolean simple_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            if (check_contains(newElem)) return false;
            if (!check_contains(oldElem)) return false;
            return true;
        }
        public void simple_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            data = elem;
        }
        public void simple_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            data = null;
        }
        private boolean tree_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!simple_check_add(elem)) return false;
            return true;
        }
        private boolean tree_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!simple_check_remove(elem)) return false;
            return true;
        }
        private boolean tree_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            if (!simple_check_replace(oldElem, newElem)) return false;
            return true;
        }
        private void tree_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            simple_add(elem);
        }
        private void tree_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            simple_remove(elem);
        }
        @Override public boolean user_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!elem.__getImplOfinverseOf().inverse_check_add(domain)) return false;
            return tree_check_add(elem);
        }
        @Override public boolean user_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            if (!elem.__getImplOfinverseOf().inverse_check_remove(domain)) return false;
            return tree_check_remove(elem);
        }
        @Override public boolean user_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            if (!oldElem.__getImplOfinverseOf().inverse_check_remove(domain)) return false;
            if (!newElem.__getImplOfinverseOf().inverse_check_add(domain)) return false;
            return tree_check_replace(oldElem, newElem);
        }
        @Override public void user_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            elem.__getImplOfinverseOf().inverse_add(domain);
            tree_add(elem);
        }
        @Override public void user_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            elem.__getImplOfinverseOf().inverse_remove(domain);
            tree_remove(elem);
        }
        @Override public boolean inverse_check_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            return tree_check_add(elem);
        }
        @Override public boolean inverse_check_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            return tree_check_remove(elem);
        }
        @Override public boolean inverse_check_replace(org.xowl.infra.lang.runtime.ObjectProperty oldElem, org.xowl.infra.lang.runtime.ObjectProperty  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        @Override public void inverse_add(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            tree_add(elem);
        }
        @Override public void inverse_remove(org.xowl.infra.lang.runtime.ObjectProperty elem) {
            tree_remove(elem);
        }
        public inverseOf_impl(org.xowl.infra.lang.runtime.ObjectProperty domain) {
            this.domain = domain;
        }
    }
    private inverseOf_impl dataInverseOf;
    public org.xowl.infra.lang.runtime.ObjectProperty.inverseOf __getImplOfinverseOf() { return dataInverseOf; }
    public boolean setInverseOf(org.xowl.infra.lang.runtime.ObjectProperty elem) {
        if (dataInverseOf.get() != null) {
            if (elem == null) {
                if (!dataInverseOf.user_check_remove(dataInverseOf.get())) return false;
                dataInverseOf.user_remove(dataInverseOf.get());
            } else {
                if (!dataInverseOf.user_check_replace(dataInverseOf.get(), elem)) return false;
                dataInverseOf.user_remove(dataInverseOf.get());
                dataInverseOf.user_add(elem);
            }
        } else {
            if (elem == null) return true;
            if (!dataInverseOf.user_check_add(elem)) return false;
            dataInverseOf.user_add(elem);
        }
        return true;
    }
    public org.xowl.infra.lang.runtime.ObjectProperty getInverseOf() { return dataInverseOf.get(); }
    // 

    // 
    private static class domain_impl implements org.xowl.infra.lang.runtime.Property.domain {
        private org.xowl.infra.lang.runtime.ObjectProperty domain;
        private org.xowl.infra.lang.runtime.Class data;
        public org.xowl.infra.lang.runtime.Class get_raw() { return data; }
        public org.xowl.infra.lang.runtime.Class get() { return data; }
        private boolean check_card(int modifier) {
            int card = modifier + 0;
            if (data != null) card++;
            return (card >= 0 && card <= 1);
        }
        @Override public boolean check_contains(org.xowl.infra.lang.runtime.Class elem) { return (data == elem); }
        public boolean simple_check_add(org.xowl.infra.lang.runtime.Class elem) {
            if (check_contains(elem)) return false;
            if (!check_card(1)) return false;
            return true;
        }
        public boolean simple_check_remove(org.xowl.infra.lang.runtime.Class elem) {
            if (!check_contains(elem)) return false;
            if (!check_card(-1)) return false;
            return true;
        }
        public boolean simple_check_replace(org.xowl.infra.lang.runtime.Class oldElem, org.xowl.infra.lang.runtime.Class  newElem) {
            if (check_contains(newElem)) return false;
            if (!check_contains(oldElem)) return false;
            return true;
        }
        public void simple_add(org.xowl.infra.lang.runtime.Class elem) {
            data = elem;
        }
        public void simple_remove(org.xowl.infra.lang.runtime.Class elem) {
            data = null;
        }
        private boolean tree_check_add(org.xowl.infra.lang.runtime.Class elem) {
            if (!simple_check_add(elem)) return false;
            return true;
        }
        private boolean tree_check_remove(org.xowl.infra.lang.runtime.Class elem) {
            if (!simple_check_remove(elem)) return false;
            return true;
        }
        private boolean tree_check_replace(org.xowl.infra.lang.runtime.Class oldElem, org.xowl.infra.lang.runtime.Class  newElem) {
            if (!simple_check_replace(oldElem, newElem)) return false;
            return true;
        }
        private void tree_add(org.xowl.infra.lang.runtime.Class elem) {
            simple_add(elem);
        }
        private void tree_remove(org.xowl.infra.lang.runtime.Class elem) {
            simple_remove(elem);
        }
        @Override public boolean user_check_add(org.xowl.infra.lang.runtime.Class elem) {
            if (!elem.__getImplOfdomainOf().inverse_check_add(domain)) return false;
            return tree_check_add(elem);
        }
        @Override public boolean user_check_remove(org.xowl.infra.lang.runtime.Class elem) {
            if (!elem.__getImplOfdomainOf().inverse_check_remove(domain)) return false;
            return tree_check_remove(elem);
        }
        @Override public boolean user_check_replace(org.xowl.infra.lang.runtime.Class oldElem, org.xowl.infra.lang.runtime.Class  newElem) {
            if (!oldElem.__getImplOfdomainOf().inverse_check_remove(domain)) return false;
            if (!newElem.__getImplOfdomainOf().inverse_check_add(domain)) return false;
            return tree_check_replace(oldElem, newElem);
        }
        @Override public void user_add(org.xowl.infra.lang.runtime.Class elem) {
            elem.__getImplOfdomainOf().inverse_add(domain);
            tree_add(elem);
        }
        @Override public void user_remove(org.xowl.infra.lang.runtime.Class elem) {
            elem.__getImplOfdomainOf().inverse_remove(domain);
            tree_remove(elem);
        }
        @Override public boolean inverse_check_add(org.xowl.infra.lang.runtime.Class elem) {
            return tree_check_add(elem);
        }
        @Override public boolean inverse_check_remove(org.xowl.infra.lang.runtime.Class elem) {
            return tree_check_remove(elem);
        }
        @Override public boolean inverse_check_replace(org.xowl.infra.lang.runtime.Class oldElem, org.xowl.infra.lang.runtime.Class  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        @Override public void inverse_add(org.xowl.infra.lang.runtime.Class elem) {
            tree_add(elem);
        }
        @Override public void inverse_remove(org.xowl.infra.lang.runtime.Class elem) {
            tree_remove(elem);
        }
        public domain_impl(org.xowl.infra.lang.runtime.ObjectProperty domain) {
            this.domain = domain;
        }
    }
    private domain_impl dataDomain;
    public org.xowl.infra.lang.runtime.Property.domain __getImplOfdomain() { return dataDomain; }
    public boolean setDomain(org.xowl.infra.lang.runtime.Class elem) {
        if (dataDomain.get() != null) {
            if (elem == null) {
                if (!dataDomain.user_check_remove(dataDomain.get())) return false;
                dataDomain.user_remove(dataDomain.get());
            } else {
                if (!dataDomain.user_check_replace(dataDomain.get(), elem)) return false;
                dataDomain.user_remove(dataDomain.get());
                dataDomain.user_add(elem);
            }
        } else {
            if (elem == null) return true;
            if (!dataDomain.user_check_add(elem)) return false;
            dataDomain.user_add(elem);
        }
        return true;
    }
    public org.xowl.infra.lang.runtime.Class getDomain() { return dataDomain.get(); }
    // 

    // 
    public static interface isSymmetric {
        boolean check_contains(java.lang.Boolean elem);
        boolean user_check_add(java.lang.Boolean elem);
        boolean user_check_remove(java.lang.Boolean elem);
        boolean user_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem);
        void user_add(java.lang.Boolean elem);
        void user_remove(java.lang.Boolean elem);
        boolean inverse_check_add(java.lang.Boolean elem);
        boolean inverse_check_remove(java.lang.Boolean elem);
        boolean inverse_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem);
        void inverse_add(java.lang.Boolean elem);
        void inverse_remove(java.lang.Boolean elem);
    }
    private static class isSymmetric_impl implements org.xowl.infra.lang.runtime.ObjectProperty.isSymmetric {
        private org.xowl.infra.lang.runtime.ObjectProperty domain;
        private java.lang.Boolean data;
        public java.lang.Boolean get_raw() { return data; }
        public java.lang.Boolean get() { return data; }
        private boolean check_card(int modifier) {
            int card = modifier + 0;
            if (data != null) card++;
            return (card >= 0 && card <= 1);
        }
        @Override public boolean check_contains(java.lang.Boolean elem) { return data.equals(elem); }
        public boolean simple_check_add(java.lang.Boolean elem) {
            if (check_contains(elem)) return false;
            if (!check_card(1)) return false;
            return true;
        }
        public boolean simple_check_remove(java.lang.Boolean elem) {
            if (!check_contains(elem)) return false;
            if (!check_card(-1)) return false;
            return true;
        }
        public boolean simple_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            if (check_contains(newElem)) return false;
            if (!check_contains(oldElem)) return false;
            return true;
        }
        public void simple_add(java.lang.Boolean elem) {
            data = elem;
        }
        public void simple_remove(java.lang.Boolean elem) {
            data = null;
        }
        private boolean tree_check_add(java.lang.Boolean elem) {
            if (!simple_check_add(elem)) return false;
            return true;
        }
        private boolean tree_check_remove(java.lang.Boolean elem) {
            if (!simple_check_remove(elem)) return false;
            return true;
        }
        private boolean tree_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            if (!simple_check_replace(oldElem, newElem)) return false;
            return true;
        }
        private void tree_add(java.lang.Boolean elem) {
            simple_add(elem);
        }
        private void tree_remove(java.lang.Boolean elem) {
            simple_remove(elem);
        }
        @Override public boolean user_check_add(java.lang.Boolean elem) {
            return tree_check_add(elem);
        }
        @Override public boolean user_check_remove(java.lang.Boolean elem) {
            return tree_check_remove(elem);
        }
        @Override public boolean user_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        @Override public void user_add(java.lang.Boolean elem) {
            tree_add(elem);
        }
        @Override public void user_remove(java.lang.Boolean elem) {
            tree_remove(elem);
        }
        @Override public boolean inverse_check_add(java.lang.Boolean elem) {
            return tree_check_add(elem);
        }
        @Override public boolean inverse_check_remove(java.lang.Boolean elem) {
            return tree_check_remove(elem);
        }
        @Override public boolean inverse_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        @Override public void inverse_add(java.lang.Boolean elem) {
            tree_add(elem);
        }
        @Override public void inverse_remove(java.lang.Boolean elem) {
            tree_remove(elem);
        }
        public isSymmetric_impl(org.xowl.infra.lang.runtime.ObjectProperty domain) {
            this.domain = domain;
        }
    }
    private isSymmetric_impl dataIsSymmetric;
    public org.xowl.infra.lang.runtime.ObjectProperty.isSymmetric __getImplOfisSymmetric() { return dataIsSymmetric; }
    public boolean setIsSymmetric(java.lang.Boolean elem) {
        dataIsSymmetric.simple_add(elem);
        return true;
    }
    public java.lang.Boolean getIsSymmetric() { return dataIsSymmetric.get(); }
    // 

    // 
    public static interface isReflexive {
        boolean check_contains(java.lang.Boolean elem);
        boolean user_check_add(java.lang.Boolean elem);
        boolean user_check_remove(java.lang.Boolean elem);
        boolean user_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem);
        void user_add(java.lang.Boolean elem);
        void user_remove(java.lang.Boolean elem);
        boolean inverse_check_add(java.lang.Boolean elem);
        boolean inverse_check_remove(java.lang.Boolean elem);
        boolean inverse_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem);
        void inverse_add(java.lang.Boolean elem);
        void inverse_remove(java.lang.Boolean elem);
    }
    private static class isReflexive_impl implements org.xowl.infra.lang.runtime.ObjectProperty.isReflexive {
        private org.xowl.infra.lang.runtime.ObjectProperty domain;
        private java.lang.Boolean data;
        public java.lang.Boolean get_raw() { return data; }
        public java.lang.Boolean get() { return data; }
        private boolean check_card(int modifier) {
            int card = modifier + 0;
            if (data != null) card++;
            return (card >= 0 && card <= 1);
        }
        @Override public boolean check_contains(java.lang.Boolean elem) { return data.equals(elem); }
        public boolean simple_check_add(java.lang.Boolean elem) {
            if (check_contains(elem)) return false;
            if (!check_card(1)) return false;
            return true;
        }
        public boolean simple_check_remove(java.lang.Boolean elem) {
            if (!check_contains(elem)) return false;
            if (!check_card(-1)) return false;
            return true;
        }
        public boolean simple_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            if (check_contains(newElem)) return false;
            if (!check_contains(oldElem)) return false;
            return true;
        }
        public void simple_add(java.lang.Boolean elem) {
            data = elem;
        }
        public void simple_remove(java.lang.Boolean elem) {
            data = null;
        }
        private boolean tree_check_add(java.lang.Boolean elem) {
            if (!simple_check_add(elem)) return false;
            return true;
        }
        private boolean tree_check_remove(java.lang.Boolean elem) {
            if (!simple_check_remove(elem)) return false;
            return true;
        }
        private boolean tree_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            if (!simple_check_replace(oldElem, newElem)) return false;
            return true;
        }
        private void tree_add(java.lang.Boolean elem) {
            simple_add(elem);
        }
        private void tree_remove(java.lang.Boolean elem) {
            simple_remove(elem);
        }
        @Override public boolean user_check_add(java.lang.Boolean elem) {
            return tree_check_add(elem);
        }
        @Override public boolean user_check_remove(java.lang.Boolean elem) {
            return tree_check_remove(elem);
        }
        @Override public boolean user_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        @Override public void user_add(java.lang.Boolean elem) {
            tree_add(elem);
        }
        @Override public void user_remove(java.lang.Boolean elem) {
            tree_remove(elem);
        }
        @Override public boolean inverse_check_add(java.lang.Boolean elem) {
            return tree_check_add(elem);
        }
        @Override public boolean inverse_check_remove(java.lang.Boolean elem) {
            return tree_check_remove(elem);
        }
        @Override public boolean inverse_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        @Override public void inverse_add(java.lang.Boolean elem) {
            tree_add(elem);
        }
        @Override public void inverse_remove(java.lang.Boolean elem) {
            tree_remove(elem);
        }
        public isReflexive_impl(org.xowl.infra.lang.runtime.ObjectProperty domain) {
            this.domain = domain;
        }
    }
    private isReflexive_impl dataIsReflexive;
    public org.xowl.infra.lang.runtime.ObjectProperty.isReflexive __getImplOfisReflexive() { return dataIsReflexive; }
    public boolean setIsReflexive(java.lang.Boolean elem) {
        dataIsReflexive.simple_add(elem);
        return true;
    }
    public java.lang.Boolean getIsReflexive() { return dataIsReflexive.get(); }
    // 

    // 
    private static class isFunctional_impl implements org.xowl.infra.lang.runtime.Property.isFunctional {
        private org.xowl.infra.lang.runtime.ObjectProperty domain;
        private java.lang.Boolean data;
        public java.lang.Boolean get_raw() { return data; }
        public java.lang.Boolean get() { return data; }
        private boolean check_card(int modifier) {
            int card = modifier + 0;
            if (data != null) card++;
            return (card >= 0 && card <= 1);
        }
        @Override public boolean check_contains(java.lang.Boolean elem) { return data.equals(elem); }
        public boolean simple_check_add(java.lang.Boolean elem) {
            if (check_contains(elem)) return false;
            if (!check_card(1)) return false;
            return true;
        }
        public boolean simple_check_remove(java.lang.Boolean elem) {
            if (!check_contains(elem)) return false;
            if (!check_card(-1)) return false;
            return true;
        }
        public boolean simple_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            if (check_contains(newElem)) return false;
            if (!check_contains(oldElem)) return false;
            return true;
        }
        public void simple_add(java.lang.Boolean elem) {
            data = elem;
        }
        public void simple_remove(java.lang.Boolean elem) {
            data = null;
        }
        private boolean tree_check_add(java.lang.Boolean elem) {
            if (!simple_check_add(elem)) return false;
            return true;
        }
        private boolean tree_check_remove(java.lang.Boolean elem) {
            if (!simple_check_remove(elem)) return false;
            return true;
        }
        private boolean tree_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            if (!simple_check_replace(oldElem, newElem)) return false;
            return true;
        }
        private void tree_add(java.lang.Boolean elem) {
            simple_add(elem);
        }
        private void tree_remove(java.lang.Boolean elem) {
            simple_remove(elem);
        }
        @Override public boolean user_check_add(java.lang.Boolean elem) {
            return tree_check_add(elem);
        }
        @Override public boolean user_check_remove(java.lang.Boolean elem) {
            return tree_check_remove(elem);
        }
        @Override public boolean user_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        @Override public void user_add(java.lang.Boolean elem) {
            tree_add(elem);
        }
        @Override public void user_remove(java.lang.Boolean elem) {
            tree_remove(elem);
        }
        @Override public boolean inverse_check_add(java.lang.Boolean elem) {
            return tree_check_add(elem);
        }
        @Override public boolean inverse_check_remove(java.lang.Boolean elem) {
            return tree_check_remove(elem);
        }
        @Override public boolean inverse_check_replace(java.lang.Boolean oldElem, java.lang.Boolean  newElem) {
            return tree_check_replace(oldElem, newElem);
        }
        @Override public void inverse_add(java.lang.Boolean elem) {
            tree_add(elem);
        }
        @Override public void inverse_remove(java.lang.Boolean elem) {
            tree_remove(elem);
        }
        public isFunctional_impl(org.xowl.infra.lang.runtime.ObjectProperty domain) {
            this.domain = domain;
        }
    }
    private isFunctional_impl dataIsFunctional;
    public org.xowl.infra.lang.runtime.Property.isFunctional __getImplOfisFunctional() { return dataIsFunctional; }
    public boolean setIsFunctional(java.lang.Boolean elem) {
        dataIsFunctional.simple_add(elem);
        return true;
    }
    public java.lang.Boolean getIsFunctional() { return dataIsFunctional.get(); }
    // 

    public ObjectProperty() {
        dataSubPropertyOf = new subPropertyOf_impl(this);
        dataIsIrreflexive = new isIrreflexive_impl(this);
        dataInterpretationOf = new interpretationOf_impl(this);
        dataIsAsymmetric = new isAsymmetric_impl(this);
        dataIsTransitive = new isTransitive_impl(this);
        dataPropertyEquivalentTo = new propertyEquivalentTo_impl(this);
        dataSuperPropertyOf = new superPropertyOf_impl(this);
        dataRange = new range_impl(this);
        dataIsInverseFunctional = new isInverseFunctional_impl(this);
        dataChains = new chains_impl(this);
        dataPropertyDisjointWith = new propertyDisjointWith_impl(this);
        dataInverseOf = new inverseOf_impl(this);
        dataDomain = new domain_impl(this);
        dataIsSymmetric = new isSymmetric_impl(this);
        dataIsReflexive = new isReflexive_impl(this);
        dataIsFunctional = new isFunctional_impl(this);
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy