CPD Results

The following document contains the results of PMD's CPD 5.6.1.

Duplications

File Project Line
org/universAAL/context/rdf4j/sail/Collection2SailStore.java universAAL Context rdf4j SAIL for OWL Lite 100
org/universAAL/context/rdf4j/sail/CollectionSailStore.java universAAL Context rdf4j SAIL for OWL Lite 100
	public Collection2SailStore(File dataDir, String tripleIndexes, boolean forceSync, int valueCacheSize,
			int valueIDCacheSize, int namespaceCacheSize, int namespaceIDCacheSize, boolean encrypt)
		throws IOException, SailException
	{
		boolean initialized = false;
		try {
			namespaceStore = new NamespaceStore(dataDir);
			valueStore = new ValueStore(dataDir, forceSync, valueCacheSize, valueIDCacheSize,
					namespaceCacheSize, namespaceIDCacheSize, encrypt);
			tripleStore = new TripleStore(dataDir, tripleIndexes, forceSync);
			initialized = true;
			
			// Preload for performance of cardinality
			onProp = valueStore
				.createIRI("http://www.w3.org/2002/07/owl#onProperty");
			maxCard = valueStore
				.createIRI("http://www.w3.org/2002/07/owl#maxCardinality");
			exactCard = valueStore
				.createIRI("http://www.w3.org/2002/07/owl#cardinality");
			nonNativeInt = valueStore.createIRI(
				"http://www.w3.org/2001/XMLSchema#nonNegativeInteger");
			one = valueStore.createLiteral("1", nonNativeInt);
		}
		finally {
			if (!initialized) {
				close();
			}
		}
	}

	public ValueFactory getValueFactory() {
		return valueStore;
	}

	public void close()
		throws SailException
	{
		try {
			try {
				if (namespaceStore != null) {
					namespaceStore.close();
				}
			}
			finally {
				try {
					if (valueStore != null) {
						valueStore.close();
					}
				}
				finally {
					if (tripleStore != null) {
						tripleStore.close();
					}
				}
			}
		}
		catch (IOException e) {
			logger.warn("Failed to close store", e);
			throw new SailException(e);
		}
	}

	public EvaluationStatistics getEvaluationStatistics() {
		return new NativeEvaluationStatistics(valueStore, tripleStore);
	}

	public SailSource getExplicitSailSource() {
		return new NativeSailSource(true);
	}

	public SailSource getInferredSailSource() {
		return new NativeSailSource(false);
	}

	List<Integer> getContextIDs(Resource... contexts)
		throws IOException
	{
		assert contexts.length > 0 : "contexts must not be empty";

		// Filter duplicates
		LinkedHashSet<Resource> contextSet = new LinkedHashSet<Resource>();
		Collections.addAll(contextSet, contexts);

		// Fetch IDs, filtering unknown resources from the result
		List<Integer> contextIDs = new ArrayList<Integer>(contextSet.size());
		for (Resource context : contextSet) {
			if (context == null) {
				contextIDs.add(0);
			}
			else {
				int contextID = valueStore.getID(context);
				if (contextID != NativeValue.UNKNOWN_ID) {
					contextIDs.add(contextID);
				}
			}
		}

		return contextIDs;
	}

	/**
	 * Creates a statement iterator based on the supplied pattern.
	 * 
	 * @param subj
	 *        The subject of the pattern, or <tt>null</tt> to indicate a wildcard.
	 * @param pred
	 *        The predicate of the pattern, or <tt>null</tt> to indicate a wildcard.
	 * @param obj
	 *        The object of the pattern, or <tt>null</tt> to indicate a wildcard.
	 * @param contexts
	 *        The context(s) of the pattern. Note that this parameter is a vararg and as such is optional. If
	 *        no contexts are supplied the method operates on the entire repository.
	 * @return A StatementIterator that can be used to iterate over the statements that match the specified
	 *         pattern.
	 */
	CloseableIteration<? extends Statement, SailException> createStatementIterator(Resource subj, IRI pred,
			Value obj, boolean explicit, Resource... contexts)
		throws IOException
	{
		int subjID = NativeValue.UNKNOWN_ID;
		if (subj != null) {
			subjID = valueStore.getID(subj);
			if (subjID == NativeValue.UNKNOWN_ID) {
				return new EmptyIteration<Statement, SailException>();
			}
		}

		int predID = NativeValue.UNKNOWN_ID;
		if (pred != null) {
			predID = valueStore.getID(pred);
			if (predID == NativeValue.UNKNOWN_ID) {
				return new EmptyIteration<Statement, SailException>();
			}
		}

		int objID = NativeValue.UNKNOWN_ID;
		if (obj != null) {
			objID = valueStore.getID(obj);
			if (objID == NativeValue.UNKNOWN_ID) {
				return new EmptyIteration<Statement, SailException>();
			}
		}

		List<Integer> contextIDList = new ArrayList<Integer>(contexts.length);
		if (contexts.length == 0) {
			contextIDList.add(NativeValue.UNKNOWN_ID);
		}
		else {
			for (Resource context : contexts) {
				if (context == null) {
					contextIDList.add(0);
				}
				else {
					int contextID = valueStore.getID(context);

					if (contextID != NativeValue.UNKNOWN_ID) {
						contextIDList.add(contextID);
					}
				}
			}
		}

		ArrayList<NativeStatementIterator> perContextIterList = new ArrayList<NativeStatementIterator>(
				contextIDList.size());

		for (int contextID : contextIDList) {
			RecordIterator btreeIter = tripleStore.getTriples(subjID, predID, objID, contextID, explicit,
					false);

			perContextIterList.add(new NativeStatementIterator(btreeIter, valueStore));
		}

		if (perContextIterList.size() == 1) {
			return perContextIterList.get(0);
		}
		else {
			return new UnionIteration<Statement, SailException>(perContextIterList);
		}
	}

	double cardinality(Resource subj, IRI pred, Value obj, Resource context)
		throws IOException
	{
		int subjID = NativeValue.UNKNOWN_ID;
		if (subj != null) {
			subjID = valueStore.getID(subj);
			if (subjID == NativeValue.UNKNOWN_ID) {
				return 0;
			}
		}

		int predID = NativeValue.UNKNOWN_ID;
		if (pred != null) {
			predID = valueStore.getID(pred);
			if (predID == NativeValue.UNKNOWN_ID) {
				return 0;
			}
		}

		int objID = NativeValue.UNKNOWN_ID;
		if (obj != null) {
			objID = valueStore.getID(obj);
			if (objID == NativeValue.UNKNOWN_ID) {
				return 0;
			}
		}

		int contextID = NativeValue.UNKNOWN_ID;
		if (context != null) {
			contextID = valueStore.getID(context);
			if (contextID == NativeValue.UNKNOWN_ID) {
				return 0;
			}
		}

		return tripleStore.cardinality(subjID, predID, objID, contextID);
	}

	private final class NativeSailSource extends BackingSailSource {

		private final boolean explicit;

		public NativeSailSource(boolean explicit) {
			this.explicit = explicit;
		}

		@Override
		public SailSource fork() {
			throw new UnsupportedOperationException("This store does not support multiple datasets");
		}

		public SailSink sink(IsolationLevel level)
			throws SailException
		{
			return new NativeSailSink(explicit);
		}

		public NativeSailDataset dataset(IsolationLevel level)
			throws SailException
		{
			return new NativeSailDataset(explicit);
		}

	}

	private final class NativeSailSink implements SailSink {

		private final boolean explicit;

		public NativeSailSink(boolean explicit)
			throws SailException
		{
			this.explicit = explicit;
		}

		public void close() {
			// no-op
		}

		public void prepare()
			throws SailException
		{
			// serializable is not supported at this level
		}

		public synchronized void flush()
			throws SailException
		{
			sinkStoreAccessLock.lock();
			try {
				try {
					valueStore.sync();
				}
				finally {
					try {
						namespaceStore.sync();
					}
					finally {
						if (storeTxnStarted.get()) {
							tripleStore.commit();
							// do not set flag to false until _after_ commit is succesfully completed.
							storeTxnStarted.set(false);
						}
					}
				}
			}
			catch (IOException e) {
				logger.error("Encountered an unexpected problem while trying to commit", e);
				throw new SailException(e);
			}
			catch (RuntimeException e) {
				logger.error("Encountered an unexpected problem while trying to commit", e);
				throw e;
			}
			finally {
				sinkStoreAccessLock.unlock();
			}
		}

		public void setNamespace(String prefix, String name)
			throws SailException
		{
			sinkStoreAccessLock.lock();
			try {
				startTriplestoreTransaction();
				namespaceStore.setNamespace(prefix, name);
			}
			finally {
				sinkStoreAccessLock.unlock();
			}
		}

		public void removeNamespace(String prefix)
			throws SailException
		{
			sinkStoreAccessLock.lock();
			try {
				startTriplestoreTransaction();
				namespaceStore.removeNamespace(prefix);
			}
			finally {
				sinkStoreAccessLock.unlock();
			}
		}

		public void clearNamespaces()
			throws SailException
		{
			sinkStoreAccessLock.lock();
			try {
				startTriplestoreTransaction();
				namespaceStore.clear();
			}
			finally {
				sinkStoreAccessLock.unlock();
			}
		}

		public void observe(Resource subj, IRI pred, Value obj, Resource... contexts)
			throws SailException
		{
			// serializable is not supported at this level
		}

		public void clear(Resource... contexts)
			throws SailException
		{
			removeStatements(null, null, null, explicit, contexts);
		}

		public void approve(Resource subj, IRI pred, Value obj, Resource ctx)
			throws SailException
		{
			addStatement(subj, pred, obj, explicit, ctx);
		}

		public void deprecate(Resource subj, IRI pred, Value obj, Resource ctx)
			throws SailException
		{
			removeStatements(subj, pred, obj, explicit, ctx);
		}

		/**
		 * Starts a transaction on the triplestore, if necessary.
		 * 
		 * @throws SailException
		 *         if a transaction could not be started.
		 */
		private synchronized void startTriplestoreTransaction()
			throws SailException
		{

			if (storeTxnStarted.compareAndSet(false, true)) {
				try {
					tripleStore.startTransaction();
				}
				catch (IOException e) {
					storeTxnStarted.set(false);
					throw new SailException(e);
				}
			}
		}

		private boolean addStatement(Resource subj, IRI pred, Value obj, boolean explicit,
				Resource... contexts)
			throws SailException
		{
			OpenRDFUtil.verifyContextNotNull(contexts);
			boolean result = false;
			sinkStoreAccessLock.lock();
			try {
				startTriplestoreTransaction();
				int subjID = valueStore.storeValue(subj);
				int predID = valueStore.storeValue(pred);
				int objID = valueStore.storeValue(obj);

				if (contexts.length == 0) {
					contexts = new Resource[] { null };
				}

				for (Resource context : contexts) {
					int contextID = 0;
					if (context != null) {
						contextID = valueStore.storeValue(context);
					}
					// START PATCH
					if (hasMaxCardinality1(pred, contexts)) {
						removeStatements(subj, pred, null, true, contexts);
					} else if (prevObjIsClosedCollection(subj, pred, contexts)) {
File Project Line
org/universAAL/context/rdf4j/sail/CardinalitySailStore.java universAAL Context rdf4j SAIL for OWL Lite 97
org/universAAL/context/rdf4j/sail/Collection2SailStore.java universAAL Context rdf4j SAIL for OWL Lite 100
org/universAAL/context/rdf4j/sail/CollectionSailStore.java universAAL Context rdf4j SAIL for OWL Lite 100
	public CardinalitySailStore(File dataDir, String tripleIndexes, boolean forceSync, int valueCacheSize,
			int valueIDCacheSize, int namespaceCacheSize, int namespaceIDCacheSize, boolean encrypt)
		throws IOException, SailException
	{
		boolean initialized = false;
		try {
			namespaceStore = new NamespaceStore(dataDir);
			valueStore = new ValueStore(dataDir, forceSync, valueCacheSize, valueIDCacheSize,
					namespaceCacheSize, namespaceIDCacheSize, encrypt);
			tripleStore = new TripleStore(dataDir, tripleIndexes, forceSync);
			initialized = true;
			
			// Preload for performance of cardinality
			onProp = valueStore
				.createIRI("http://www.w3.org/2002/07/owl#onProperty");
			maxCard = valueStore
				.createIRI("http://www.w3.org/2002/07/owl#maxCardinality");
			exactCard = valueStore
				.createIRI("http://www.w3.org/2002/07/owl#cardinality");
			nonNativeInt = valueStore.createIRI(
				"http://www.w3.org/2001/XMLSchema#nonNegativeInteger");
			one = valueStore.createLiteral("1", nonNativeInt);
		}
		finally {
			if (!initialized) {
				close();
			}
		}
	}

	public ValueFactory getValueFactory() {
		return valueStore;
	}

	public void close()
		throws SailException
	{
		try {
			try {
				if (namespaceStore != null) {
					namespaceStore.close();
				}
			}
			finally {
				try {
					if (valueStore != null) {
						valueStore.close();
					}
				}
				finally {
					if (tripleStore != null) {
						tripleStore.close();
					}
				}
			}
		}
		catch (IOException e) {
			logger.warn("Failed to close store", e);
			throw new SailException(e);
		}
	}

	public EvaluationStatistics getEvaluationStatistics() {
		return new NativeEvaluationStatistics(valueStore, tripleStore);
	}

	public SailSource getExplicitSailSource() {
		return new NativeSailSource(true);
	}

	public SailSource getInferredSailSource() {
		return new NativeSailSource(false);
	}

	List<Integer> getContextIDs(Resource... contexts)
		throws IOException
	{
		assert contexts.length > 0 : "contexts must not be empty";

		// Filter duplicates
		LinkedHashSet<Resource> contextSet = new LinkedHashSet<Resource>();
		Collections.addAll(contextSet, contexts);

		// Fetch IDs, filtering unknown resources from the result
		List<Integer> contextIDs = new ArrayList<Integer>(contextSet.size());
		for (Resource context : contextSet) {
			if (context == null) {
				contextIDs.add(0);
			}
			else {
				int contextID = valueStore.getID(context);
				if (contextID != NativeValue.UNKNOWN_ID) {
					contextIDs.add(contextID);
				}
			}
		}

		return contextIDs;
	}

	/**
	 * Creates a statement iterator based on the supplied pattern.
	 * 
	 * @param subj
	 *        The subject of the pattern, or <tt>null</tt> to indicate a wildcard.
	 * @param pred
	 *        The predicate of the pattern, or <tt>null</tt> to indicate a wildcard.
	 * @param obj
	 *        The object of the pattern, or <tt>null</tt> to indicate a wildcard.
	 * @param contexts
	 *        The context(s) of the pattern. Note that this parameter is a vararg and as such is optional. If
	 *        no contexts are supplied the method operates on the entire repository.
	 * @return A StatementIterator that can be used to iterate over the statements that match the specified
	 *         pattern.
	 */
	CloseableIteration<? extends Statement, SailException> createStatementIterator(Resource subj, IRI pred,
			Value obj, boolean explicit, Resource... contexts)
		throws IOException
	{
		int subjID = NativeValue.UNKNOWN_ID;
		if (subj != null) {
			subjID = valueStore.getID(subj);
			if (subjID == NativeValue.UNKNOWN_ID) {
				return new EmptyIteration<Statement, SailException>();
			}
		}

		int predID = NativeValue.UNKNOWN_ID;
		if (pred != null) {
			predID = valueStore.getID(pred);
			if (predID == NativeValue.UNKNOWN_ID) {
				return new EmptyIteration<Statement, SailException>();
			}
		}

		int objID = NativeValue.UNKNOWN_ID;
		if (obj != null) {
			objID = valueStore.getID(obj);
			if (objID == NativeValue.UNKNOWN_ID) {
				return new EmptyIteration<Statement, SailException>();
			}
		}

		List<Integer> contextIDList = new ArrayList<Integer>(contexts.length);
		if (contexts.length == 0) {
			contextIDList.add(NativeValue.UNKNOWN_ID);
		}
		else {
			for (Resource context : contexts) {
				if (context == null) {
					contextIDList.add(0);
				}
				else {
					int contextID = valueStore.getID(context);

					if (contextID != NativeValue.UNKNOWN_ID) {
						contextIDList.add(contextID);
					}
				}
			}
		}

		ArrayList<NativeStatementIterator> perContextIterList = new ArrayList<NativeStatementIterator>(
				contextIDList.size());

		for (int contextID : contextIDList) {
			RecordIterator btreeIter = tripleStore.getTriples(subjID, predID, objID, contextID, explicit,
					false);

			perContextIterList.add(new NativeStatementIterator(btreeIter, valueStore));
		}

		if (perContextIterList.size() == 1) {
			return perContextIterList.get(0);
		}
		else {
			return new UnionIteration<Statement, SailException>(perContextIterList);
		}
	}

	double cardinality(Resource subj, IRI pred, Value obj, Resource context)
		throws IOException
	{
		int subjID = NativeValue.UNKNOWN_ID;
		if (subj != null) {
			subjID = valueStore.getID(subj);
			if (subjID == NativeValue.UNKNOWN_ID) {
				return 0;
			}
		}

		int predID = NativeValue.UNKNOWN_ID;
		if (pred != null) {
			predID = valueStore.getID(pred);
			if (predID == NativeValue.UNKNOWN_ID) {
				return 0;
			}
		}

		int objID = NativeValue.UNKNOWN_ID;
		if (obj != null) {
			objID = valueStore.getID(obj);
			if (objID == NativeValue.UNKNOWN_ID) {
				return 0;
			}
		}

		int contextID = NativeValue.UNKNOWN_ID;
		if (context != null) {
			contextID = valueStore.getID(context);
			if (contextID == NativeValue.UNKNOWN_ID) {
				return 0;
			}
		}

		return tripleStore.cardinality(subjID, predID, objID, contextID);
	}

	private final class NativeSailSource extends BackingSailSource {

		private final boolean explicit;

		public NativeSailSource(boolean explicit) {
			this.explicit = explicit;
		}

		@Override
		public SailSource fork() {
			throw new UnsupportedOperationException("This store does not support multiple datasets");
		}

		public SailSink sink(IsolationLevel level)
			throws SailException
		{
			return new NativeSailSink(explicit);
		}

		public NativeSailDataset dataset(IsolationLevel level)
			throws SailException
		{
			return new NativeSailDataset(explicit);
		}

	}

	private final class NativeSailSink implements SailSink {

		private final boolean explicit;

		public NativeSailSink(boolean explicit)
			throws SailException
		{
			this.explicit = explicit;
		}

		public void close() {
			// no-op
		}

		public void prepare()
			throws SailException
		{
			// serializable is not supported at this level
		}

		public synchronized void flush()
			throws SailException
		{
			sinkStoreAccessLock.lock();
			try {
				try {
					valueStore.sync();
				}
				finally {
					try {
						namespaceStore.sync();
					}
					finally {
						if (storeTxnStarted.get()) {
							tripleStore.commit();
							// do not set flag to false until _after_ commit is succesfully completed.
							storeTxnStarted.set(false);
						}
					}
				}
			}
			catch (IOException e) {
				logger.error("Encountered an unexpected problem while trying to commit", e);
				throw new SailException(e);
			}
			catch (RuntimeException e) {
				logger.error("Encountered an unexpected problem while trying to commit", e);
				throw e;
			}
			finally {
				sinkStoreAccessLock.unlock();
			}
		}

		public void setNamespace(String prefix, String name)
			throws SailException
		{
			sinkStoreAccessLock.lock();
			try {
				startTriplestoreTransaction();
				namespaceStore.setNamespace(prefix, name);
			}
			finally {
				sinkStoreAccessLock.unlock();
			}
		}

		public void removeNamespace(String prefix)
			throws SailException
		{
			sinkStoreAccessLock.lock();
			try {
				startTriplestoreTransaction();
				namespaceStore.removeNamespace(prefix);
			}
			finally {
				sinkStoreAccessLock.unlock();
			}
		}

		public void clearNamespaces()
			throws SailException
		{
			sinkStoreAccessLock.lock();
			try {
				startTriplestoreTransaction();
				namespaceStore.clear();
			}
			finally {
				sinkStoreAccessLock.unlock();
			}
		}

		public void observe(Resource subj, IRI pred, Value obj, Resource... contexts)
			throws SailException
		{
			// serializable is not supported at this level
		}

		public void clear(Resource... contexts)
			throws SailException
		{
			removeStatements(null, null, null, explicit, contexts);
		}

		public void approve(Resource subj, IRI pred, Value obj, Resource ctx)
			throws SailException
		{
			addStatement(subj, pred, obj, explicit, ctx);
		}

		public void deprecate(Resource subj, IRI pred, Value obj, Resource ctx)
			throws SailException
		{
			removeStatements(subj, pred, obj, explicit, ctx);
		}

		/**
		 * Starts a transaction on the triplestore, if necessary.
		 * 
		 * @throws SailException
		 *         if a transaction could not be started.
		 */
		private synchronized void startTriplestoreTransaction()
			throws SailException
		{

			if (storeTxnStarted.compareAndSet(false, true)) {
				try {
					tripleStore.startTransaction();
				}
				catch (IOException e) {
					storeTxnStarted.set(false);
					throw new SailException(e);
				}
			}
		}

		private boolean addStatement(Resource subj, IRI pred, Value obj, boolean explicit,
				Resource... contexts)
			throws SailException
		{
			OpenRDFUtil.verifyContextNotNull(contexts);
			boolean result = false;
			sinkStoreAccessLock.lock();
			try {
				startTriplestoreTransaction();
				int subjID = valueStore.storeValue(subj);
				int predID = valueStore.storeValue(pred);
				int objID = valueStore.storeValue(obj);

				if (contexts.length == 0) {
					contexts = new Resource[] { null };
				}

				for (Resource context : contexts) {
					int contextID = 0;
					if (context != null) {
						contextID = valueStore.storeValue(context);
					}
					// START PATCH CARDINALITY
					if (hasMaxCardinality1(pred, contexts) && explicit) {
File Project Line
org/universAAL/context/rdf4j/sail/CardinalitySailStore.java universAAL Context rdf4j SAIL for OWL Lite 119
org/universAAL/context/rdf4j/sail/Collection2SailStore.java universAAL Context rdf4j SAIL for OWL Lite 122
org/universAAL/context/rdf4j/sail/CollectionSailStore.java universAAL Context rdf4j SAIL for OWL Lite 122
org/universAAL/context/rdf4j/sail/NativeSailStore.java universAAL Context rdf4j SAIL for OWL Lite 100
		}
		finally {
			if (!initialized) {
				close();
			}
		}
	}

	public ValueFactory getValueFactory() {
		return valueStore;
	}

	public void close()
		throws SailException
	{
		try {
			try {
				if (namespaceStore != null) {
					namespaceStore.close();
				}
			}
			finally {
				try {
					if (valueStore != null) {
						valueStore.close();
					}
				}
				finally {
					if (tripleStore != null) {
						tripleStore.close();
					}
				}
			}
		}
		catch (IOException e) {
			logger.warn("Failed to close store", e);
			throw new SailException(e);
		}
	}

	public EvaluationStatistics getEvaluationStatistics() {
		return new NativeEvaluationStatistics(valueStore, tripleStore);
	}

	public SailSource getExplicitSailSource() {
		return new NativeSailSource(true);
	}

	public SailSource getInferredSailSource() {
		return new NativeSailSource(false);
	}

	List<Integer> getContextIDs(Resource... contexts)
		throws IOException
	{
		assert contexts.length > 0 : "contexts must not be empty";

		// Filter duplicates
		LinkedHashSet<Resource> contextSet = new LinkedHashSet<Resource>();
		Collections.addAll(contextSet, contexts);

		// Fetch IDs, filtering unknown resources from the result
		List<Integer> contextIDs = new ArrayList<Integer>(contextSet.size());
		for (Resource context : contextSet) {
			if (context == null) {
				contextIDs.add(0);
			}
			else {
				int contextID = valueStore.getID(context);
				if (contextID != NativeValue.UNKNOWN_ID) {
					contextIDs.add(contextID);
				}
			}
		}

		return contextIDs;
	}

	/**
	 * Creates a statement iterator based on the supplied pattern.
	 * 
	 * @param subj
	 *        The subject of the pattern, or <tt>null</tt> to indicate a wildcard.
	 * @param pred
	 *        The predicate of the pattern, or <tt>null</tt> to indicate a wildcard.
	 * @param obj
	 *        The object of the pattern, or <tt>null</tt> to indicate a wildcard.
	 * @param contexts
	 *        The context(s) of the pattern. Note that this parameter is a vararg and as such is optional. If
	 *        no contexts are supplied the method operates on the entire repository.
	 * @return A StatementIterator that can be used to iterate over the statements that match the specified
	 *         pattern.
	 */
	CloseableIteration<? extends Statement, SailException> createStatementIterator(Resource subj, IRI pred,
			Value obj, boolean explicit, Resource... contexts)
		throws IOException
	{
		int subjID = NativeValue.UNKNOWN_ID;
		if (subj != null) {
			subjID = valueStore.getID(subj);
			if (subjID == NativeValue.UNKNOWN_ID) {
				return new EmptyIteration<Statement, SailException>();
			}
		}

		int predID = NativeValue.UNKNOWN_ID;
		if (pred != null) {
			predID = valueStore.getID(pred);
			if (predID == NativeValue.UNKNOWN_ID) {
				return new EmptyIteration<Statement, SailException>();
			}
		}

		int objID = NativeValue.UNKNOWN_ID;
		if (obj != null) {
			objID = valueStore.getID(obj);
			if (objID == NativeValue.UNKNOWN_ID) {
				return new EmptyIteration<Statement, SailException>();
			}
		}

		List<Integer> contextIDList = new ArrayList<Integer>(contexts.length);
		if (contexts.length == 0) {
			contextIDList.add(NativeValue.UNKNOWN_ID);
		}
		else {
			for (Resource context : contexts) {
				if (context == null) {
					contextIDList.add(0);
				}
				else {
					int contextID = valueStore.getID(context);

					if (contextID != NativeValue.UNKNOWN_ID) {
						contextIDList.add(contextID);
					}
				}
			}
		}

		ArrayList<NativeStatementIterator> perContextIterList = new ArrayList<NativeStatementIterator>(
				contextIDList.size());

		for (int contextID : contextIDList) {
			RecordIterator btreeIter = tripleStore.getTriples(subjID, predID, objID, contextID, explicit,
					false);

			perContextIterList.add(new NativeStatementIterator(btreeIter, valueStore));
		}

		if (perContextIterList.size() == 1) {
			return perContextIterList.get(0);
		}
		else {
			return new UnionIteration<Statement, SailException>(perContextIterList);
		}
	}

	double cardinality(Resource subj, IRI pred, Value obj, Resource context)
		throws IOException
	{
		int subjID = NativeValue.UNKNOWN_ID;
		if (subj != null) {
			subjID = valueStore.getID(subj);
			if (subjID == NativeValue.UNKNOWN_ID) {
				return 0;
			}
		}

		int predID = NativeValue.UNKNOWN_ID;
		if (pred != null) {
			predID = valueStore.getID(pred);
			if (predID == NativeValue.UNKNOWN_ID) {
				return 0;
			}
		}

		int objID = NativeValue.UNKNOWN_ID;
		if (obj != null) {
			objID = valueStore.getID(obj);
			if (objID == NativeValue.UNKNOWN_ID) {
				return 0;
			}
		}

		int contextID = NativeValue.UNKNOWN_ID;
		if (context != null) {
			contextID = valueStore.getID(context);
			if (contextID == NativeValue.UNKNOWN_ID) {
				return 0;
			}
		}

		return tripleStore.cardinality(subjID, predID, objID, contextID);
	}

	private final class NativeSailSource extends BackingSailSource {

		private final boolean explicit;

		public NativeSailSource(boolean explicit) {
			this.explicit = explicit;
		}

		@Override
		public SailSource fork() {
			throw new UnsupportedOperationException("This store does not support multiple datasets");
		}

		public SailSink sink(IsolationLevel level)
			throws SailException
		{
			return new NativeSailSink(explicit);
		}

		public NativeSailDataset dataset(IsolationLevel level)
			throws SailException
		{
			return new NativeSailDataset(explicit);
		}

	}

	private final class NativeSailSink implements SailSink {

		private final boolean explicit;

		public NativeSailSink(boolean explicit)
			throws SailException
		{
			this.explicit = explicit;
		}

		public void close() {
			// no-op
		}

		public void prepare()
			throws SailException
		{
			// serializable is not supported at this level
		}

		public synchronized void flush()
			throws SailException
		{
			sinkStoreAccessLock.lock();
			try {
				try {
					valueStore.sync();
				}
				finally {
					try {
						namespaceStore.sync();
					}
					finally {
						if (storeTxnStarted.get()) {
							tripleStore.commit();
							// do not set flag to false until _after_ commit is succesfully completed.
							storeTxnStarted.set(false);
						}
					}
				}
			}
			catch (IOException e) {
				logger.error("Encountered an unexpected problem while trying to commit", e);
				throw new SailException(e);
			}
			catch (RuntimeException e) {
				logger.error("Encountered an unexpected problem while trying to commit", e);
				throw e;
			}
			finally {
				sinkStoreAccessLock.unlock();
			}
		}

		public void setNamespace(String prefix, String name)
			throws SailException
		{
			sinkStoreAccessLock.lock();
			try {
				startTriplestoreTransaction();
				namespaceStore.setNamespace(prefix, name);
			}
			finally {
				sinkStoreAccessLock.unlock();
			}
		}

		public void removeNamespace(String prefix)
			throws SailException
		{
			sinkStoreAccessLock.lock();
			try {
				startTriplestoreTransaction();
				namespaceStore.removeNamespace(prefix);
			}
			finally {
				sinkStoreAccessLock.unlock();
			}
		}

		public void clearNamespaces()
			throws SailException
		{
			sinkStoreAccessLock.lock();
			try {
				startTriplestoreTransaction();
				namespaceStore.clear();
			}
			finally {
				sinkStoreAccessLock.unlock();
			}
		}

		public void observe(Resource subj, IRI pred, Value obj, Resource... contexts)
			throws SailException
		{
			// serializable is not supported at this level
		}

		public void clear(Resource... contexts)
			throws SailException
		{
			removeStatements(null, null, null, explicit, contexts);
		}

		public void approve(Resource subj, IRI pred, Value obj, Resource ctx)
			throws SailException
		{
			addStatement(subj, pred, obj, explicit, ctx);
		}

		public void deprecate(Resource subj, IRI pred, Value obj, Resource ctx)
			throws SailException
		{
			removeStatements(subj, pred, obj, explicit, ctx);
		}

		/**
		 * Starts a transaction on the triplestore, if necessary.
		 * 
		 * @throws SailException
		 *         if a transaction could not be started.
		 */
		private synchronized void startTriplestoreTransaction()
			throws SailException
		{

			if (storeTxnStarted.compareAndSet(false, true)) {
				try {
					tripleStore.startTransaction();
				}
				catch (IOException e) {
					storeTxnStarted.set(false);
					throw new SailException(e);
				}
			}
		}

		private boolean addStatement(Resource subj, IRI pred, Value obj, boolean explicit,
				Resource... contexts)
			throws SailException
		{
			OpenRDFUtil.verifyContextNotNull(contexts);
			boolean result = false;
			sinkStoreAccessLock.lock();
			try {
				startTriplestoreTransaction();
				int subjID = valueStore.storeValue(subj);
				int predID = valueStore.storeValue(pred);
				int objID = valueStore.storeValue(obj);

				if (contexts.length == 0) {
					contexts = new Resource[] { null };
				}

				for (Resource context : contexts) {
					int contextID = 0;
					if (context != null) {
						contextID = valueStore.storeValue(context);
					}
File Project Line
org/universAAL/context/rdf4j/sail/CardinalitySailStore.java universAAL Context rdf4j SAIL for OWL Lite 525
org/universAAL/context/rdf4j/sail/Collection2SailStore.java universAAL Context rdf4j SAIL for OWL Lite 564
org/universAAL/context/rdf4j/sail/CollectionSailStore.java universAAL Context rdf4j SAIL for OWL Lite 537
		}

		protected boolean hasMaxCardinality1(IRI pred, Resource[] contexts)
			    throws SailException {
			// Get all restrictions on Property "pred"
		    	try {
			CloseableIteration<? extends Statement, SailException> subs = createStatementIterator(
				null, onProp, pred, true, contexts);
			if (!subs.hasNext()) {
			    return false;// Property has no OWL restrictions
			} else {
			    try {
				while (subs.hasNext()) {
				    Statement st = subs.next();
				    // For each subject (a Restriction on "pred") check if it's
				    // maxCardinality and ==1
				    if (size(st.getSubject(), maxCard, one, true, contexts) > 0
					    || size(st.getSubject(), exactCard, one, true,
						    contexts) > 0)
					return true;
				}
			    } finally {
				subs.close();
			    }
			}
			} catch (IOException e) {
			    throw new SailException(e);
			}
			return false;
		    }
		
		public long size(Resource subj, IRI pred, Value obj,
			    boolean includeInferred, Resource... contexts)
			    throws SailException {
			OpenRDFUtil.verifyContextNotNull(contexts);
			try {
			    long size = 0L;
				// Iterate over all explicit statements
				CloseableIteration<? extends Statement, SailException> iter = createStatementIterator(
					subj, pred, obj, !includeInferred, contexts);
				try {
				    while (iter.next() != null) {
					size++;
				    }
				} finally {
				    iter.close();
				}
			    return size;
			} catch (IOException e) {
			    throw new SailException(e);
			}
		    }
		
		private int removeStatements(Resource subj, IRI pred, Value obj, boolean explicit,
				Resource... contexts)
			throws SailException
		{
			OpenRDFUtil.verifyContextNotNull(contexts);

			sinkStoreAccessLock.lock();
			try {
				startTriplestoreTransaction();
				int subjID = NativeValue.UNKNOWN_ID;
				if (subj != null) {
					subjID = valueStore.getID(subj);
					if (subjID == NativeValue.UNKNOWN_ID) {
						return 0;
					}
				}
				int predID = NativeValue.UNKNOWN_ID;
				if (pred != null) {
					predID = valueStore.getID(pred);
					if (predID == NativeValue.UNKNOWN_ID) {
						return 0;
					}
				}
				int objID = NativeValue.UNKNOWN_ID;
				if (obj != null) {
					objID = valueStore.getID(obj);
					if (objID == NativeValue.UNKNOWN_ID) {
						return 0;
					}
				}

				List<Integer> contextIDList = new ArrayList<Integer>(contexts.length);
				if (contexts.length == 0) {
					contextIDList.add(NativeValue.UNKNOWN_ID);
				}
				else {
					for (Resource context : contexts) {
						if (context == null) {
							contextIDList.add(0);
						}
						else {
							int contextID = valueStore.getID(context);
							if (contextID != NativeValue.UNKNOWN_ID) {
								contextIDList.add(contextID);
							}
						}
					}
				}

				int removeCount = 0;

				for (int i = 0; i < contextIDList.size(); i++) {
					int contextID = contextIDList.get(i);

					removeCount += tripleStore.removeTriples(subjID, predID, objID, contextID, explicit);
				}

				return removeCount;
			}
			catch (IOException e) {
				throw new SailException(e);
			}
			catch (RuntimeException e) {
				logger.error("Encountered an unexpected problem while trying to remove statements", e);
				throw e;
			}
			finally {
				sinkStoreAccessLock.unlock();
			}
		}
	}

	/**
	 * @author James Leigh
	 */
	private final class NativeSailDataset implements SailDataset {

		private final boolean explicit;

		public NativeSailDataset(boolean explicit)
			throws SailException
		{
			this.explicit = explicit;
		}

		public void close() {
			// no-op
		}

		public String getNamespace(String prefix)
			throws SailException
		{
			return namespaceStore.getNamespace(prefix);
		}

		public CloseableIteration<? extends Namespace, SailException> getNamespaces() {
			return new CloseableIteratorIteration<Namespace, SailException>(namespaceStore.iterator());
		}

		public CloseableIteration<? extends Resource, SailException> getContextIDs()
			throws SailException
		{
			RecordIterator btreeIter = null;
			CloseableIteration<? extends Statement, SailException> stIter1 = null;
			CloseableIteration<? extends Statement, SailException> stIter2 = null;
			CloseableIteration<Resource, SailException> ctxIter1 = null;
			CloseableIteration<Resource, SailException> ctxIter2 = null;
			ExceptionConvertingIteration<Resource, SailException> result = null;
			boolean allGood = false;
			// Which resources are used as context identifiers is not stored
			// separately. Iterate over all statements and extract their context.
			try {
				btreeIter = tripleStore.getAllTriplesSortedByContext(false);
				if (btreeIter == null) {
					// Iterator over all statements
					stIter1 = createStatementIterator(null, null, null, explicit);
				}
				else {
					stIter1 = new NativeStatementIterator(btreeIter, valueStore);
				}
				// Filter statements without context resource
				stIter2 = new FilterIteration<Statement, SailException>(stIter1) {

					@Override
					protected boolean accept(Statement st) {
						return st.getContext() != null;
					}
				};
				// Return the contexts of the statements
				ctxIter1 = new ConvertingIteration<Statement, Resource, SailException>(stIter2) {

					@Override
					protected Resource convert(Statement st) {
						return st.getContext();
					}
				};
				if (btreeIter == null) {
					// Filtering any duplicates
					ctxIter2 = new DistinctIteration<Resource, SailException>(ctxIter1);
				}
				else {
					// Filtering sorted duplicates
					ctxIter2 = new ReducedIteration<Resource, SailException>(ctxIter1);
				}

				result = new ExceptionConvertingIteration<Resource, SailException>(ctxIter2) {

					@Override
					protected SailException convert(Exception e) {
						if (e instanceof IOException) {
							return new SailException(e);
						}
						else if (e instanceof RuntimeException) {
							throw (RuntimeException)e;
						}
						else if (e == null) {
							throw new IllegalArgumentException("e must not be null");
						}
						else {
							throw new IllegalArgumentException("Unexpected exception type: " + e.getClass());
						}
					}
				};
				allGood = true;
				return result;
			}
			catch (IOException e) {
				throw new SailException(e);
			}
			finally {
				if (!allGood) {
					try {
						if (result != null) {
							result.close();
						}
					}
					finally {
						try {
							if (ctxIter2 != null) {
								ctxIter2.close();
							}
						}
						finally {
							try {
								if (ctxIter1 != null) {
									ctxIter1.close();
								}
							}
							finally {
								try {
									if (stIter2 != null) {
										stIter2.close();
									}
								}
								finally {
									try {
										if (stIter1 != null) {
											stIter1.close();
										}
									}
									finally {
										if (btreeIter != null) {
											try {
												btreeIter.close();
											}
											catch (IOException e) {
												throw new SailException(e);
											}
										}
									}
								}
							}
						}

					}
				}
			}
		}

		public CloseableIteration<? extends Statement, SailException> getStatements(Resource subj, IRI pred,
				Value obj, Resource... contexts)
			throws SailException
		{
			try {
				return createStatementIterator(subj, pred, obj, explicit, contexts);
			}
			catch (IOException e) {
				throw new SailException("Unable to get statements", e);
			}
		}
	}
}
File Project Line
org/universAAL/context/rdf4j/sail/CardinalitySailStore.java universAAL Context rdf4j SAIL for OWL Lite 576
org/universAAL/context/rdf4j/sail/Collection2SailStore.java universAAL Context rdf4j SAIL for OWL Lite 615
org/universAAL/context/rdf4j/sail/CollectionSailStore.java universAAL Context rdf4j SAIL for OWL Lite 588
org/universAAL/context/rdf4j/sail/NativeSailStore.java universAAL Context rdf4j SAIL for OWL Lite 500
		    }
		
		private int removeStatements(Resource subj, IRI pred, Value obj, boolean explicit,
				Resource... contexts)
			throws SailException
		{
			OpenRDFUtil.verifyContextNotNull(contexts);

			sinkStoreAccessLock.lock();
			try {
				startTriplestoreTransaction();
				int subjID = NativeValue.UNKNOWN_ID;
				if (subj != null) {
					subjID = valueStore.getID(subj);
					if (subjID == NativeValue.UNKNOWN_ID) {
						return 0;
					}
				}
				int predID = NativeValue.UNKNOWN_ID;
				if (pred != null) {
					predID = valueStore.getID(pred);
					if (predID == NativeValue.UNKNOWN_ID) {
						return 0;
					}
				}
				int objID = NativeValue.UNKNOWN_ID;
				if (obj != null) {
					objID = valueStore.getID(obj);
					if (objID == NativeValue.UNKNOWN_ID) {
						return 0;
					}
				}

				List<Integer> contextIDList = new ArrayList<Integer>(contexts.length);
				if (contexts.length == 0) {
					contextIDList.add(NativeValue.UNKNOWN_ID);
				}
				else {
					for (Resource context : contexts) {
						if (context == null) {
							contextIDList.add(0);
						}
						else {
							int contextID = valueStore.getID(context);
							if (contextID != NativeValue.UNKNOWN_ID) {
								contextIDList.add(contextID);
							}
						}
					}
				}

				int removeCount = 0;

				for (int i = 0; i < contextIDList.size(); i++) {
					int contextID = contextIDList.get(i);

					removeCount += tripleStore.removeTriples(subjID, predID, objID, contextID, explicit);
				}

				return removeCount;
			}
			catch (IOException e) {
				throw new SailException(e);
			}
			catch (RuntimeException e) {
				logger.error("Encountered an unexpected problem while trying to remove statements", e);
				throw e;
			}
			finally {
				sinkStoreAccessLock.unlock();
			}
		}
	}

	/**
	 * @author James Leigh
	 */
	private final class NativeSailDataset implements SailDataset {

		private final boolean explicit;

		public NativeSailDataset(boolean explicit)
			throws SailException
		{
			this.explicit = explicit;
		}

		public void close() {
			// no-op
		}

		public String getNamespace(String prefix)
			throws SailException
		{
			return namespaceStore.getNamespace(prefix);
		}

		public CloseableIteration<? extends Namespace, SailException> getNamespaces() {
			return new CloseableIteratorIteration<Namespace, SailException>(namespaceStore.iterator());
		}

		public CloseableIteration<? extends Resource, SailException> getContextIDs()
			throws SailException
		{
			RecordIterator btreeIter = null;
			CloseableIteration<? extends Statement, SailException> stIter1 = null;
			CloseableIteration<? extends Statement, SailException> stIter2 = null;
			CloseableIteration<Resource, SailException> ctxIter1 = null;
			CloseableIteration<Resource, SailException> ctxIter2 = null;
			ExceptionConvertingIteration<Resource, SailException> result = null;
			boolean allGood = false;
			// Which resources are used as context identifiers is not stored
			// separately. Iterate over all statements and extract their context.
			try {
				btreeIter = tripleStore.getAllTriplesSortedByContext(false);
				if (btreeIter == null) {
					// Iterator over all statements
					stIter1 = createStatementIterator(null, null, null, explicit);
				}
				else {
					stIter1 = new NativeStatementIterator(btreeIter, valueStore);
				}
				// Filter statements without context resource
				stIter2 = new FilterIteration<Statement, SailException>(stIter1) {

					@Override
					protected boolean accept(Statement st) {
						return st.getContext() != null;
					}
				};
				// Return the contexts of the statements
				ctxIter1 = new ConvertingIteration<Statement, Resource, SailException>(stIter2) {

					@Override
					protected Resource convert(Statement st) {
						return st.getContext();
					}
				};
				if (btreeIter == null) {
					// Filtering any duplicates
					ctxIter2 = new DistinctIteration<Resource, SailException>(ctxIter1);
				}
				else {
					// Filtering sorted duplicates
					ctxIter2 = new ReducedIteration<Resource, SailException>(ctxIter1);
				}

				result = new ExceptionConvertingIteration<Resource, SailException>(ctxIter2) {

					@Override
					protected SailException convert(Exception e) {
						if (e instanceof IOException) {
							return new SailException(e);
						}
						else if (e instanceof RuntimeException) {
							throw (RuntimeException)e;
						}
						else if (e == null) {
							throw new IllegalArgumentException("e must not be null");
						}
						else {
							throw new IllegalArgumentException("Unexpected exception type: " + e.getClass());
						}
					}
				};
				allGood = true;
				return result;
			}
			catch (IOException e) {
				throw new SailException(e);
			}
			finally {
				if (!allGood) {
					try {
						if (result != null) {
							result.close();
						}
					}
					finally {
						try {
							if (ctxIter2 != null) {
								ctxIter2.close();
							}
						}
						finally {
							try {
								if (ctxIter1 != null) {
									ctxIter1.close();
								}
							}
							finally {
								try {
									if (stIter2 != null) {
										stIter2.close();
									}
								}
								finally {
									try {
										if (stIter1 != null) {
											stIter1.close();
										}
									}
									finally {
										if (btreeIter != null) {
											try {
												btreeIter.close();
											}
											catch (IOException e) {
												throw new SailException(e);
											}
										}
									}
								}
							}
						}

					}
				}
			}
		}

		public CloseableIteration<? extends Statement, SailException> getStatements(Resource subj, IRI pred,
				Value obj, Resource... contexts)
			throws SailException
		{
			try {
				return createStatementIterator(subj, pred, obj, explicit, contexts);
			}
			catch (IOException e) {
				throw new SailException("Unable to get statements", e);
			}
		}
	}
}
File Project Line
org/universAAL/context/prof/serv/SCalleeProvidedService.java universAAL Context Profiling Server 218
org/universAAL/context/space/serv/SCalleeProvidedService.java universAAL Context Space Server 356
		profiles[7] = prof7.getProfile();
	}

	// DYNAMIC TYPICAL SERVICE PROFILES
	/**
	 * Gives you the 4 typical service profiles of an editor service: Get, Add,
	 * Change and Remove. When handling requests in you Callee, you can use the
	 * references to services and arguments URIs prepending
	 * <code>namespace</code> to SimpleEditor constants.
	 *
	 * @param namespace
	 *            The namespace of your server, ending with the character #. You
	 *            can optionally add some prefix after the # if you use
	 *            SimpleEditor more than once in the same Callee.
	 * @param ontologyURI
	 *            The MY_URI of the class of Service ontology you are going to
	 *            implement
	 * @param path
	 *            The property path from the root of the Service ontology
	 *            concept to the exact concept you want to manage
	 * @param editedURI
	 *            The MY_URI of the class of the concept ontology that you want
	 *            to manage, which is at the end of the property path
	 * @return An array with the 4 typical service profiles
	 */
	public static ServiceProfile[] getServiceProfiles(String namespace, String ontologyURI, String[] path,
			String editedURI) {

		ServiceProfile[] profiles = new ServiceProfile[4];

		// Get
		Service prof1 = (Service) OntologyManagement.getInstance().getResource(ontologyURI, namespace + SRV_GET_X);
		ProcessInput input1 = new ProcessInput(namespace + INP_GET_X);
		input1.setParameterType(editedURI);
		input1.setCardinality(1, 1);
		MergedRestriction restr1 = MergedRestriction.getFixedValueRestriction(path[path.length - 1],
				input1.asVariableReference());
		prof1.addInstanceLevelRestriction(restr1, path);
		prof1.getProfile().addInput(input1);
		ProcessOutput output = new ProcessOutput(namespace + OUT_GET_X);
		output.setParameterType(editedURI);
		prof1.getProfile().addOutput(output);
		prof1.getProfile().addSimpleOutputBinding(output, path);
		prof1.addInstanceLevelRestriction(MergedRestriction.getAllValuesRestriction(path[path.length - 1], editedURI),
				path);
		profiles[0] = prof1.getProfile();

		// Add
		Service prof2 = ((Service) OntologyManagement.getInstance().getResource(ontologyURI, namespace + SRV_ADD_X));
		ProcessInput input2 = new ProcessInput(namespace + INP_ADD_X);
		input2.setParameterType(editedURI);
		input2.setCardinality(1, 1);
		prof2.getProfile().addInput(input2);
		prof2.getProfile().addAddEffect(path, input2.asVariableReference());
		profiles[1] = prof2.getProfile();

		// Change
		Service prof3 = ((Service) OntologyManagement.getInstance().getResource(ontologyURI, namespace + SRV_CHN_X));
		ProcessInput input3 = new ProcessInput(namespace + INP_CHN_X);
		input3.setCardinality(1, 1);
		input3.setParameterType(editedURI);
		prof3.getProfile().addInput(input3);
		prof3.getProfile().addChangeEffect(path, input3.asVariableReference());
		profiles[2] = prof3.getProfile();

		// Remove
		Service prof4 = ((Service) OntologyManagement.getInstance().getResource(ontologyURI, namespace + SRV_REM_X));
		ProcessInput input4 = new ProcessInput(namespace + INP_REM_X);
		input4.setParameterType(editedURI);
		input4.setCardinality(1, 1);
		prof4.getProfile().addInput(input4);
		MergedRestriction restr4 = MergedRestriction.getFixedValueRestriction(path[path.length - 1],
				input4.asVariableReference());
		prof4.addInstanceLevelRestriction(restr4, path);
		prof4.getProfile().addRemoveEffect(path);
		profiles[3] = prof4.getProfile();

		return profiles;
	}

	@Override
	public String getClassURI() {
		return MY_URI;
	}

}
File Project Line
org/universAAL/context/rdf4j/sail/CardinalityStore.java universAAL Context rdf4j SAIL for OWL Lite 129
org/universAAL/context/rdf4j/sail/Collection2Store.java universAAL Context rdf4j SAIL for OWL Lite 130
org/universAAL/context/rdf4j/sail/CollectionStore.java universAAL Context rdf4j SAIL for OWL Lite 130
	public CardinalityStore(File dataDir, String tripleIndexes, boolean encrypt) {
		this(dataDir);
		this.encrypt = encrypt;
		setTripleIndexes(tripleIndexes);
	}

	/*---------*
	 * Methods *
	 *---------*/

	/**
	 * Sets the triple indexes for the native store, must be called before initialization.
	 * 
	 * @param tripleIndexes
	 *        An index strings, e.g. <tt>spoc,posc</tt>.
	 */
	public void setTripleIndexes(String tripleIndexes) {
		if (isInitialized()) {
			throw new IllegalStateException("sail has already been intialized");
		}

		this.tripleIndexes = tripleIndexes;
	}

	public String getTripleIndexes() {
		return tripleIndexes;
	}

	/**
	 * Specifiec whether updates should be synced to disk forcefully, must be called before initialization.
	 * Enabling this feature may prevent corruption in case of events like power loss, but can have a severe
	 * impact on write performance. By default, this feature is disabled.
	 */
	public void setForceSync(boolean forceSync) {
		this.forceSync = forceSync;
	}

	public boolean getForceSync() {
		return forceSync;
	}

	public void setValueCacheSize(int valueCacheSize) {
		this.valueCacheSize = valueCacheSize;
	}

	public void setValueIDCacheSize(int valueIDCacheSize) {
		this.valueIDCacheSize = valueIDCacheSize;
	}

	public void setNamespaceCacheSize(int namespaceCacheSize) {
		this.namespaceCacheSize = namespaceCacheSize;
	}

	public void setNamespaceIDCacheSize(int namespaceIDCacheSize) {
		this.namespaceIDCacheSize = namespaceIDCacheSize;
	}

	/**
	 * @return Returns the {@link EvaluationStrategy}.
	 */
	public synchronized EvaluationStrategyFactory getEvaluationStrategyFactory() {
		if (evalStratFactory == null) {
			evalStratFactory = new StrictEvaluationStrategyFactory(getFederatedServiceResolver());
		}
		evalStratFactory.setQuerySolutionCacheThreshold(getIterationCacheSyncThreshold());
		return evalStratFactory;
	}

	/**
	 * Sets the {@link EvaluationStrategy} to use.
	 */
	public synchronized void setEvaluationStrategyFactory(EvaluationStrategyFactory factory) {
		evalStratFactory = factory;
	}

	/**
	 * @return Returns the SERVICE resolver.
	 */
	public synchronized FederatedServiceResolver getFederatedServiceResolver() {
		if (serviceResolver == null) {
			if (dependentServiceResolver == null) {
				dependentServiceResolver = new SPARQLServiceResolver();
			}
			setFederatedServiceResolver(dependentServiceResolver);
		}
		return serviceResolver;
	}

	/**
	 * Overrides the {@link FederatedServiceResolver} used by this instance, but the given resolver is not
	 * shutDown when this instance is.
	 * 
	 * @param resolver
	 *        The SERVICE resolver to set.
	 */
	public synchronized void setFederatedServiceResolver(FederatedServiceResolver resolver) {
		this.serviceResolver = resolver;
		if (resolver != null && evalStratFactory instanceof FederatedServiceResolverClient) {
			((FederatedServiceResolverClient)evalStratFactory).setFederatedServiceResolver(resolver);
		}
	}

	/**
	 * Initializes this NativeStore.
	 * 
	 * @exception SailException
	 *            If this NativeStore could not be initialized using the parameters that have been set.
	 */
	@Override
	protected void initializeInternal()
		throws SailException
	{
		logger.debug("Initializing NativeStore...");

		// Check initialization parameters
		File dataDir = getDataDir();

		if (dataDir == null) {
			throw new SailException("Data dir has not been set");
		}
		else if (!dataDir.exists()) {
			boolean success = dataDir.mkdirs();
			if (!success) {
				throw new SailException("Unable to create data directory: " + dataDir);
			}
		}
		else if (!dataDir.isDirectory()) {
			throw new SailException("The specified path does not denote a directory: " + dataDir);
		}
		else if (!dataDir.canRead()) {
			throw new SailException("Not allowed to read from the specified directory: " + dataDir);
		}

		// try to lock the directory or fail
		dirLock = new DirectoryLockManager(dataDir).lockOrFail();

		logger.debug("Data dir is " + dataDir);

		try {
			File versionFile = new File(dataDir, "nativerdf.ver");
			String version = versionFile.exists() ? FileUtils.readFileToString(versionFile) : null;
			if (!VERSION.equals(version) && upgradeStore(dataDir, version)) {
				FileUtils.writeStringToFile(versionFile, VERSION);
			}
			final CardinalitySailStore master = new CardinalitySailStore(dataDir, tripleIndexes, forceSync,
File Project Line
org/universAAL/context/rdf4j/sail/CardinalityStore.java universAAL Context rdf4j SAIL for OWL Lite 132
org/universAAL/context/rdf4j/sail/Collection2Store.java universAAL Context rdf4j SAIL for OWL Lite 133
org/universAAL/context/rdf4j/sail/CollectionStore.java universAAL Context rdf4j SAIL for OWL Lite 133
org/universAAL/context/rdf4j/sail/NativeStore.java universAAL Context rdf4j SAIL for OWL Lite 127
		setTripleIndexes(tripleIndexes);
	}

	/*---------*
	 * Methods *
	 *---------*/

	/**
	 * Sets the triple indexes for the native store, must be called before initialization.
	 * 
	 * @param tripleIndexes
	 *        An index strings, e.g. <tt>spoc,posc</tt>.
	 */
	public void setTripleIndexes(String tripleIndexes) {
		if (isInitialized()) {
			throw new IllegalStateException("sail has already been intialized");
		}

		this.tripleIndexes = tripleIndexes;
	}

	public String getTripleIndexes() {
		return tripleIndexes;
	}

	/**
	 * Specifiec whether updates should be synced to disk forcefully, must be called before initialization.
	 * Enabling this feature may prevent corruption in case of events like power loss, but can have a severe
	 * impact on write performance. By default, this feature is disabled.
	 */
	public void setForceSync(boolean forceSync) {
		this.forceSync = forceSync;
	}

	public boolean getForceSync() {
		return forceSync;
	}

	public void setValueCacheSize(int valueCacheSize) {
		this.valueCacheSize = valueCacheSize;
	}

	public void setValueIDCacheSize(int valueIDCacheSize) {
		this.valueIDCacheSize = valueIDCacheSize;
	}

	public void setNamespaceCacheSize(int namespaceCacheSize) {
		this.namespaceCacheSize = namespaceCacheSize;
	}

	public void setNamespaceIDCacheSize(int namespaceIDCacheSize) {
		this.namespaceIDCacheSize = namespaceIDCacheSize;
	}

	/**
	 * @return Returns the {@link EvaluationStrategy}.
	 */
	public synchronized EvaluationStrategyFactory getEvaluationStrategyFactory() {
		if (evalStratFactory == null) {
			evalStratFactory = new StrictEvaluationStrategyFactory(getFederatedServiceResolver());
		}
		evalStratFactory.setQuerySolutionCacheThreshold(getIterationCacheSyncThreshold());
		return evalStratFactory;
	}

	/**
	 * Sets the {@link EvaluationStrategy} to use.
	 */
	public synchronized void setEvaluationStrategyFactory(EvaluationStrategyFactory factory) {
		evalStratFactory = factory;
	}

	/**
	 * @return Returns the SERVICE resolver.
	 */
	public synchronized FederatedServiceResolver getFederatedServiceResolver() {
		if (serviceResolver == null) {
			if (dependentServiceResolver == null) {
				dependentServiceResolver = new SPARQLServiceResolver();
			}
			setFederatedServiceResolver(dependentServiceResolver);
		}
		return serviceResolver;
	}

	/**
	 * Overrides the {@link FederatedServiceResolver} used by this instance, but the given resolver is not
	 * shutDown when this instance is.
	 * 
	 * @param resolver
	 *        The SERVICE resolver to set.
	 */
	public synchronized void setFederatedServiceResolver(FederatedServiceResolver resolver) {
		this.serviceResolver = resolver;
		if (resolver != null && evalStratFactory instanceof FederatedServiceResolverClient) {
			((FederatedServiceResolverClient)evalStratFactory).setFederatedServiceResolver(resolver);
		}
	}

	/**
	 * Initializes this NativeStore.
	 * 
	 * @exception SailException
	 *            If this NativeStore could not be initialized using the parameters that have been set.
	 */
	@Override
	protected void initializeInternal()
		throws SailException
	{
		logger.debug("Initializing NativeStore...");

		// Check initialization parameters
		File dataDir = getDataDir();

		if (dataDir == null) {
			throw new SailException("Data dir has not been set");
		}
		else if (!dataDir.exists()) {
			boolean success = dataDir.mkdirs();
			if (!success) {
				throw new SailException("Unable to create data directory: " + dataDir);
			}
		}
		else if (!dataDir.isDirectory()) {
			throw new SailException("The specified path does not denote a directory: " + dataDir);
		}
		else if (!dataDir.canRead()) {
			throw new SailException("Not allowed to read from the specified directory: " + dataDir);
		}

		// try to lock the directory or fail
		dirLock = new DirectoryLockManager(dataDir).lockOrFail();

		logger.debug("Data dir is " + dataDir);

		try {
			File versionFile = new File(dataDir, "nativerdf.ver");
			String version = versionFile.exists() ? FileUtils.readFileToString(versionFile) : null;
			if (!VERSION.equals(version) && upgradeStore(dataDir, version)) {
				FileUtils.writeStringToFile(versionFile, VERSION);
			}
			final CardinalitySailStore master = new CardinalitySailStore(dataDir, tripleIndexes, forceSync,
File Project Line
org/universAAL/context/rdf4j/sail/CardinalityStoreConnection.java universAAL Context rdf4j SAIL for OWL Lite 49
org/universAAL/context/rdf4j/sail/Collection2StoreConnection.java universAAL Context rdf4j SAIL for OWL Lite 50
org/universAAL/context/rdf4j/sail/CollectionStoreConnection.java universAAL Context rdf4j SAIL for OWL Lite 50
org/universAAL/context/rdf4j/sail/NativeStoreConnection.java universAAL Context rdf4j SAIL for OWL Lite 47
	protected CardinalityStoreConnection(CardinalityStore sail)
		throws IOException
	{
		super(sail, sail.getSailStore(), sail.getEvaluationStrategyFactory());
		this.nativeStore = sail;
		sailChangedEvent = new DefaultSailChangedEvent(sail);
	}

	/*---------*
	 * Methods *
	 *---------*/

	@Override
	protected void startTransactionInternal()
		throws SailException
	{
		if (!nativeStore.isWritable()) {
			throw new SailReadOnlyException("Unable to start transaction: data file is locked or read-only");
		}
		boolean releaseLock = true;
		try {
			if (txnLock == null || !txnLock.isActive()) {
				txnLock = nativeStore.getTransactionLock(getTransactionIsolation());
			}
			super.startTransactionInternal();
		}
		finally {
			if (releaseLock && txnLock != null) {
				txnLock.release();
			}
		}
	}

	@Override
	protected void commitInternal()
		throws SailException
	{
		try {
			super.commitInternal();
		}
		finally {
			if (txnLock != null) {
				txnLock.release();
			}
		}

		nativeStore.notifySailChanged(sailChangedEvent);

		// create a fresh event object.
		sailChangedEvent = new DefaultSailChangedEvent(nativeStore);
	}

	@Override
	protected void rollbackInternal()
		throws SailException
	{
		try {
			super.rollbackInternal();
		}
		finally {
			if (txnLock != null) {
				txnLock.release();
			}
		}
		// create a fresh event object.
		sailChangedEvent = new DefaultSailChangedEvent(nativeStore);
	}

	@Override
	protected void addStatementInternal(Resource subj, IRI pred, Value obj, Resource... contexts)
		throws SailException
	{
		// assume the triple is not yet present in the triple store
		sailChangedEvent.setStatementsAdded(true);
	}

	public boolean addInferredStatement(Resource subj, IRI pred, Value obj, Resource... contexts)
		throws SailException
	{
		boolean ret = super.addInferredStatement(subj, pred, obj, contexts);
		// assume the triple is not yet present in the triple store
		sailChangedEvent.setStatementsAdded(true);
		return ret;
	}

	@Override
	protected void removeStatementsInternal(Resource subj, IRI pred, Value obj, Resource... contexts)
		throws SailException
	{
		sailChangedEvent.setStatementsRemoved(true);
	}

	public boolean removeInferredStatement(Resource subj, IRI pred, Value obj, Resource... contexts)
		throws SailException
	{
		boolean ret = super.removeInferredStatement(subj, pred, obj, contexts);
		sailChangedEvent.setStatementsRemoved(true);
		return ret;
	}

	@Override
	protected void clearInternal(Resource... contexts)
		throws SailException
	{
		super.clearInternal(contexts);
		sailChangedEvent.setStatementsRemoved(true);
	}

	public void clearInferred(Resource... contexts)
		throws SailException
	{
		super.clearInferred(contexts);
		sailChangedEvent.setStatementsRemoved(true);
	}
	
	

}
File Project Line
org/universAAL/context/rdf4j/sail/CardinalityStore.java universAAL Context rdf4j SAIL for OWL Lite 353
org/universAAL/context/rdf4j/sail/Collection2Store.java universAAL Context rdf4j SAIL for OWL Lite 354
org/universAAL/context/rdf4j/sail/CollectionStore.java universAAL Context rdf4j SAIL for OWL Lite 354
			return new CardinalityStoreConnection(this);
		}
		catch (IOException e) {
			throw new SailException(e);
		}
	}

	public ValueFactory getValueFactory() {
		return store.getValueFactory();
	}

	/**
	 * This call will block when {@link IsolationLevels#NONE} is provided when there are active transactions
	 * with a higher isolation and block when a higher isolation is provided when there are active
	 * transactions with {@link IsolationLevels#NONE} isolation. Store is either exclusively in
	 * {@link IsolationLevels#NONE} isolation with potentially zero or more transactions, or exclusively in
	 * higher isolation mode with potentially zero or more transactions.
	 * 
	 * @param level
	 *        indicating desired mode {@link IsolationLevels#NONE} or higher
	 * @return Lock used to prevent Store from switching isolation modes
	 * @throws SailException
	 */
	protected Lock getTransactionLock(IsolationLevel level)
		throws SailException
	{
		txnLockManager.lock();
		try {
			if (IsolationLevels.NONE.isCompatibleWith(level)) {
				// make sure no isolated transaction are active
				isolatedLockManager.waitForActiveLocks();
				// mark isolation as disabled
				return disabledIsolationLockManager.createLock(level.toString());
			}
			else {
				// make sure isolation is not disabled
				disabledIsolationLockManager.waitForActiveLocks();
				// mark isolated transaction as active
				return isolatedLockManager.createLock(level.toString());
			}
		}
		catch (InterruptedException e) {
			Thread.currentThread().interrupt();
			throw new SailException(e);
		}
		finally {
			txnLockManager.unlock();
		}
	}

	/**
	 * Checks if any {@link IsolationLevels#NONE} isolation transactions are active.
	 * 
	 * @return <code>true</code> if at least one transaction has direct access to the indexes
	 */
	boolean isIsolationDisabled() {
		return disabledIsolationLockManager.isActiveLock();
	}

	SailStore getSailStore() {
		return store;
	}

	protected boolean upgradeStore(File dataDir, String version)
		throws IOException, SailException
	{
		if (version == null) {
			// either a new store or a pre-2.8.2 store
			ValueStore valueStore = new ValueStore(dataDir);
			try {
				valueStore.checkConsistency();
				return true; // good enough
			}
			catch (SailException e) {
				// valueStore is not consistent - possibly contains two entries for
				// string-literals with the same lexical value (e.g. "foo" and
				// "foo"^^xsd:string). Log an error and indicate upgrade should
				// not be executed.
				logger.error(
						"VALUE INCONSISTENCY: could not automatically upgrade native store to RDF 1.1-compatibility: {}. Failure to upgrade may result in inconsistent query results when comparing literal values.",
						e.getMessage());
				return false;
			}
			finally {
				valueStore.close();
			}
		}
		else {
			return false; // no upgrade needed
		}
	}
}
File Project Line
org/universAAL/context/prof/serv/SCaller.java universAAL Context Profiling Server 271
org/universAAL/context/prof/serv/SCaller.java universAAL Context Profiling Server 304
				.call(getDoSPARQLRequest(Queries.Q_GET_SUBS_OF_USR_XTRA.replace(Queries.ARG1, user.getURI())));
		lookException(resp);
		String result2 = getResult(resp);
		if (result1 == null || result2 == null)
			return null;
		Resource bag = (Resource) Hub.parser.deserialize(result1 + " " + result2, Queries.AUXBAG);
		if (bag != null) {
			Object content = bag.getProperty(Queries.AUXBAGPROP);
			ArrayList list = new ArrayList();
			OntologyManagement mng = OntologyManagement.getInstance();
			if (content instanceof List) {
				Iterator iter = ((ArrayList) content).iterator();
				while (iter.hasNext()) {
					Resource res = (Resource) iter.next();
					list.add(mng.getResource(mng.getMostSpecializedClass(res.getTypes()), res.getURI()));
				}
			} else {
				Resource res = (Resource) content;
				list.add(mng.getResource(mng.getMostSpecializedClass(res.getTypes()), res.getURI()));
			}
			return list;
		} else {
			return null;
		}
	}

	protected ArrayList getSubProfilesOfProfile(Resource profile)
File Project Line
org/universAAL/context/rdf4j/sail/CardinalityStore.java universAAL Context rdf4j SAIL for OWL Lite 285
org/universAAL/context/rdf4j/sail/Collection2Store.java universAAL Context rdf4j SAIL for OWL Lite 286
org/universAAL/context/rdf4j/sail/CollectionStore.java universAAL Context rdf4j SAIL for OWL Lite 286
org/universAAL/context/rdf4j/sail/NativeStore.java universAAL Context rdf4j SAIL for OWL Lite 280
							return new CardinalitySailStore(dataDir, getTripleIndexes());
						}
					};
				}
			}) {

				@Override
				public SailSource getExplicitSailSource() {
					if (isIsolationDisabled()) {
						// no isolation, use CardinalitySailStore directly
						return master.getExplicitSailSource();
					}
					else {
						return super.getExplicitSailSource();
					}
				}

				@Override
				public SailSource getInferredSailSource() {
					if (isIsolationDisabled()) {
						// no isolation, use CardinalitySailStore directly
						return master.getInferredSailSource();
					}
					else {
						return super.getInferredSailSource();
					}
				}
			};
		}
		catch (Throwable e) {
			// NativeStore initialization failed, release any allocated files
			dirLock.release();

			throw new SailException(e);
		}

		logger.debug("NativeStore initialized");
	}

	@Override
	protected void shutDownInternal()
		throws SailException
	{
		logger.debug("Shutting down NativeStore...");

		try {
			store.close();

			logger.debug("NativeStore shut down");
		}
		finally {
			dirLock.release();
			if (dependentServiceResolver != null) {
				dependentServiceResolver.shutDown();
			}
			logger.debug("NativeStore shut down");
		}
	}

	public boolean isWritable() {
		return getDataDir().canWrite();
	}

	@Override
	protected NotifyingSailConnection getConnectionInternal()
		throws SailException
	{
		try {
			return new CardinalityStoreConnection(this);
File Project Line
org/universAAL/context/prof/serv/SCaller.java universAAL Context Profiling Server 406
org/universAAL/context/space/serv/SCaller.java universAAL Context Space Server 464
				}
			}
			if (returnValue instanceof String) {
				return (String) returnValue;
			} else {
				return null;
			}
		}
	}

	/**
	 * Splits a Turtle serialized string into prefixes and content, so it can be
	 * used inside SPARQL queries.
	 *
	 * @param serialized
	 *            The turtle string
	 * @return An array of length 2. The first item [0] is the string with the
	 *         prefixes, and the second [1] is the string with the triples
	 *         content
	 */
	public static String[] splitPrefixes(String serialized) {
		int lastprefix = 0, lastprefixdot = 0, lastprefixuri = 0;
		lastprefix = serialized.toLowerCase().lastIndexOf("@prefix");
		if (lastprefix >= 0) {
			lastprefixuri = serialized.substring(lastprefix).indexOf(">");
			lastprefixdot = serialized.substring(lastprefix + lastprefixuri).indexOf(".");
		}
		String[] result = new String[2];
		result[0] = serialized.substring(0, lastprefixuri + lastprefixdot + lastprefix + 1).replace("@", " ")
				.replace(">.", "> ").replace(" .", " ").replace(". ", " ");
		result[1] = serialized.substring(lastprefixuri + lastprefixdot + lastprefix + 1);
		return result;
	}
File Project Line
org/universAAL/context/rdf4j/sail/CardinalitySailStore.java universAAL Context rdf4j SAIL for OWL Lite 277
org/universAAL/context/rdf4j/sail/Collection2SailStore.java universAAL Context rdf4j SAIL for OWL Lite 280
org/universAAL/context/rdf4j/sail/CollectionSailStore.java universAAL Context rdf4j SAIL for OWL Lite 280
org/universAAL/context/rdf4j/sail/NativeEvaluationStatistics.java universAAL Context rdf4j SAIL for OWL Lite 82
org/universAAL/context/rdf4j/sail/NativeSailStore.java universAAL Context rdf4j SAIL for OWL Lite 258
	double cardinality(Resource subj, IRI pred, Value obj, Resource context)
		throws IOException
	{
		int subjID = NativeValue.UNKNOWN_ID;
		if (subj != null) {
			subjID = valueStore.getID(subj);
			if (subjID == NativeValue.UNKNOWN_ID) {
				return 0;
			}
		}

		int predID = NativeValue.UNKNOWN_ID;
		if (pred != null) {
			predID = valueStore.getID(pred);
			if (predID == NativeValue.UNKNOWN_ID) {
				return 0;
			}
		}

		int objID = NativeValue.UNKNOWN_ID;
		if (obj != null) {
			objID = valueStore.getID(obj);
			if (objID == NativeValue.UNKNOWN_ID) {
				return 0;
			}
		}

		int contextID = NativeValue.UNKNOWN_ID;
		if (context != null) {
			contextID = valueStore.getID(context);
			if (contextID == NativeValue.UNKNOWN_ID) {
				return 0;
			}
		}

		return tripleStore.cardinality(subjID, predID, objID, contextID);
	}
File Project Line
org/universAAL/context/che/database/impl/RDF4JBackendCrdClc.java universAAL Context CHE - Module for rdf4j store with cardinality 49
org/universAAL/context/che/database/impl/RDF4JBackendCrdClcCnf.java universAAL Context CHE - Module for rdf4j store with cardinality 58
	private static Log log = Hub.getLog(RDF4JBackendCrdClc.class);

	@Override
	public void connect() {
		String dataPath = Hub.getProperties().getProperty("STORE.LOCATION");
		boolean encrypt = Boolean.parseBoolean(Hub.getProperties().getProperty("STORE.ENCRYPT"));
		// I use C:\Proyectos\UNIVERSAAL\ContextStore\Stores\SAIL_FCRDFS_Native
		if (dataPath != null) {
			File dataDir = new File(dataPath);
			String indexes = "spoc,posc,cosp"; // TODO: Change indexes
			// (specially
			// if we dont use contexts)
			log.info("CHe connects to {} ", dataDir.toString());
			// TODO: Evaluate the inference, and study other reasoners, if any
			try {
				myRepository = new SailRepository(
						new ForwardChainingRDFSInferencer(new CollectionStore(dataDir, indexes, encrypt)));
				myRepository.initialize();
				con = myRepository.getConnection();
				if (Boolean.parseBoolean(Hub.getProperties().getProperty("STORE.PRELOAD"))) {
					this.populate();
				}
			} catch (Exception e) {
				log.error("connect", "Exception trying to initilaize the store: {} ", e);
				e.printStackTrace();
			}
		} else {
			log.error("connect",
					"No location specified for the store. " + "Add and specify the configuration"
File Project Line
org/universAAL/context/che/database/impl/RDF4JBackendCrd.java universAAL Context CHE - Module for rdf4j store with cardinality 45
org/universAAL/context/che/database/impl/RDF4JBackendCrdCnf.java universAAL Context CHE - Module for rdf4j store with cardinality 58
	private static Log log = Hub.getLog(RDF4JBackendCrd.class);

	@Override
	public void connect() {
		String dataPath = Hub.getProperties().getProperty("STORE.LOCATION");
		boolean encrypt = Boolean.parseBoolean(Hub.getProperties().getProperty("STORE.ENCRYPT"));
		// I use C:\Proyectos\UNIVERSAAL\ContextStore\Stores\SAIL_FCRDFS_Native
		if (dataPath != null) {
			File dataDir = new File(dataPath);
			String indexes = "spoc,posc,cosp"; // TODO: Change indexes
			// (specially
			// if we dont use contexts)
			log.info("CHe connects to {} ", dataDir.toString());
			// TODO: Evaluate the inference, and study other reasoners, if any
			try {
				myRepository = new SailRepository(
						new ForwardChainingRDFSInferencer(new CardinalityStore(dataDir, indexes, encrypt)));
				myRepository.initialize();
				con = myRepository.getConnection();
				if (Boolean.parseBoolean(Hub.getProperties().getProperty("STORE.PRELOAD"))) {
					this.populate();
				}
			} catch (Exception e) {
				log.error("connect", "Exception trying to initilaize the store: {} ", e);
				e.printStackTrace();
			}
		} else {
			log.error("connect",
File Project Line
org/universAAL/context/che/database/impl/RDF4JBackendCrdClc2.java universAAL Context CHE - Module for rdf4j store with cardinality 53
org/universAAL/context/che/database/impl/RDF4JBackendCrdClc2Cnf.java universAAL Context CHE - Module for rdf4j store with cardinality 58
	private static Log log = Hub.getLog(RDF4JBackendCrdClc2.class);

	@Override
	public void connect() {
		String dataPath = Hub.getProperties().getProperty("STORE.LOCATION");
		boolean encrypt = Boolean.parseBoolean(Hub.getProperties().getProperty("STORE.ENCRYPT"));
		// I use C:\Proyectos\UNIVERSAAL\ContextStore\Stores\SAIL_FCRDFS_Native
		if (dataPath != null) {
			File dataDir = new File(dataPath);
			String indexes = "spoc,posc,cosp"; // TODO: Change indexes
			// (specially
			// if we dont use contexts)
			log.info("CHe connects to {} ", dataDir.toString());
			// TODO: Evaluate the inference, and study other reasoners, if any
			try {
				myRepository = new SailRepository(
						new ForwardChainingRDFSInferencer(new Collection2Store(dataDir, indexes, encrypt)));
				myRepository.initialize();
				con = myRepository.getConnection();
				if (Boolean.parseBoolean(Hub.getProperties().getProperty("STORE.PRELOAD"))) {
					this.populate();
				}
			} catch (Exception e) {
				log.error("connect", "Exception trying to initilaize the store: {} ", e);
				e.printStackTrace();
			}
		} else {
			log.error("connect",
File Project Line
org/universAAL/context/prof/serv/SCaller.java universAAL Context Profiling Server 368
org/universAAL/context/space/serv/SCaller.java universAAL Context Space Server 424
	}

	/**
	 * Prepares the call to the Do SPARQL service of CHE.
	 *
	 * @param query
	 *            The SPARQL query
	 * @return The prepared request
	 */
	private ServiceRequest getDoSPARQLRequest(String query) {
		ServiceRequest getQuery = new ServiceRequest(new ContextHistoryService(null), null);

		MergedRestriction r = MergedRestriction.getFixedValueRestriction(ContextHistoryService.PROP_PROCESSES, query);

		getQuery.getRequestedService().addInstanceLevelRestriction(r,
				new String[] { ContextHistoryService.PROP_PROCESSES });
		getQuery.addSimpleOutputBinding(new ProcessOutput(OUTPUT_RESULT_STRING),
				new PropertyPath(null, true, new String[] { ContextHistoryService.PROP_RETURNS }).getThePath());
		return getQuery;
	}

	/**
	 * Helper method to get the result from the Service Response of CHE.
	 *
	 * @param call
	 *            The service response
	 * @return the result SPARQL string
	 */
	private String getResult(ServiceResponse call) {
		Object returnValue = null;
		List outputs = call.getOutputs();
		if (outputs == null) {
			return null;
		} else {
			for (Iterator i = outputs.iterator(); i.hasNext();) {
				ProcessOutput output = (ProcessOutput) i.next();
				if (output.getURI().equals(OUTPUT_RESULT_STRING) && returnValue == null) {
File Project Line
org/universAAL/context/rdf4j/sail/Collection2SailStore.java universAAL Context rdf4j SAIL for OWL Lite 508
org/universAAL/context/rdf4j/sail/CollectionSailStore.java universAAL Context rdf4j SAIL for OWL Lite 506
					} else if (prevObjIsClosedCollection(subj, pred, contexts)) {
						removeStatements(subj, pred, null, true, contexts);
					} else if (objIsClosedCollection(obj, contexts)) {
						removeStatements(subj, pred, null, true, contexts);
					}
					// END PATCH
					boolean wasNew = tripleStore.storeTriple(subjID, predID, objID, contextID, explicit);
					result |= wasNew;
				}
			}
			catch (IOException e) {
				throw new SailException(e);
			}
			catch (RuntimeException e) {
				logger.error("Encountered an unexpected problem while trying to add a statement", e);
				throw e;
			}
			finally {
				sinkStoreAccessLock.unlock();
			}

			return result;
		}
		
		private boolean objIsClosedCollection(Value obj, Resource[] contexts) throws SailException {
			if (obj instanceof BNode) {// TODO of Resource better? wait and see
			    // ClosedCollection, if it's not blank...
				return (size((BNode) obj, RDF.FIRST, null, true, contexts) > 0);
			} else {
				return false;
			}
		}
File Project Line
org/universAAL/context/prof/serv/SCaller.java universAAL Context Profiling Server 221
org/universAAL/context/prof/serv/SCaller.java universAAL Context Profiling Server 276
org/universAAL/context/prof/serv/SCaller.java universAAL Context Profiling Server 309
		Resource bag = (Resource) Hub.parser.deserialize(result + " " + result2, Queries.AUXBAG);
		if (bag != null) {
			Object content = bag.getProperty(Queries.AUXBAGPROP);
			ArrayList list = new ArrayList();
			OntologyManagement mng = OntologyManagement.getInstance();
			if (content instanceof List) {
				Iterator iter = ((ArrayList) content).iterator();
				while (iter.hasNext()) {
					Resource res = (Resource) iter.next();
					list.add(mng.getResource(mng.getMostSpecializedClass(res.getTypes()), res.getURI()));
				}
			} else {
				Resource res = (Resource) content;
				list.add(mng.getResource(mng.getMostSpecializedClass(res.getTypes()), res.getURI()));
			}
			return list;
		} else {
			return null;
		}
	}

	protected Resource getProfileOfUser(Resource user)
File Project Line
org/universAAL/context/rdf4j/sail/CardinalityStore.java universAAL Context rdf4j SAIL for OWL Lite 353
org/universAAL/context/rdf4j/sail/Collection2Store.java universAAL Context rdf4j SAIL for OWL Lite 354
org/universAAL/context/rdf4j/sail/CollectionStore.java universAAL Context rdf4j SAIL for OWL Lite 354
org/universAAL/context/rdf4j/sail/NativeStore.java universAAL Context rdf4j SAIL for OWL Lite 348
			return new CardinalityStoreConnection(this);
		}
		catch (IOException e) {
			throw new SailException(e);
		}
	}

	public ValueFactory getValueFactory() {
		return store.getValueFactory();
	}

	/**
	 * This call will block when {@link IsolationLevels#NONE} is provided when there are active transactions
	 * with a higher isolation and block when a higher isolation is provided when there are active
	 * transactions with {@link IsolationLevels#NONE} isolation. Store is either exclusively in
	 * {@link IsolationLevels#NONE} isolation with potentially zero or more transactions, or exclusively in
	 * higher isolation mode with potentially zero or more transactions.
	 * 
	 * @param level
	 *        indicating desired mode {@link IsolationLevels#NONE} or higher
	 * @return Lock used to prevent Store from switching isolation modes
	 * @throws SailException
	 */
	protected Lock getTransactionLock(IsolationLevel level)
		throws SailException
	{
		txnLockManager.lock();
		try {
			if (IsolationLevels.NONE.isCompatibleWith(level)) {
				// make sure no isolated transaction are active
				isolatedLockManager.waitForActiveLocks();
				// mark isolation as disabled
				return disabledIsolationLockManager.createLock(level.toString());
			}
			else {
				// make sure isolation is not disabled
				disabledIsolationLockManager.waitForActiveLocks();
				// mark isolated transaction as active
				return isolatedLockManager.createLock(level.toString());
			}
		}
		catch (InterruptedException e) {
			Thread.currentThread().interrupt();
			throw new SailException(e);
		}
		finally {
			txnLockManager.unlock();
		}
	}

	/**
	 * Checks if any {@link IsolationLevels#NONE} isolation transactions are active.
	 * 
	 * @return <code>true</code> if at least one transaction has direct access to the indexes
	 */
	boolean isIsolationDisabled() {
		return disabledIsolationLockManager.isActiveLock();
	}

	SailStore getSailStore() {
		return store;
	}
File Project Line
org/universAAL/context/prof/serv/SCaller.java universAAL Context Profiling Server 222
org/universAAL/context/prof/serv/SCaller.java universAAL Context Profiling Server 277
org/universAAL/context/prof/serv/SCaller.java universAAL Context Profiling Server 310
org/universAAL/context/space/serv/SCaller.java universAAL Context Space Server 406
		if (bag != null) {
			Object content = bag.getProperty(Queries.AUXBAGPROP);
			ArrayList list = new ArrayList();
			OntologyManagement mng = OntologyManagement.getInstance();
			if (content instanceof List) {
				Iterator iter = ((ArrayList) content).iterator();
				while (iter.hasNext()) {
					Resource res = (Resource) iter.next();
					list.add(mng.getResource(mng.getMostSpecializedClass(res.getTypes()), res.getURI()));
				}
			} else {
				Resource res = (Resource) content;
				list.add(mng.getResource(mng.getMostSpecializedClass(res.getTypes()), res.getURI()));
			}
			return list;
		} else {
			return null;
		}
	}
File Project Line
org/universAAL/context/rdf4j/sail/CardinalityStore.java universAAL Context rdf4j SAIL for OWL Lite 50
org/universAAL/context/rdf4j/sail/Collection2Store.java universAAL Context rdf4j SAIL for OWL Lite 51
org/universAAL/context/rdf4j/sail/CollectionStore.java universAAL Context rdf4j SAIL for OWL Lite 51
public class CardinalityStore extends AbstractNotifyingSail implements FederatedServiceResolverClient {

	/*-----------*
	 * Variables *
	 *-----------*/

	protected static final String VERSION = MavenUtil.loadVersion("org.eclipse.rdf4j", "rdf4j-sail-nativerdf",
			"devel");

	/**
	 * Specifies which triple indexes this native store must use.
	 */
	protected volatile String tripleIndexes;

	/**
	 * Flag indicating whether updates should be synced to disk forcefully. This may have a severe impact on
	 * write performance. By default, this feature is disabled.
	 */
	protected volatile boolean forceSync = false;

	protected volatile int valueCacheSize = ValueStore.VALUE_CACHE_SIZE;

	protected volatile int valueIDCacheSize = ValueStore.VALUE_ID_CACHE_SIZE;

	protected volatile int namespaceCacheSize = ValueStore.NAMESPACE_CACHE_SIZE;

	protected volatile int namespaceIDCacheSize = ValueStore.NAMESPACE_ID_CACHE_SIZE;

	protected SailStore store;

	/**
	 * Data directory lock.
	 */
	protected volatile Lock dirLock;

	private EvaluationStrategyFactory evalStratFactory;

	/** independent life cycle */
	private FederatedServiceResolver serviceResolver;

	/** dependent life cycle */
	private SPARQLServiceResolver dependentServiceResolver;

	/**
	 * Lock manager used to prevent concurrent {@link #getTransactionLock(IsolationLevel)} calls.
	 */
	private final ReentrantLock txnLockManager = new ReentrantLock();

	/**
	 * Holds locks for all isolated transactions.
	 */
	private final LockManager isolatedLockManager = new LockManager(debugEnabled());

	/**
	 * Holds locks for all {@link IsolationLevels#NONE} isolation transactions.
	 */
	private final LockManager disabledIsolationLockManager = new LockManager(debugEnabled());

	protected boolean encrypt;
	    
	/*--------------*
	 * Constructors *
	 *--------------*/

	/**
	 * Creates a new NativeStore.
	 */
	public CardinalityStore() {
File Project Line
org/universAAL/context/space/serv/SCaller.java universAAL Context Space Server 274
org/universAAL/context/space/serv/SCaller.java universAAL Context Space Server 286
	public Resource getProfOfServ(Resource input) {
		String resultx = getResult(defaultCaller
				.call(getDoSPARQLRequest(Queries.GETPRFOFPROFILABLEXTRA.replace(Queries.ARG1, input.getURI()))));
		Object objx = Activator.parser.deserialize(resultx);
		if (objx == null)
			return null;
		String result = getResult(defaultCaller
				.call(getDoSPARQLRequest(Queries.GETPRFOFPROFILABLE.replace(Queries.ARG1, input.getURI()))));
		String uri = ((Resource) objx).getURI();
		return (Resource) Activator.parser.deserialize(result, uri);
	}
File Project Line
org/universAAL/context/rdf4j/sail/ValueStore.java universAAL Context rdf4j SAIL for OWL Lite 223
org/universAAL/context/rdf4j/sail/ValueStore.java universAAL Context rdf4j SAIL for OWL Lite 298
	public int getID(Value value)
		throws IOException
	{
		// Try to get the internal ID from the value itself
		boolean isOwnValue = isOwnValue(value);

		if (isOwnValue) {
			NativeValue nativeValue = (NativeValue)value;

			if (revisionIsCurrent(nativeValue)) {
				int id = nativeValue.getInternalID();

				if (id != NativeValue.UNKNOWN_ID) {
					return id;
				}
			}
		}

		// Check cache
		Integer cachedID = valueIDCache.get(value);

		if (cachedID != null) {
			int id = cachedID.intValue();

			if (isOwnValue) {
				// Store id in value for fast access in any consecutive calls
				((NativeValue)value).setInternalID(id, revision);
			}

			return id;
		}

		// ID not cached, search in file
		byte[] data = value2data(value, false);
File Project Line
org/universAAL/context/rdf4j/sail/CardinalitySailStore.java universAAL Context rdf4j SAIL for OWL Lite 280
org/universAAL/context/rdf4j/sail/CardinalitySailStore.java universAAL Context rdf4j SAIL for OWL Lite 587
org/universAAL/context/rdf4j/sail/Collection2SailStore.java universAAL Context rdf4j SAIL for OWL Lite 283
org/universAAL/context/rdf4j/sail/Collection2SailStore.java universAAL Context rdf4j SAIL for OWL Lite 626
org/universAAL/context/rdf4j/sail/CollectionSailStore.java universAAL Context rdf4j SAIL for OWL Lite 283
org/universAAL/context/rdf4j/sail/CollectionSailStore.java universAAL Context rdf4j SAIL for OWL Lite 599
org/universAAL/context/rdf4j/sail/NativeEvaluationStatistics.java universAAL Context rdf4j SAIL for OWL Lite 85
org/universAAL/context/rdf4j/sail/NativeSailStore.java universAAL Context rdf4j SAIL for OWL Lite 261
org/universAAL/context/rdf4j/sail/NativeSailStore.java universAAL Context rdf4j SAIL for OWL Lite 511
		int subjID = NativeValue.UNKNOWN_ID;
		if (subj != null) {
			subjID = valueStore.getID(subj);
			if (subjID == NativeValue.UNKNOWN_ID) {
				return 0;
			}
		}

		int predID = NativeValue.UNKNOWN_ID;
		if (pred != null) {
			predID = valueStore.getID(pred);
			if (predID == NativeValue.UNKNOWN_ID) {
				return 0;
			}
		}

		int objID = NativeValue.UNKNOWN_ID;
		if (obj != null) {
			objID = valueStore.getID(obj);
			if (objID == NativeValue.UNKNOWN_ID) {
				return 0;
			}
		}