import org.drools.KnowledgeBase; import org.drools.KnowledgeBaseFactory; import org.drools.builder.KnowledgeBuilder; import org.drools.builder.KnowledgeBuilderFactory; import org.drools.builder.ResourceType; import org.drools.io.impl.ClassPathResource; import org.drools.lang.DrlDumper; import org.drools.lang.descr.PackageDescr; import org.drools.runtime.StatefulKnowledgeSession; import org.drools.semantics.XMLSerializationHelper; import org.junit.Test; import org.semanticweb.ontologies._2012._1.rule_example.Pattern1Type; import org.semanticweb.ontologies._2012._1.rule_example.Pattern1TypeImpl; import org.semanticweb.ontologies._2012._1.rule_merged.IndividualFactory; import org.semanticweb.ontologies._2012._1.rules.Rule; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import java.util.Collection; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertTrue; import static junit.framework.Assert.fail; public class IndividualsTest { @Test public void testIndividuals() { Pattern1Type p1 = new Pattern1TypeImpl(); Object x = p1.getHasFunctorType(); Object y = ((Pattern1TypeImpl)p1).getHasFunctorTypeInferred(); Collection c = IndividualFactory.getIndividuals(); assertEquals( 21, c.size() ); StatefulKnowledgeSession kSession = createSession(); PackageDescr pack = new PackageDescr(); kSession.setGlobal( "pack", pack ); for ( Object o : c ) { kSession.insert( o ); } kSession.fireAllRules(); String drl = new DrlDumper().dump( pack ); System.err.println( drl ); } private StatefulKnowledgeSession createSession() { KnowledgeBuilder kBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kBuilder.add( new ClassPathResource( "translators/onto2drl.drl" ), ResourceType.DRL ); if ( kBuilder.hasErrors() ) { fail( kBuilder.getErrors().toString() ); } KnowledgeBase kBase = KnowledgeBaseFactory.newKnowledgeBase(); kBase.addKnowledgePackages( kBuilder.getKnowledgePackages() ); return kBase.newStatefulKnowledgeSession(); } @Test public void testNamespaces() { Rule r1 = (Rule) IndividualFactory.getNamedIndividuals().get( "rule1" ); assertNotNull( r1 ); Marshaller marshaller = XMLSerializationHelper.createMarshaller( IndividualFactory.class.getPackage().getName() ); try { marshaller.marshal( r1, System.err ); } catch ( JAXBException e ) { e.printStackTrace(); fail( e.getMessage() ); } } @Test public void testPOMOptions() { // The extra options in the pom file should add an explicit toString // with more content than the FQN + system hash // so let's check it! Rule r1 = (Rule) IndividualFactory.getNamedIndividuals().get( "rule1" ); assertNotNull( r1 ); String def = r1.getClass().getName() + "@" + Integer.toHexString( System.identityHashCode( r1 ) ); String str = r1.toString(); assertNotNull( str ); System.out.println( str ); System.out.println( def ); assertTrue( str.startsWith( def ) ); assertFalse( str.equals( def ) ); } }