/// <summary> /// Checks if the given aProperty can be set equivalentPropertyOf the given bProperty;<br/> /// Does not accept property chain definitions, for OWL2-DL decidability preservation. /// </summary> internal static bool CheckEquivalentPropertyCompatibility(RDFOntologyPropertyModel propertyModel, RDFOntologyObjectProperty aProperty, RDFOntologyObjectProperty bProperty) => !propertyModel.CheckIsSubPropertyOf(aProperty, bProperty) && !propertyModel.CheckIsSuperPropertyOf(aProperty, bProperty) && !propertyModel.CheckIsPropertyDisjointWith(aProperty, bProperty) && //OWL2-DL decidability !propertyModel.CheckIsPropertyChain(aProperty) && !propertyModel.CheckIsPropertyChain(bProperty);
/// <summary> /// Checks if the given childproperty can be set subPropertyOf the given motherproperty;<br/> /// Does not accept property chain definitions, for OWL2-DL decidability preservation. /// </summary> internal static bool CheckSubPropertyOfCompatibility(RDFOntologyPropertyModel propertyModel, RDFOntologyObjectProperty childProperty, RDFOntologyObjectProperty motherProperty) => !propertyModel.CheckIsSubPropertyOf(motherProperty, childProperty) && !propertyModel.CheckIsEquivalentPropertyOf(motherProperty, childProperty) && !propertyModel.CheckIsPropertyDisjointWith(motherProperty, childProperty) && //OWL2-DL decidability !propertyModel.CheckIsPropertyChain(childProperty) && !propertyModel.CheckIsPropertyChain(motherProperty);
/// <summary> /// Checks if the given "aFact -> objectProperty -> bFact" has transitive assertions /// which would cause transitive cycles (unallowed concept in OWL-DL) /// </summary> internal static bool CheckTransitiveAssertionCompatibility(RDFOntologyData ontologyData, RDFOntologyFact aFact, RDFOntologyObjectProperty objProperty, RDFOntologyFact bFact) => !ontologyData.CheckIsTransitiveAssertionOf(bFact, objProperty, aFact);
/// <summary> /// Checks if the given "aFact -> objectProperty -> bFact" can be a negative assertion /// </summary> internal static bool CheckNegativeAssertionCompatibility(RDFOntologyData ontologyData, RDFOntologyFact aFact, RDFOntologyObjectProperty objProperty, RDFOntologyFact bFact) => !ontologyData.CheckIsAssertion(aFact, objProperty, bFact);
/// <summary> /// Checks if the given aProperty can be set inverseOf the given bProperty /// </summary> internal static bool CheckInverseOfPropertyCompatibility(RDFOntologyPropertyModel propertyModel, RDFOntologyObjectProperty aProperty, RDFOntologyObjectProperty bProperty) => !propertyModel.CheckIsSubPropertyOf(aProperty, bProperty) && !propertyModel.CheckIsSuperPropertyOf(aProperty, bProperty) && !propertyModel.CheckIsEquivalentPropertyOf(aProperty, bProperty);