|
From: Bryan T. <tho...@us...> - 2007-04-19 19:13:50
|
Update of /cvsroot/cweb/bigdata-rdf/src/java/com/bigdata/rdf/inf In directory sc8-pr-cvs4.sourceforge.net:/tmp/cvs-serv3033/src/java/com/bigdata/rdf/inf Modified Files: RuleRdfs02.java AbstractRuleRdf.java Rule.java RuleRdfs09.java RuleRdf01.java RuleRdfs03.java Log Message: Optimization for Rule rdf1. Index: RuleRdf01.java =================================================================== RCS file: /cvsroot/cweb/bigdata-rdf/src/java/com/bigdata/rdf/inf/RuleRdf01.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** RuleRdf01.java 18 Apr 2007 17:29:07 -0000 1.9 --- RuleRdf01.java 19 Apr 2007 19:13:45 -0000 1.10 *************** *** 44,48 **** package com.bigdata.rdf.inf; ! import com.bigdata.btree.IEntryIterator; import com.bigdata.rdf.KeyOrder; --- 44,50 ---- package com.bigdata.rdf.inf; ! import java.util.ArrayList; ! import java.util.Iterator; ! import com.bigdata.rdf.KeyOrder; *************** *** 70,111 **** final long computeStart = System.currentTimeMillis(); ! long lastP = -1; ! ! /* ! * This is essentially doing a "select distinct predicate". ! * ! * FIXME there should be a lighter weight way of achieving this result. ! * One way would be to create a "predicates" index that had each ! * distinct predicate (further denormalizing the schema and requiring ! * maintenance). Another approach is to restart the iterator each time a ! * predicate [p] is found by computing the fromKey as [p+1] thereby ! * skipping over all intervening statements in the index (consider how ! * to distribute that query in parallel). ! * ! * @todo write a test for this rule and then write an optimized variant ! * using the incremented toKey approach. ! */ ! IEntryIterator it = store.getPOSIndex().rangeIterator(null,null); ! ! while ( it.hasNext() ) { ! ! it.next(); ! ! stats.stmts1++; ! SPO stmt = new SPO(KeyOrder.POS, store.keyBuilder, it.getKey()); ! if ( stmt.p != lastP ) { ! ! lastP = stmt.p; - buffer.add(new SPO(stmt.p, store.rdfType.id, - store.rdfProperty.id)); - stats.numComputed++; ! } ! ! } stats.computeTime += System.currentTimeMillis() - computeStart; --- 72,135 ---- final long computeStart = System.currentTimeMillis(); ! // if (false) { ! // ! // /* ! // * Original implementation does a full scan of all statements in the ! // * KB. ! // */ ! // ! // long lastP = NULL; ! // ! // IEntryIterator it = store.getPOSIndex().rangeIterator(null, null); ! // ! // while (it.hasNext()) { ! // ! // it.next(); ! // ! // stats.stmts1++; ! // ! // SPO stmt = new SPO(KeyOrder.POS, store.keyBuilder, it.getKey()); ! // ! // if (stmt.p != lastP) { ! // ! // lastP = stmt.p; ! // ! // stats.numComputed++; ! // ! // System.err.println("" + stats.numComputed + " : " + lastP ! // + " : " + store.toString(lastP)); ! // ! // buffer.add(new SPO(stmt.p, store.rdfType.id, ! // store.rdfProperty.id)); ! // ! // } ! // ! // } ! // ! // } else { ! /* ! * Alternative implementation does an efficient scan for only the ! * distinct predicates in the KB. ! */ ! // find the distinct predicates in the KB. ! ArrayList<Long> ids = store.distinctTermScan(KeyOrder.POS); ! ! Iterator<Long> itr = ids.iterator(); ! ! while (itr.hasNext()) { ! ! stats.stmts1++; ! ! long p = itr.next(); ! ! buffer.add(new SPO(p, store.rdfType.id, store.rdfProperty.id)); stats.numComputed++; ! } ! ! // } stats.computeTime += System.currentTimeMillis() - computeStart; Index: RuleRdfs02.java =================================================================== RCS file: /cvsroot/cweb/bigdata-rdf/src/java/com/bigdata/rdf/inf/RuleRdfs02.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** RuleRdfs02.java 18 Apr 2007 17:29:07 -0000 1.2 --- RuleRdfs02.java 19 Apr 2007 19:13:45 -0000 1.3 *************** *** 44,49 **** package com.bigdata.rdf.inf; ! ! public class RuleRdfs02 extends AbstractRuleRdfs_2_3_7_9 { --- 44,57 ---- package com.bigdata.rdf.inf; ! /** ! * rdfs2: ! * <pre> ! * triple( u rdf:type x) :- ! * triple( a rdfs:domain x), ! * triple( u a y ). ! * </pre> ! * @author <a href="mailto:tho...@us...">Bryan Thompson</a> ! * @version $Id$ ! */ public class RuleRdfs02 extends AbstractRuleRdfs_2_3_7_9 { Index: RuleRdfs09.java =================================================================== RCS file: /cvsroot/cweb/bigdata-rdf/src/java/com/bigdata/rdf/inf/RuleRdfs09.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** RuleRdfs09.java 18 Apr 2007 17:29:07 -0000 1.5 --- RuleRdfs09.java 19 Apr 2007 19:13:45 -0000 1.6 *************** *** 53,59 **** * triple(?v,rdf:type,?u). * </pre> - * <pre> - * <u rdfs:subClassOf x> AND <v rdf:type u> IMPLIES <v rdf:type x> - * </pre> */ public class RuleRdfs09 extends AbstractRuleRdfs_2_3_7_9 { --- 53,56 ---- Index: Rule.java =================================================================== RCS file: /cvsroot/cweb/bigdata-rdf/src/java/com/bigdata/rdf/inf/Rule.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** Rule.java 18 Apr 2007 17:29:07 -0000 1.7 --- Rule.java 19 Apr 2007 19:13:45 -0000 1.8 *************** *** 178,181 **** --- 178,188 ---- long computeTime; + public String toString() { + + return ", #stmts1=" + stmts1 + ", #stmts2=" + stmts2 + + ", #subqueries=" + numSubqueries + ", numConsidered+" + + numConsidered + ", computeTime=" + computeTime; + } + } Index: AbstractRuleRdf.java =================================================================== RCS file: /cvsroot/cweb/bigdata-rdf/src/java/com/bigdata/rdf/inf/AbstractRuleRdf.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** AbstractRuleRdf.java 14 Apr 2007 13:33:51 -0000 1.8 --- AbstractRuleRdf.java 19 Apr 2007 19:13:45 -0000 1.9 *************** *** 44,51 **** package com.bigdata.rdf.inf; - import org.openrdf.model.URI; - - import com.bigdata.btree.IIndex; - public abstract class AbstractRuleRdf extends Rule { --- 44,47 ---- Index: RuleRdfs03.java =================================================================== RCS file: /cvsroot/cweb/bigdata-rdf/src/java/com/bigdata/rdf/inf/RuleRdfs03.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** RuleRdfs03.java 18 Apr 2007 17:29:07 -0000 1.2 --- RuleRdfs03.java 19 Apr 2007 19:13:45 -0000 1.3 *************** *** 44,49 **** package com.bigdata.rdf.inf; ! ! public class RuleRdfs03 extends AbstractRuleRdfs_2_3_7_9 { --- 44,59 ---- package com.bigdata.rdf.inf; ! /** ! * rdfs3: ! * ! * <pre> ! * triple(v rdf:type x) :- ! * triple(a rdfs:range x), ! * triple(u a v). ! * </pre> ! * ! * @author <a href="mailto:tho...@us...">Bryan Thompson</a> ! * @version $Id$ ! */ public class RuleRdfs03 extends AbstractRuleRdfs_2_3_7_9 { |