⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 removestatements.java

📁 这是外国一个开源推理机
💻 JAVA
字号:
/*  Sesame - Storage and Querying architecture for RDF and RDF Schema *  Copyright (C) 2001-2005 Aduna * *  Contact:  *  	Aduna *  	Prinses Julianaplein 14 b *  	3817 CS Amersfoort *  	The Netherlands *  	tel. +33 (0)33 465 99 87 *  	fax. +33 (0)33 465 99 87 * *  	http://aduna.biz/ *  	http://www.openrdf.org/ *   *  This library is free software; you can redistribute it and/or *  modify it under the terms of the GNU Lesser General Public *  License as published by the Free Software Foundation; either *  version 2.1 of the License, or (at your option) any later version. * *  This library is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU *  Lesser General Public License for more details. * *  You should have received a copy of the GNU Lesser General Public *  License along with this library; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */package org.openrdf.sesame.sail.test.benchmark.tests;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Set;import org.openrdf.util.log.ThreadLog;import org.openrdf.model.Resource;import org.openrdf.model.Statement;import org.openrdf.model.URI;import org.openrdf.model.Value;import org.openrdf.sesame.sail.RdfRepository;import org.openrdf.sesame.sail.SailUpdateException;import org.openrdf.sesame.sail.StatementIterator;import org.openrdf.sesame.sail.test.benchmark.model.BMStatement;import org.openrdf.sesame.sail.test.benchmark.pools.RdfRepositoryPool;/** * Tests performance of * org.openrdf.sesame.sail.RdfRepository.removeStatements. * * @author Peter van 't Hof. * @version $Revision: 1.4 $ */public class RemoveStatements extends RdfRepositoryBMTestB {/*-------------+| Constructors |+-------------*/	/**	 * Creates a new benchmark test which tests	 * org.openrdf.sesame.sail.RdfRepository.removeStatements.	 *	 * @param rdfRepository RdfRepository to test.	 */	public RemoveStatements(RdfRepository rdfRepository) {		super("removeStatements", rdfRepository);		_needsPool = true;	}/*--------+| Methods |+--------*/	/**	 * Tests performance of	 * org.openrdf.sesame.sail.RdfRepository.removeStatements.	 *	 * @throws Exception If Exception was thrown.	 */	public void test()		throws Exception {		_status("Removing...");		super.test();		if (_testDone) {			_status("Removing done.");		}	}	/* Gets all statements. Removes every combination of subject, predicate,	 * object and wildcards.	 */	protected void _testA()		throws SailUpdateException {		Iterator i = _cutDown(_getStatements(), 16).iterator();				while (i.hasNext()) {			BMStatement statement = (BMStatement)i.next();						Resource subject = statement.getSubject();			URI predicate = statement.getPredicate();			Value object = statement.getObject();						_removeStatementsA(subject, null, null);			_removeStatementsA(null, predicate, null);			_removeStatementsA(null, null, object);			_removeStatementsA(subject, predicate, null);			_removeStatementsA(subject, null, object);			_removeStatementsA(null, predicate, object);			_removeStatementsA(subject, predicate, object);		}	}	/* Call to RdfRepository. Checks if statements are removed. Pattern should	 * exist and therefore afterwards adds all removed statements to the	 * repository so no statements are lost.	 */	protected void _removeStatementsA(Resource subject, URI predicate, Value object)		throws SailUpdateException	{		if (!_testDone) {			// Suppress traces.			ThreadLog.registerThread(null, 0);							// Save statements to be removed.			Set statements = new HashSet();			StatementIterator i = _getStatements(subject, predicate, object);					while (i.hasNext()) {				statements.add(i.next());			}			i.close();						// Remove statements.			_startA();			_rdfRepository.startTransaction();			int statementsRemoved = 				_rdfRepository.removeStatements(subject, predicate, object);			_rdfRepository.commitTransaction();					_stopA();			if (statementsRemoved == 0) {				_error("removeStatements(" + 					   new BMStatement(subject, predicate, object) + 					   ") should remove statements.");			}			// Add saved statements to repository.			Iterator j = statements.iterator();						_rdfRepository.startTransaction();						while (j.hasNext()) {				Statement statement = (Statement)j.next();								_rdfRepository.addStatement(statement.getSubject(),											statement.getPredicate(),											statement.getObject());			}			_rdfRepository.commitTransaction();			// Show traces.			ThreadLog.registerThread(null, 5);						if (getTime() > _maxTime) {				_error("Maximum time reached. Test aborted.");				_testDone = true;			}		}	}	// This method consists of two parts. See below.	protected void _testB()		throws SailUpdateException {		/* Part one: remove statements, pattern consists of values who do not		 * exist and wildcards.		 */		_removeStatementsB(RdfRepositoryPool.noSubject, null, null);		_removeStatementsB(null, RdfRepositoryPool.noPredicate, null);		_removeStatementsB(null, null, RdfRepositoryPool.noObject);		_removeStatementsB(RdfRepositoryPool.noSubject, RdfRepositoryPool.noPredicate, null);		_removeStatementsB(RdfRepositoryPool.noSubject, null, RdfRepositoryPool.noObject);		_removeStatementsB(null, RdfRepositoryPool.noPredicate, RdfRepositoryPool.noObject);		_removeStatementsB(RdfRepositoryPool.noSubject, RdfRepositoryPool.noPredicate, RdfRepositoryPool.noObject);		Iterator i = _cutDown(_getStatements(), 8).iterator();								while (i.hasNext()) {			BMStatement statement = (BMStatement)i.next();						Resource subject = statement.getSubject();			URI predicate = statement.getPredicate();			Value object = statement.getObject();						_removeStatementsB(RdfRepositoryPool.noSubject, null, object);			_removeStatementsB(RdfRepositoryPool.noSubject, predicate, null);			_removeStatementsB(RdfRepositoryPool.noSubject, predicate, object);						_removeStatementsB(subject, RdfRepositoryPool.noPredicate, object);			_removeStatementsB(null, RdfRepositoryPool.noPredicate, object);			_removeStatementsB(subject, RdfRepositoryPool.noPredicate, null);						_removeStatementsB(subject, predicate, RdfRepositoryPool.noObject);			_removeStatementsB(null, predicate, RdfRepositoryPool.noObject);			_removeStatementsB(subject, null, RdfRepositoryPool.noObject);						_removeStatementsB(RdfRepositoryPool.noSubject, RdfRepositoryPool.noPredicate, object);			_removeStatementsB(RdfRepositoryPool.noSubject, predicate, RdfRepositoryPool.noObject);			_removeStatementsB(subject, RdfRepositoryPool.noPredicate, RdfRepositoryPool.noObject);		}				/* Part two: remove statements, pattern consists of statements who do		 * not exist.		 */		Iterator j = _cutDown(_getNoStatements(), 8).iterator();					while (j.hasNext()) {			BMStatement noStatement= (BMStatement)j.next();						_removeStatementsB(					noStatement.getSubject(), noStatement.getPredicate(),					noStatement.getObject());		}	}		/* Call to RdfRepository. Checks if statements are not removed. Pattern	 * should not exist.	 */	protected void _removeStatementsB(Resource subject, URI predicate, Value object)		throws SailUpdateException	{		if (!_testDone) {			// Suppress traces.			ThreadLog.registerThread(null, 0);			_startB();			_rdfRepository.startTransaction();			int statementsRemoved = 				_rdfRepository.removeStatements(subject, predicate, object);			_rdfRepository.commitTransaction();					_stopB();						if (statementsRemoved > 0) {				_error("removeStatements(" + 					   new BMStatement(subject, predicate, object) +					   ") should not remove statement.");			}			// Show traces.			ThreadLog.registerThread(null, 5);						if (getTime() > _maxTime) {				_error("Maximum time reached. Test aborted.");				_testDone = true;			}		}	}	protected List _getStatements() {		return RdfRepositoryPool.statements;	}	protected List _getNoStatements() {		return RdfRepositoryPool.noStatements;	}	protected StatementIterator _getStatements(			Resource subject, URI predicate, Value object)	{		return _rdfRepository.getStatements(subject, predicate, object);	}	public String toString() { 		return _toString("Removed", "Not removed") + "\n" +	 		"\n" +		 	"Removing\t|Time in s\n" + 			"----------------+--------\n" +	 		"Total\t\t|" + (int)((double)getTime()/1000 + 0.5);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -