public void Spin(IGraph data, IGraph infer, IGraph meta) { var union = new DisjointUnion(data, infer, string.Empty); bool any = false; do { any = false; any |= InverseOf(union, meta); any |= Domain(union, meta); any |= Range(union, meta); any |= SubClassOf(union, meta); any |= SubPropertyOf(union, meta); } while (any); }
private bool Domain(DisjointUnion graph, IGraph meta) { var any = false; var rules = meta.P(Constants.Domain); foreach (var rule in rules) { var triples = graph.P(rule.Subject); foreach (var t in triples) { any |= graph.Assert(t.Subject, Constants.Type, TripleObject.FromData(rule.Object.ToValue())); } } return(any); }
public object Visit(DisjointUnion e) { if (e.modality != Statement.Modality.IS) { return(CreateNull()); } // forall X,Y in e.Union return X[=~Y | Y[=~X // & X|Y|... [= e.name var dis = INTERSECT_SYMETRIC_FUN(e.Union, SUBS_NEG); var sum = SUBS(new ConceptOr(null) { Exprs = e.Union }, new CNL.DL.Atomic(null) { id = e.name }); return(Intersect(dis, sum)); }
public override object Visit(DisjointUnion e) { e.name = removeDefaultPfx(e.name); return(base.Visit(e)); }
public override object Visit(DisjointUnion e) { e.name = applyFullUri(e.name); return(base.Visit(e)); }