public ELDescriptionTree(AbstractReasonerComponent rs) { this.rs = rs; subsumptionHierarchy = rs.getClassHierarchy(); roleHierarchy = rs.getObjectPropertyHierarchy(); }
@Override public final SortedSet<OWLObjectProperty> getMostGeneralProperties() { return getObjectPropertyHierarchy().getMostGeneralRoles(); }
@Override public final SortedSet<OWLObjectProperty> getMostSpecialProperties() { return getObjectPropertyHierarchy().getMostSpecialRoles(); }
@Override public final SortedSet<OWLObjectProperty> getSubProperties(OWLObjectProperty role) { if(precomputeObjectPropertyHierarchy) { return getObjectPropertyHierarchy().getMoreSpecialRoles(role); } else { try { return getSuperPropertiesImpl(role); } catch (ReasoningMethodUnsupportedException e) { e.printStackTrace(); } } return null; }
@Override public final SortedSet<OWLObjectProperty> getSuperProperties(OWLObjectProperty role) { if(precomputeObjectPropertyHierarchy) { return getObjectPropertyHierarchy().getMoreGeneralRoles(role); } else { try { return getSuperPropertiesImpl(role); } catch (ReasoningMethodUnsupportedException e) { e.printStackTrace(); } } return null; }
@Override public final <T extends OWLProperty> SortedSet<T> getSuperProperties(T role) { if(OWLObjectProperty.class.isInstance(role) && precomputeObjectPropertyHierarchy) { return (SortedSet<T>) getObjectPropertyHierarchy().getMoreGeneralRoles((OWLObjectProperty) role); } else if(OWLDataProperty.class.isInstance(role) && precomputeDataPropertyHierarchy) { return (SortedSet<T>) getDatatypePropertyHierarchy().getMoreGeneralRoles((OWLDataProperty) role); } else { try { return getSuperPropertiesImpl(role); } catch (ReasoningMethodUnsupportedException e) { e.printStackTrace(); } } return null; }
@Override public final <T extends OWLProperty> SortedSet<T> getSubProperties(T role) { if(OWLObjectProperty.class.isInstance(role) && precomputeObjectPropertyHierarchy) { return (SortedSet<T>) getObjectPropertyHierarchy().getMoreSpecialRoles((OWLObjectProperty) role); } else if(OWLDataProperty.class.isInstance(role) && precomputeDataPropertyHierarchy) { return (SortedSet<T>) getDatatypePropertyHierarchy().getMoreSpecialRoles((OWLDataProperty) role); } else { try { return getSubPropertiesImpl(role); } catch (ReasoningMethodUnsupportedException e) { e.printStackTrace(); } } return null; }
opHierarchy = rs.getObjectPropertyHierarchy();
/** * Computes an internal object property hierarchy that only contains * object properties that are allowed. * @return optimized object property hierarchy */ protected ObjectPropertyHierarchy initObjectPropertyHierarchy() { Set<OWLObjectProperty> usedProperties; if(allowedObjectProperties != null) { // sanity check to control if no non-existing object properties are in the list Helper.checkRoles(reasoner, allowedObjectProperties); usedProperties = allowedObjectProperties; } else if(ignoredObjectProperties != null) { usedProperties = Helper.computeEntitiesUsingIgnoreList(reasoner, EntityType.OBJECT_PROPERTY, ignoredObjectProperties); } else { usedProperties = Helper.computeEntities(reasoner, EntityType.OBJECT_PROPERTY); } ObjectPropertyHierarchy hierarchy = (ObjectPropertyHierarchy) reasoner.getObjectPropertyHierarchy().cloneAndRestrict(usedProperties); // hierarchy.thinOutSubsumptionHierarchy(); return hierarchy; }
public boolean isSubPropertyOf(OWLProperty subProperty, OWLProperty superProperty){ if(subProperty.isOWLObjectProperty() && superProperty.isOWLObjectProperty()){ return getObjectPropertyHierarchy().isSubpropertyOf((OWLObjectProperty)subProperty, (OWLObjectProperty)superProperty); } else if(subProperty.isOWLDataProperty() && superProperty.isOWLDataProperty()){ return getDatatypePropertyHierarchy().isSubpropertyOf((OWLDataProperty)subProperty, (OWLDataProperty)superProperty); } return false; }
op.setUseSomeOnly(false); op.setSubHierarchy(reasoner.getClassHierarchy()); op.setObjectPropertyHierarchy(reasoner.getObjectPropertyHierarchy()); op.setDataPropertyHierarchy(reasoner.getDatatypePropertyHierarchy()); op.setUseSomeOnly(false); System.out.println(reasoner.getObjectPropertyHierarchy()); assertTrue(refinements.size() + " results found, but should be " + 8 + ".", refinements.size() == 8); } finally {
@Test public void rhoDRDownTest2() throws ParseException, ComponentInitException { StringRenderer.setRenderer(Rendering.DL_SYNTAX); AbstractReasonerComponent reasoner = TestOntologies.getTestOntology(TestOntology.EPC_OE); baseURI = reasoner.getBaseURI(); RhoDRDown op = new RhoDRDown(); op.setReasoner(reasoner); op.setSubHierarchy(reasoner.getClassHierarchy()); op.setObjectPropertyHierarchy(reasoner.getObjectPropertyHierarchy()); op.setDataPropertyHierarchy(reasoner.getDatatypePropertyHierarchy()); op.init(); OWLClassExpression concept = KBParser.parseConcept("(\"http://localhost/aris/sap_model.owl#EPC\" AND EXISTS \"http://localhost/aris/sap_model.owl#hasModelElements\".\"http://localhost/aris/sap_model.owl#Object\")"); Set<OWLClassExpression> results = op.refine(concept,10); for(OWLClassExpression result : results) { System.out.println(result); } int desiredResultSize = 107; if(results.size() != desiredResultSize) { System.out.println(results.size() + " results found, but should be " + desiredResultSize + "."); } assertTrue(results.size()==desiredResultSize); }
op.setUseHasValueConstructor(true); op.setSubHierarchy(reasoner.getClassHierarchy()); op.setObjectPropertyHierarchy(reasoner.getObjectPropertyHierarchy()); op.setDataPropertyHierarchy(reasoner.getDatatypePropertyHierarchy()); op.init();
@Test public void rhoDRDownTest5() throws ParseException, LearningProblemUnsupportedException, ComponentInitException { AbstractReasonerComponent reasoner = TestOntologies.getTestOntology(TestOntology.SWORE); RhoDRDown op = new RhoDRDown(); op.setReasoner(reasoner); op.setSubHierarchy(reasoner.getClassHierarchy()); op.setObjectPropertyHierarchy(reasoner.getObjectPropertyHierarchy()); op.setDataPropertyHierarchy(reasoner.getDatatypePropertyHierarchy()); op.init(); // Description concept = KBParser.parseConcept("((NOT \"http://ns.softwiki.de/req/Requirement\") OR (ALL \"http://ns.softwiki.de/req/isCreatedBy\".(NOT \"http://ns.softwiki.de/req/Creditor\")))"); OWLClassExpression concept = KBParser.parseConcept("(NOT \"http://ns.softwiki.de/req/Requirement\" OR ALL \"http://ns.softwiki.de/req/isCreatedBy\".NOT \"http://ns.softwiki.de/req/Creditor\")"); System.out.println(concept); Set<OWLClassExpression> refinements = op.refine(concept, 8); for(OWLClassExpression refinement : refinements) { System.out.println(refinement); } }
op.setReasoner(reasoner); op.setSubHierarchy(reasoner.getClassHierarchy()); op.setObjectPropertyHierarchy(reasoner.getObjectPropertyHierarchy()); op.setDataPropertyHierarchy(reasoner.getDatatypePropertyHierarchy()); op.init();
op.setFrequencyThreshold(5); op.setSubHierarchy(reasoner.getClassHierarchy()); op.setObjectPropertyHierarchy(reasoner.getObjectPropertyHierarchy()); op.setDataPropertyHierarchy(reasoner.getDatatypePropertyHierarchy()); op.init();
@Test public void rhoDRDownTest4() throws ParseException, LearningProblemUnsupportedException, ComponentInitException { AbstractReasonerComponent reasoner = TestOntologies.getTestOntology(TestOntology.RHO1); RhoDRDown op = new RhoDRDown(); op.setReasoner(reasoner); op.setSubHierarchy(reasoner.getClassHierarchy()); op.setObjectPropertyHierarchy(reasoner.getObjectPropertyHierarchy()); op.setDataPropertyHierarchy(reasoner.getDatatypePropertyHierarchy()); op.init(); OWLClassExpression concept = KBParser.parseConcept("(car AND EXISTS hasOwner.person)"); // Description concept = Thing.instance; Set<OWLClassExpression> refinements = op.refine(concept, 6); for(OWLClassExpression refinement : refinements) { System.out.println(refinement); } }
@Test public void invertedOperatorTest() throws ParseException, ComponentInitException { AbstractReasonerComponent reasoner = TestOntologies.getTestOntology(TestOntology.RHO1); RhoDRDown op = new RhoDRDown(); op.setReasoner(reasoner); op.setSubHierarchy(reasoner.getClassHierarchy()); op.setObjectPropertyHierarchy(reasoner.getObjectPropertyHierarchy()); op.setDataPropertyHierarchy(reasoner.getDatatypePropertyHierarchy()); op.setDropDisjuncts(true); op.init(); LengthLimitedRefinementOperator operator = new OperatorInverter(op); OWLClassExpression concept = KBParser.parseConcept("(limo AND EXISTS hasOwner.man)"); Set<OWLClassExpression> refinements = operator.refine(concept, 6); for(OWLClassExpression refinement : refinements) { System.out.println(refinement); } // we should get four upward refinements // (replacing limo => car, man => person, or drop one of the intersects) assertTrue(refinements.size()==4); }
op.setReasoner(reasoner); op.setSubHierarchy(reasoner.getClassHierarchy()); op.setObjectPropertyHierarchy(reasoner.getObjectPropertyHierarchy()); op.setDataPropertyHierarchy(reasoner.getDatatypePropertyHierarchy()); OWLClassExpressionLengthMetric metric = new OWLClassExpressionLengthMetric();
op.setReasoner(reasoner); op.setSubHierarchy(reasoner.getClassHierarchy()); op.setObjectPropertyHierarchy(reasoner.getObjectPropertyHierarchy()); op.setDataPropertyHierarchy(reasoner.getDatatypePropertyHierarchy()); op.init();