public static IConcept getTrait(IKnowledge concept, IConcept trait) { for (IConcept c : getTraits(concept)) { if (c.is(trait)) { return c; } } return null; }
@Override public boolean hasTrait(IConcept trait) { Collection<IConcept> roles = Traits.getTraits(getType()); if (roles.contains(trait)) { return true; } for (IConcept r : roles) { if (r.is(trait)) { return true; } } return false; }
/** * Check if concept k carries the passed trait. Uses is() on all explicitly expressed * traits. * * @param k * @param trait * @return */ public static boolean hasTrait(ISemantic k, IConcept trait) { IKnowledge type = k.getType(); if (!(type instanceof IConcept)) { return false; } for (IConcept c : getTraits(type)) { if (c.is(trait)) { return true; } } return false; }
/** * Return the observable that represent the passed one without any of the traits it * may inherit. * * @param observable * @return naked observable */ public static IKnowledge getBaseObservable(IKnowledge observable) { if (!(observable instanceof IConcept)) { return observable; } if (getTraits(observable).isEmpty()) { return observable; } for (IConcept o : ((IConcept) observable).getParents()) { if (NS.isObservable(o)) { return getBaseObservable(o); } } return null; }
/** * Analyze an observable concept and return the main observable with all the original * identities and realms but no attributes; separately, return the list of the * attributes that were removed. * * @param observable * @return attribute profile * @throws KlabValidationException */ public static Pair<IConcept, Collection<IConcept>> separateAttributes(IKnowledge observable) throws KlabValidationException { IKnowledge obs = getBaseObservable(observable); ArrayList<IConcept> tret = new ArrayList<>(); ArrayList<IConcept> keep = new ArrayList<>(); for (IConcept zt : getTraits(observable)) { if (zt.is(KLAB.c(NS.CORE_IDENTITY_TRAIT)) || zt.is(KLAB.c(NS.CORE_REALM_TRAIT))) { keep.add(zt); } else { tret.add(zt); } } return new Pair<>(Observables.declareObservable((IConcept) (obs == null ? observable : obs), keep, Observables.getContextType(observable), Observables .getInherentType(observable)), tret); }
Collection<IConcept> traits = Traits.getTraits(concept); if (traits.size() > 0) { try {
for (IConcept t : Traits.getTraits(o2)) { if (!Traits.hasTrait(o1, t) && (acceptRealmDifferences ? true : !NS.isRealm(t))) {
for (IConcept t : Traits.getTraits(getType())) {