/// <summary> /// Builds a new union data from this data and a given one /// </summary> public RDFOntologyData UnionWith(RDFOntologyData ontologyData) { var result = new RDFOntologyData(); //Add facts from this data foreach (var f in this) { result.AddFact(f); } //Add literals from this data foreach (var l in this.Literals.Values) { result.AddLiteral(l); } //Add relations from this data result.Relations.ClassType = result.Relations.ClassType.UnionWith(this.Relations.ClassType); result.Relations.SameAs = result.Relations.SameAs.UnionWith(this.Relations.SameAs); result.Relations.DifferentFrom = result.Relations.DifferentFrom.UnionWith(this.Relations.DifferentFrom); result.Relations.Assertions = result.Relations.Assertions.UnionWith(this.Relations.Assertions); //Add annotations from this data result.Annotations.VersionInfo = result.Annotations.VersionInfo.UnionWith(this.Annotations.VersionInfo); result.Annotations.Comment = result.Annotations.Comment.UnionWith(this.Annotations.Comment); result.Annotations.Label = result.Annotations.Label.UnionWith(this.Annotations.Label); result.Annotations.SeeAlso = result.Annotations.SeeAlso.UnionWith(this.Annotations.SeeAlso); result.Annotations.IsDefinedBy = result.Annotations.IsDefinedBy.UnionWith(this.Annotations.IsDefinedBy); result.Annotations.CustomAnnotations = result.Annotations.CustomAnnotations.UnionWith(this.Annotations.CustomAnnotations); //Manage the given data if (ontologyData != null) { //Add facts from the given data foreach (var f in ontologyData) { result.AddFact(f); } //Add literals from the given data foreach (var l in ontologyData.Literals.Values) { result.AddLiteral(l); } //Add relations from the given data result.Relations.ClassType = result.Relations.ClassType.UnionWith(ontologyData.Relations.ClassType); result.Relations.SameAs = result.Relations.SameAs.UnionWith(ontologyData.Relations.SameAs); result.Relations.DifferentFrom = result.Relations.DifferentFrom.UnionWith(ontologyData.Relations.DifferentFrom); result.Relations.Assertions = result.Relations.Assertions.UnionWith(ontologyData.Relations.Assertions); //Add annotations from the given data result.Annotations.VersionInfo = result.Annotations.VersionInfo.UnionWith(ontologyData.Annotations.VersionInfo); result.Annotations.Comment = result.Annotations.Comment.UnionWith(ontologyData.Annotations.Comment); result.Annotations.Label = result.Annotations.Label.UnionWith(ontologyData.Annotations.Label); result.Annotations.SeeAlso = result.Annotations.SeeAlso.UnionWith(ontologyData.Annotations.SeeAlso); result.Annotations.IsDefinedBy = result.Annotations.IsDefinedBy.UnionWith(ontologyData.Annotations.IsDefinedBy); result.Annotations.CustomAnnotations = result.Annotations.CustomAnnotations.UnionWith(ontologyData.Annotations.CustomAnnotations); } return(result); }
/// <summary> /// Builds a new difference data from this data and a given one /// </summary> public RDFOntologyData DifferenceWith(RDFOntologyData ontologyData) { var result = new RDFOntologyData(); if (ontologyData != null) { //Add difference facts foreach (var f in this) { if (!ontologyData.Facts.ContainsKey(f.PatternMemberID)) { result.AddFact(f); } } //Add difference literals foreach (var l in this.Literals.Values) { if (!ontologyData.Literals.ContainsKey(l.PatternMemberID)) { result.AddLiteral(l); } } //Add difference relations result.Relations.ClassType = this.Relations.ClassType.DifferenceWith(ontologyData.Relations.ClassType); result.Relations.SameAs = this.Relations.SameAs.DifferenceWith(ontologyData.Relations.SameAs); result.Relations.DifferentFrom = this.Relations.DifferentFrom.DifferenceWith(ontologyData.Relations.DifferentFrom); result.Relations.Assertions = this.Relations.Assertions.DifferenceWith(ontologyData.Relations.Assertions); //Add difference annotations result.Annotations.VersionInfo = this.Annotations.VersionInfo.DifferenceWith(ontologyData.Annotations.VersionInfo); result.Annotations.Comment = this.Annotations.Comment.DifferenceWith(ontologyData.Annotations.Comment); result.Annotations.Label = this.Annotations.Label.DifferenceWith(ontologyData.Annotations.Label); result.Annotations.SeeAlso = this.Annotations.SeeAlso.DifferenceWith(ontologyData.Annotations.SeeAlso); result.Annotations.IsDefinedBy = this.Annotations.IsDefinedBy.DifferenceWith(ontologyData.Annotations.IsDefinedBy); result.Annotations.CustomAnnotations = this.Annotations.CustomAnnotations.DifferenceWith(ontologyData.Annotations.CustomAnnotations); } else { //Add facts from this data foreach (var f in this) { result.AddFact(f); } //Add literals from this data foreach (var l in this.Literals.Values) { result.AddLiteral(l); } //Add relations from this data result.Relations.ClassType = result.Relations.ClassType.UnionWith(this.Relations.ClassType); result.Relations.SameAs = result.Relations.SameAs.UnionWith(this.Relations.SameAs); result.Relations.DifferentFrom = result.Relations.DifferentFrom.UnionWith(this.Relations.DifferentFrom); result.Relations.Assertions = result.Relations.Assertions.UnionWith(this.Relations.Assertions); //Add annotations from this data result.Annotations.VersionInfo = result.Annotations.VersionInfo.UnionWith(this.Annotations.VersionInfo); result.Annotations.Comment = result.Annotations.Comment.UnionWith(this.Annotations.Comment); result.Annotations.Label = result.Annotations.Label.UnionWith(this.Annotations.Label); result.Annotations.SeeAlso = result.Annotations.SeeAlso.UnionWith(this.Annotations.SeeAlso); result.Annotations.IsDefinedBy = result.Annotations.IsDefinedBy.UnionWith(this.Annotations.IsDefinedBy); result.Annotations.CustomAnnotations = result.Annotations.CustomAnnotations.UnionWith(this.Annotations.CustomAnnotations); } return(result); }
/// <summary> /// Checks if the given afact can be set differentfrom the given bfact /// </summary> internal static Boolean CheckDifferentFromCompatibility(RDFOntologyData ontologyData, RDFOntologyFact aFact, RDFOntologyFact bFact) { return(!ontologyData.CheckIsSameFactAs(aFact, bFact)); }