private Set<String> getObjectsOfProperty(final Model model, final String subject, final String property) { final InfModel infModel = createInfModel(getOWLMicroReasoner(), createDefaultModel()); infModel.add(model.listStatements()); infModel.add(pcdmModel.listStatements()); return asStream(infModel.listObjectsOfProperty(createResource(subject), createProperty(property))) .filter(RDFNode::isURIResource).map(RDFNode::asResource).map(Resource::getURI).collect(toSet()); } }
private Set<String> getObjectsOfProperty(final Model model, final String subject, final String property) { final InfModel infModel = createInfModel(getOWLMicroReasoner(), createDefaultModel()); infModel.add(model.listStatements()); infModel.add(oreModel.listStatements()); return asStream(infModel.listObjectsOfProperty(createResource(subject), createProperty(property))) .filter(RDFNode::isURIResource).map(RDFNode::asResource).map(Resource::getURI).collect(toSet()); } }
/** * Test that two transitive engines are independent. * See JENA-1260 */ public void testTransitiveEngineSeparation() throws InterruptedException { String NS = "http://example.com/test#"; Property sp = ResourceFactory.createProperty(NS, "sp"); Property p = ResourceFactory.createProperty(NS, "p"); Property s = ResourceFactory.createProperty(NS, "s"); Resource q = ResourceFactory.createProperty(NS, "q"); Reasoner reasoner = ReasonerRegistry.getTransitiveReasoner(); InfModel simple = ModelFactory.createInfModel(reasoner, ModelFactory.createDefaultModel()); simple.add(s, sp, p); assertFalse( simple.contains(s, RDFS.subPropertyOf, p) ); InfModel withSP = ModelFactory.createInfModel(reasoner, ModelFactory.createDefaultModel()); withSP.add(sp, RDFS.subPropertyOf, RDFS.subPropertyOf); withSP.add(s, sp, p); assertTrue( withSP.contains(s, RDFS.subPropertyOf, p) ); simple.add(q, sp, p); assertFalse( simple.contains(q, RDFS.subPropertyOf, p) ); }
/** * Test that two transitive engines are independent. * See JENA-1260 */ public void testTransitiveEngineSeparation() throws InterruptedException { String NS = "http://example.com/test#"; Property sp = ResourceFactory.createProperty(NS, "sp"); Property p = ResourceFactory.createProperty(NS, "p"); Property s = ResourceFactory.createProperty(NS, "s"); Resource q = ResourceFactory.createProperty(NS, "q"); Reasoner reasoner = ReasonerRegistry.getTransitiveReasoner(); InfModel simple = ModelFactory.createInfModel(reasoner, ModelFactory.createDefaultModel()); simple.add(s, sp, p); assertFalse( simple.contains(s, RDFS.subPropertyOf, p) ); InfModel withSP = ModelFactory.createInfModel(reasoner, ModelFactory.createDefaultModel()); withSP.add(sp, RDFS.subPropertyOf, RDFS.subPropertyOf); withSP.add(s, sp, p); assertTrue( withSP.contains(s, RDFS.subPropertyOf, p) ); simple.add(q, sp, p); assertFalse( simple.contains(q, RDFS.subPropertyOf, p) ); }
/** * RETE incremental processing bug. */ public void testRETEDec() { String rule = "(?x ?p ?y) -> (?p rdf:type rdf:Property) ."; Reasoner r = new GenericRuleReasoner(Rule.parseRules(rule)); InfModel m = ModelFactory.createInfModel(r, ModelFactory.createDefaultModel()); Resource source = m.createResource("urn:alfie:testResource"); Property prop = m.createProperty("urn:alfie:testProperty"); Statement s1=m.createStatement(source, prop, "value1"); m.createStatement(source, prop, "value2"); m.add(prop, RDF.type, RDF.Property); m.add(s1); m.prepare(); m.remove(s1); assertIsProperty(m, prop); }
/** * RETE incremental processing bug. */ public void testRETEInc() { String rule = "(?x ?p ?y) -> (?p rdf:type rdf:Property) ."; Reasoner r = new GenericRuleReasoner(Rule.parseRules(rule)); InfModel m = ModelFactory.createInfModel(r, ModelFactory.createDefaultModel()); Resource source = m.createResource("urn:alfie:testResource"); Property prop = m.createProperty("urn:alfie:testProperty"); Statement s1=m.createStatement(source, prop, "value1"); Statement s2=m.createStatement(source, prop, "value2"); m.add(s1); assertIsProperty(m, prop); m.add(s2); m.remove(s1); assertIsProperty(m, prop); }
/** * RETE incremental processing bug. */ public void testRETEDec() { String rule = "(?x ?p ?y) -> (?p rdf:type rdf:Property) ."; Reasoner r = new GenericRuleReasoner(Rule.parseRules(rule)); InfModel m = ModelFactory.createInfModel(r, ModelFactory.createDefaultModel()); Resource source = m.createResource("urn:alfie:testResource"); Property prop = m.createProperty("urn:alfie:testProperty"); Statement s1=m.createStatement(source, prop, "value1"); m.createStatement(source, prop, "value2"); m.add(prop, RDF.type, RDF.Property); m.add(s1); m.prepare(); m.remove(s1); assertIsProperty(m, prop); }
/** * RETE incremental processing bug. */ public void testRETEInc() { String rule = "(?x ?p ?y) -> (?p rdf:type rdf:Property) ."; Reasoner r = new GenericRuleReasoner(Rule.parseRules(rule)); InfModel m = ModelFactory.createInfModel(r, ModelFactory.createDefaultModel()); Resource source = m.createResource("urn:alfie:testResource"); Property prop = m.createProperty("urn:alfie:testProperty"); Statement s1=m.createStatement(source, prop, "value1"); Statement s2=m.createStatement(source, prop, "value2"); m.add(s1); assertIsProperty(m, prop); m.add(s2); m.remove(s1); assertIsProperty(m, prop); }
/** * Check that the use of typed literals in the configuration also works */ public void testTypedConfigParameters() { Model m = ModelFactory.createDefaultModel(); Resource configuration= m.createResource(GenericRuleReasonerFactory.URI); configuration.addProperty(ReasonerVocabulary.PROPenableTGCCaching, m.createTypedLiteral(Boolean.TRUE)); GenericRuleReasoner reasoner = (GenericRuleReasoner)GenericRuleReasonerFactory.theInstance().create(configuration); InfModel im = ModelFactory.createInfModel(reasoner, ModelFactory.createDefaultModel()); Resource Ac = im.createResource(PrintUtil.egNS + "A"); Resource Bc = im.createResource(PrintUtil.egNS + "B"); Resource Cc = im.createResource(PrintUtil.egNS + "C"); im.add(Ac, RDFS.subClassOf, Bc); im.add(Bc, RDFS.subClassOf, Cc); assertTrue("TGC enabled correctly", im.contains(Ac, RDFS.subClassOf, Cc)); }
/** * Check that the use of typed literals in the configuration also works */ public void testTypedConfigParameters() { Model m = ModelFactory.createDefaultModel(); Resource configuration= m.createResource(GenericRuleReasonerFactory.URI); configuration.addProperty(ReasonerVocabulary.PROPenableTGCCaching, m.createTypedLiteral(Boolean.TRUE)); GenericRuleReasoner reasoner = (GenericRuleReasoner)GenericRuleReasonerFactory.theInstance().create(configuration); InfModel im = ModelFactory.createInfModel(reasoner, ModelFactory.createDefaultModel()); Resource Ac = im.createResource(PrintUtil.egNS + "A"); Resource Bc = im.createResource(PrintUtil.egNS + "B"); Resource Cc = im.createResource(PrintUtil.egNS + "C"); im.add(Ac, RDFS.subClassOf, Bc); im.add(Bc, RDFS.subClassOf, Cc); assertTrue("TGC enabled correctly", im.contains(Ac, RDFS.subClassOf, Cc)); }
/** * The reasoner contract for bind(data) is not quite precise. It allows for * reasoners which have state so that reusing the same reasoner on a second data * model might lead to interference. This in fact used to happen with the transitive * reasoner. This is a test to check that the transitive reasoner state reuse has been fixed at source. */ public void testTransitiveBindReuse() { Reasoner r = ReasonerRegistry.getTransitiveReasoner(); InfModel om1 = ModelFactory.createInfModel(r, ModelFactory.createDefaultModel()); Resource c1 = om1.createResource(PrintUtil.egNS + "Class1"); Resource c2 = om1.createResource(PrintUtil.egNS + "Class2"); Resource c3 = om1.createResource(PrintUtil.egNS + "Class3"); om1.add(c1, RDFS.subClassOf, c2); om1.add(c2, RDFS.subClassOf, c3); om1.prepare(); assertFalse(om1.isEmpty()); InfModel om2 = ModelFactory.createInfModel(r, ModelFactory.createDefaultModel()); StmtIterator si = om2.listStatements(); boolean ok = ! si.hasNext(); si.close(); assertTrue("Transitive reasoner state leak", ok); }
/** * The reasoner contract for bind(data) is not quite precise. It allows for * reasoners which have state so that reusing the same reasoner on a second data * model might lead to interference. This in fact used to happen with the transitive * reasoner. This is a test to check that the transitive reasoner state reuse has been fixed at source. */ public void testTransitiveBindReuse() { Reasoner r = ReasonerRegistry.getTransitiveReasoner(); InfModel om1 = ModelFactory.createInfModel(r, ModelFactory.createDefaultModel()); Resource c1 = om1.createResource(PrintUtil.egNS + "Class1"); Resource c2 = om1.createResource(PrintUtil.egNS + "Class2"); Resource c3 = om1.createResource(PrintUtil.egNS + "Class3"); om1.add(c1, RDFS.subClassOf, c2); om1.add(c2, RDFS.subClassOf, c3); om1.prepare(); assertFalse(om1.isEmpty()); InfModel om2 = ModelFactory.createInfModel(r, ModelFactory.createDefaultModel()); StmtIterator si = om2.listStatements(); boolean ok = ! si.hasNext(); si.close(); assertTrue("Transitive reasoner state leak", ok); }