Example #1
0
        public HashSet <IClassExpression> SuperClasses(
            IClassExpression classExpression
            )
        {
            if (!_superClasses.TryGetValue(
                    classExpression,
                    out HashSet <IClassExpression> superClassExpressions))
            {
                superClassExpressions          = new HashSet <IClassExpression>();
                _superClasses[classExpression] = superClassExpressions;
                superClassExpressions.Add(classExpression);

                Get <ISubClassOf>()
                .Where(subClassOf => subClassOf.SubClassExpression == classExpression)
                .Select(subClassOf => subClassOf.SuperClassExpression)
                .ForEach(superClassExpression => superClassExpressions.UnionWith(SuperClasses(superClassExpression)));

                if (classExpression is IObjectIntersectionOf objectIntersectionOf)
                {
                    objectIntersectionOf
                    .ClassExpressions
                    .ForEach(componentClassExpression => superClassExpressions.UnionWith(SuperClasses(componentClassExpression)));
                }
            }
            return(superClassExpressions);
        }
Example #2
0
 public ObjectAllValuesFrom(
     IObjectPropertyExpression objectPropertyExpression,
     IClassExpression classExpression
     ) : base(objectPropertyExpression)
 {
     _classExpression = classExpression;
 }
        private void Classify(
            ISet <IClass> classes,
            ISet <IClass> candidates,
            object individual,
            IClassExpression classExpression
            )
        {
            if (classExpression is IClass @class)
            {
                if (!classes.Add(@class))
                {
                    // Class Expression already processed.
                    return;
                }

                // Prune candidates.
                candidates.Remove(@class);
                candidates.ExceptWith(_disjointClassExpressions[classExpression].OfType <IClass>());

                _superClassExpressions[classExpression].ForEach(superClassExpression => Classify(
                                                                    classes,
                                                                    candidates,
                                                                    individual,
                                                                    superClassExpression));
            }
            else if (classExpression is IObjectIntersectionOf objectIntersectionOf)
            {
                objectIntersectionOf.ClassExpressions
                .ForEach(componentClassExpression => Classify(
                             classes,
                             candidates,
                             individual,
                             componentClassExpression));
            }
        }
 public static IObjectUnionOf Union(
     this IObjectUnionOf lhs,
     IClassExpression rhs
     )
 {
     lhs.ClassExpressions.Add(rhs);
     return(lhs);
 }
 public static IObjectIntersectionOf Intersect(
     this IObjectIntersectionOf lhs,
     IClassExpression rhs
     )
 {
     lhs.ClassExpressions.Add(rhs);
     return(lhs);
 }
 protected ObjectCardinality(
     IObjectPropertyExpression objectPropertyExpression,
     int cardinality,
     IClassExpression classExpression
     ) : base(objectPropertyExpression)
 {
     _cardinality     = cardinality;
     _classExpression = classExpression;
 }
 public ClassAssertion(
     IOntology ontology,
     IClassExpression classExpression,
     INamedIndividual namedIndividual
     ) : base(ontology)
 {
     _classExpression = classExpression;
     _namedIndividual = namedIndividual;
 }
Example #8
0
 public HasKey(
     IOntology ontology,
     IClassExpression classExpression,
     params IDataPropertyExpression[] dataPropertyExpressions
     ) : base(ontology)
 {
     _classExpression         = classExpression;
     _dataPropertyExpressions = dataPropertyExpressions;
 }
Example #9
0
 public SubClassOf(
     IOntology ontology,
     IClassExpression subClassExpression,
     IClassExpression superClassExpression
     ) : base(ontology)
 {
     _subClassExpression   = subClassExpression;
     _superClassExpression = superClassExpression;
 }
 public ObjectPropertyRange(
     IOntology ontology,
     IObjectPropertyExpression objectPropertyExpression,
     IClassExpression range
     ) : base(
         ontology,
         objectPropertyExpression)
 {
     _range = range;
 }
 public ObjectPropertyDomain(
     IOntology ontology,
     IObjectPropertyExpression objectPropertyExpression,
     IClassExpression domain
     ) : base(
         ontology,
         objectPropertyExpression)
 {
     _domain = domain;
 }
 public DataPropertyDomain(
     IOntology ontology,
     IDataPropertyExpression dataPropertyExpression,
     IClassExpression domain
     ) : base(
         ontology,
         dataPropertyExpression)
 {
     _domain = domain;
 }
 public ObjectExactCardinality(
     IObjectPropertyExpression objectPropertyExpression,
     int cardinality,
     IClassExpression classExpression = null
     ) : base(
         objectPropertyExpression,
         cardinality,
         classExpression)
 {
 }
 public ObjectComplementOf(
     IClassExpression classExpression
     )
 {
     _classExpression = classExpression;
 }
 public static IObjectIntersectionOf Intersect(
     this IClassExpression lhs,
     IClassExpression rhs
     ) => new ObjectIntersectionOf(lhs, rhs);
 public static IObjectUnionOf Union(
     this IClassExpression lhs,
     IClassExpression rhs
     ) => new ObjectUnionOf(lhs, rhs);
 public static IObjectComplementOf Complement(
     this IClassExpression classExpression
     ) => new ObjectComplementOf(classExpression);