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 }