001    package org.dllearner.test;
002    
003    import java.util.SortedSet;
004    import java.util.TreeSet;
005    
006    import org.dllearner.kb.sparql.SPARQLTasks;
007    import org.dllearner.kb.sparql.SparqlEndpoint;
008    import org.dllearner.utilities.datastructures.SetManipulation;
009    import org.dllearner.utilities.datastructures.StringTuple;
010    import org.dllearner.utilities.statistics.SimpleClock;
011    
012    public class FilterTest {
013    
014            
015            private static SPARQLTasks st;
016            private static String subject = "http://dbpedia.org/resource/%22Big%22_Ron";
017            static int  howmany = 150;
018            static SimpleClock sc = new SimpleClock();
019            
020            static String qlong="SELECT * WHERE {  <http://dbpedia.org/resource/%22Big%22_Ron> ?predicate ?object.  FILTER(  (!isLiteral(?object))&&( ( !regex(str(?predicate), 'http://dbpedia.org/property/relatedInstance') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/website') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/owner') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/wikiPageUsesTemplate') ) &&( !regex(str(?predicate), 'http://www.w3.org/2002/07/owl#sameAs') ) &&( !regex(str(?predicate), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/standard') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/wikipage') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/reference') ) &&( !regex(str(?predicate), 'http://www.w3.org/2004/02/skos/core') ))&&( ( !regex(str(?object), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?object), 'http://upload.wikimedia.org/wikipedia') ) &&( !regex(str(?object), 'http://www4.wiwiss.fu-berlin.de/flickrwrappr') ) &&( !regex(str(?object), 'http://dbpedia.org/resource/Template') ) &&( !regex(str(?object), 'http://upload.wikimedia.org/wikipedia/commons') ) &&( !regex(str(?object), 'http://www.w3.org/2006/03/wn/wn20/instances/synset') ) &&( !regex(str(?object), 'http://dbpedia.org/resource/Category:') ) &&( !regex(str(?object), 'http://www.w3.org/2004/02/skos/core') ) &&( !regex(str(?object), 'http://www.geonames.org') ))).}";
021            /*static String qextralong="SELECT * WHERE {  <http://dbpedia.org/resource/%22Big%22_Ron> ?predicate ?object.  FILTER(  (!isLiteral(?object))&&( ( !regex(str(?predicate), 'http://dbpedia.org/property/relatedInstance') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/website') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/owner') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/wikiPageUsesTemplate') ) &&( !regex(str(?predicate), 'http://www.w3.org/2002/07/owl#sameAs') ) &&( !regex(str(?predicate), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/standard') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/wikipage') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/reference') ) &&( !regex(str(?predicate), 'http://www.w3.org/2004/02/skos/core') ))&&( ( !regex(str(?object), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?object), 'http://upload.wikimedia.org/wikipedia') ) &&( !regex(str(?object), 'http://www4.wiwiss.fu-berlin.de/flickrwrappr') ) &&( !regex(str(?object), 'http://dbpedia.org/resource/Template') ) &&( !regex(str(?object), 'http://upload.wikimedia.org/wikipedia/commons') ) &&( !regex(str(?object), 'http://www.w3.org/2006/03/wn/wn20/instances/synset') ) &&( !regex(str(?object), 'http://dbpedia.org/resource/Category:') ) &&( !regex(str(?object), 'http://www.w3.org/2004/02/skos/core') ) &&( !regex(str(?object), 'http://www.geonames.org') )))." +
022                            "OPTIONAL { ?object ?p2 ?o2.  FILTER(  (!isLiteral(?o2))&&( ( !regex(str(?p2), 'http://dbpedia.org/property/relatedInstance') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/website') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/owner') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/wikiPageUsesTemplate') ) &&( !regex(str(?p2), 'http://www.w3.org/2002/07/owl#sameAs') ) &&( !regex(str(?p2), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/standard') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/wikipage') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/reference') ) &&( !regex(str(?p2), 'http://www.w3.org/2004/02/skos/core') ))&&( ( !regex(str(?o2), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?o2), 'http://upload.wikimedia.org/wikipedia') ) &&( !regex(str(?o2), 'http://www4.wiwiss.fu-berlin.de/flickrwrappr') ) &&( !regex(str(?o2), 'http://dbpedia.org/resource/Template') ) &&( !regex(str(?o2), 'http://upload.wikimedia.org/wikipedia/commons') ) &&( !regex(str(?o2), 'http://www.w3.org/2006/03/wn/wn20/instances/synset') ) &&( !regex(str(?o2), 'http://dbpedia.org/resource/Category:') ) &&( !regex(str(?o2), 'http://www.w3.org/2004/02/skos/core') ) &&( !regex(str(?o2), 'http://www.geonames.org') ))).}}";
023            */
024            static String qextralong="SELECT * WHERE { { <http://dbpedia.org/resource/Angela_Merkel> ?predicate ?object.  FILTER(  (!isLiteral(?object))&&( ( !regex(str(?predicate), 'http://dbpedia.org/property/relatedInstance') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/website') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/owner') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/wikiPageUsesTemplate') ) &&( !regex(str(?predicate), 'http://www.w3.org/2002/07/owl#sameAs') ) &&( !regex(str(?predicate), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/standard') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/wikipage') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/reference') ) &&( !regex(str(?predicate), 'http://www.w3.org/2004/02/skos/core') ))&&( ( !regex(str(?object), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?object), 'http://upload.wikimedia.org/wikipedia') ) &&( !regex(str(?object), 'http://www4.wiwiss.fu-berlin.de/flickrwrappr') ) &&( !regex(str(?object), 'http://dbpedia.org/resource/Template') ) &&( !regex(str(?object), 'http://upload.wikimedia.org/wikipedia/commons') ) &&( !regex(str(?object), 'http://www.w3.org/2006/03/wn/wn20/instances/synset') ) &&( !regex(str(?object), 'http://dbpedia.org/resource/Category:') ) &&( !regex(str(?object), 'http://www.w3.org/2004/02/skos/core') ) &&( !regex(str(?object), 'http://www.geonames.org') ))).}" +
025            "OPTIONAL { ?object ?p2 ?o2.  FILTER(  (!isLiteral(?o2))&&( ( !regex(str(?p2), 'http://dbpedia.org/property/relatedInstance') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/website') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/owner') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/wikiPageUsesTemplate') ) &&( !regex(str(?p2), 'http://www.w3.org/2002/07/owl#sameAs') ) &&( !regex(str(?p2), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/standard') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/wikipage') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/reference') ) &&( !regex(str(?p2), 'http://www.w3.org/2004/02/skos/core') ))&&( ( !regex(str(?o2), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?o2), 'http://upload.wikimedia.org/wikipedia') ) &&( !regex(str(?o2), 'http://www4.wiwiss.fu-berlin.de/flickrwrappr') ) &&( !regex(str(?o2), 'http://dbpedia.org/resource/Template') ) &&( !regex(str(?o2), 'http://upload.wikimedia.org/wikipedia/commons') ) &&( !regex(str(?o2), 'http://www.w3.org/2006/03/wn/wn20/instances/synset') ) &&( !regex(str(?o2), 'http://dbpedia.org/resource/Category:') ) &&( !regex(str(?o2), 'http://www.w3.org/2004/02/skos/core') ) &&( !regex(str(?o2), 'http://www.geonames.org') ))).}}";
026    
027            
028            static String qshort="SELECT * WHERE {  <http://dbpedia.org/resource/%22Big%22_Ron> ?predicate ?object.  FILTER  (!isLiteral(?object)).}";
029            static String sshort="SELECT * WHERE {  <http://dbpedia.org/resource/%22Big%22_Ron> ?predicate ?object }";
030            static String qextrashort="SELECT * WHERE {  <http://dbpedia.org/resource/Angela_Merkel> ?predicate ?object.  FILTER  (!isLiteral(?object)). OPTIONAL { ?object ?p2 ?o2  FILTER  (!isLiteral(?o2))}}";
031            
032            
033            /**
034             * @param args
035             */
036            @SuppressWarnings("deprecation")
037            public static void main(String[] args) {
038            //      System.out.println(qextralong);
039            
040            //      System.out.println(qextrashort);
041                    
042                     st = new SPARQLTasks( SparqlEndpoint.getEndpointDBpedia());
043                     st.queryAsTuple(subject, true);
044                     st.query(qlong);
045                     st.query(qextralong);
046                     st.query(sshort);
047                    // st.query(qextrashort);
048                     System.out.println(qextrashort);
049                     System.exit(0);
050                    // st.query(qextrashort);
051                    //System.out.println(qextralong);
052                    
053                    //String qlong="SELECT * WHERE {  <http://dbpedia.org/resource/%22Big%22_Ron> ?predicate ?object.  FILTER(  (!isLiteral(?object))&&( ( !regex(str(?predicate), 'http://dbpedia.org/property/relatedInstance') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/website') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/owner') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/wikiPageUsesTemplate') ) &&( !regex(str(?predicate), 'http://www.w3.org/2002/07/owl#sameAs') ) &&( !regex(str(?predicate), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/standard') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/wikipage') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/reference') ) &&( !regex(str(?predicate), 'http://www.w3.org/2004/02/skos/core') ))&&( ( !regex(str(?object), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?object), 'http://upload.wikimedia.org/wikipedia') ) &&( !regex(str(?object), 'http://www4.wiwiss.fu-berlin.de/flickrwrappr') ) &&( !regex(str(?object), 'http://dbpedia.org/resource/Template') ) &&( !regex(str(?object), 'http://upload.wikimedia.org/wikipedia/commons') ) &&( !regex(str(?object), 'http://www.w3.org/2006/03/wn/wn20/instances/synset') ) &&( !regex(str(?object), 'http://dbpedia.org/resource/Category:') ) &&( !regex(str(?object), 'http://www.w3.org/2004/02/skos/core') ) )).}";
054                    
055                    
056                    //testLong();
057                    
058                    //testShortWithFilter();
059                    //testShort();
060                    testLong();
061                    testExtraLong();
062                    //testExtraShort();
063                    //testShort();
064                    //testLong();
065                    //testShortWithFilter();
066                    
067                    
068                    /*sc.reset();
069                    for (int i = 0; i < howmany; i++) {
070                            st.query(sshort);
071                    }
072                    sc.printAndSet("supershort ");
073                    */
074                    
075                    
076                    
077            }
078            
079            @SuppressWarnings("deprecation")
080            static void testShort(){
081                    SortedSet<StringTuple> tupleset = new TreeSet<StringTuple>();
082                    sc.reset();
083                    for (int i = 0; i < howmany; i++) {
084                            
085                            tupleset = st.queryAsTuple(subject, true);
086                            
087                    }
088                    SetManipulation.printSet("before", tupleset);
089            
090                    sc.printAndSet("SHORT ");
091                    
092            }
093            
094            static void  testLong(){
095                    sc.reset();
096                    for (int i = 0; i < howmany; i++) {
097                            st.query(qlong);
098                    }
099                    sc.printAndSet("long ");
100            }
101            
102            static void  testExtraLong(){
103                    sc.reset();
104                    for (int i = 0; i < howmany; i++) {
105                            st.query(qextralong);
106                    }
107                    sc.printAndSet("extraLong ");
108            }
109            
110            static void  testExtraShort(){
111                    sc.reset();
112                    for (int i = 0; i < howmany; i++) {
113                            st.query(qextrashort);
114                    }
115                    sc.printAndSet("qextrashort ");
116            }
117            
118            @SuppressWarnings("deprecation")
119            static void  testShortWithFilter(){
120                    SortedSet<StringTuple> tupleset = new TreeSet<StringTuple>();
121                    SortedSet<StringTuple> afterfilter= new TreeSet<StringTuple>();
122                    /*RuleExecutor re = new  RuleExecutor();
123                    
124            
125                    re.addFilterRule(new SimplePredicateFilterRule( "http://dbpedia.org/property/relatedInstance" ));
126                    re.addFilterRule(new SimplePredicateFilterRule( "http://dbpedia.org/property/website"));
127                    re.addFilterRule(new SimplePredicateFilterRule("http://dbpedia.org/property/owner" ));
128                    re.addFilterRule(new SimplePredicateFilterRule("http://dbpedia.org/property/wikiPageUsesTemplate" ));
129                    re.addFilterRule(new SimplePredicateFilterRule("http://www.w3.org/2002/07/owl#sameAs" ));
130                    re.addFilterRule(new SimplePredicateFilterRule("http://xmlns.com/foaf/0.1/" ));
131                    re.addFilterRule(new SimplePredicateFilterRule("http://dbpedia.org/property/standard"));
132                    re.addFilterRule(new SimplePredicateFilterRule("http://dbpedia.org/property/wikipage"));
133                    re.addFilterRule(new SimplePredicateFilterRule("http://dbpedia.org/property/reference"));
134                    re.addFilterRule(new SimplePredicateFilterRule("http://www.w3.org/2004/02/skos/core"));
135                    re.addFilterRule(new SimpleObjectFilterRule("http://xmlns.com/foaf/0.1/" ));
136                    re.addFilterRule(new SimpleObjectFilterRule( "http://upload.wikimedia.org/wikipedia"));
137                    re.addFilterRule(new SimpleObjectFilterRule( "http://www4.wiwiss.fu-berlin.de/flickrwrappr"));
138                    re.addFilterRule(new SimpleObjectFilterRule("http://dbpedia.org/resource/Template" ));
139                    re.addFilterRule(new SimpleObjectFilterRule( "http://upload.wikimedia.org/wikipedia/commons"));
140                    re.addFilterRule(new SimpleObjectFilterRule("http://www.w3.org/2006/03/wn/wn20/instances/synset" ));
141                    re.addFilterRule(new SimpleObjectFilterRule("http://dbpedia.org/resource/Category:" ));
142                    re.addFilterRule(new SimpleObjectFilterRule( "http://www.w3.org/2004/02/skos/core" ));
143                    re.addFilterRule(new SimpleObjectFilterRule("http://www.geonames.org"));
144                    
145                    */
146                    
147                    sc.reset();
148                    for (int i = 0; i < howmany; i++) {
149                            
150                            tupleset = st.queryAsTuple(subject, true);
151                            //afterfilter = re.filterTuples(subject,tupleset);
152                    }
153                    sc.printAndSet("SHORT with filter");
154                    SetManipulation.printSet("before", tupleset);
155                    SetManipulation.printSet("after", afterfilter);
156            }
157    
158    }