All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.bigdata.rdf.store.BDS Maven / Gradle / Ivy

/*

Copyright (C) SYSTAP, LLC DBA Blazegraph 2006-2016.  All rights reserved.

Contact:
     SYSTAP, LLC DBA Blazegraph
     2501 Calvert ST NW #106
     Washington, DC 20008
     [email protected]

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.

This program 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 General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

*/
/*
 * Created on Apr 12, 2008
 */

package com.bigdata.rdf.store;

import org.openrdf.model.URI;
import org.openrdf.model.impl.URIImpl;

import com.bigdata.rdf.sparql.ast.eval.SliceServiceFactory;


/**
 * A vocabulary for the bigdata full text search facility. Full text search may
 * be used to combine text search and graph search. Low-latency, user facing
 * search applications may be created by slicing the full text search results
 * and feeding them incrementally into SPARQL queries. This approach allows the
 * application to manage the cost of the SPARQL query by bounding the input. If
 * necessary, additional results can be feed into the query. 
 * 
 * @see SliceServiceFactory
 * 
 * @see 
 *      Free Text Index 
 * 
 * @author Bryan Thompson
 * @version $Id: BD.java 6786 2012-12-19 18:43:27Z thompsonbry $
 */
public interface BDS {

    /**
     * The namespace used for magic search predicates.
     * 

* @see #SEARCH * @see #RELEVANCE * @see #RANK * @see #NUM_MATCHED_TOKENS */ final String NAMESPACE = "http://www.bigdata.com/rdf/search#"; /** * The name of a magic predicate recognized in SPARQL queries when it occurs * in statement patterns such as: * *

     * 
     * ( s?, bigdata:search, "scale-out RDF triplestore" )
     * 
     * 
* * The value MUST be bound and MUST be a literal. The * languageCode attribute is permitted. When specified, the * languageCode attribute will be used to determine how the * literal is tokenized - it does not filter for matches marked with that * languageCode attribute. The datatype attribute * is not allowed. *

* The subject MUST NOT be bound. *

* * This expression will evaluate to a set of bindings for the subject * position corresponding to the indexed literals matching any of the terms * obtained when the literal was tokenized. * *

* Note: The context position should be unbound when using statement * identifiers. */ final URI SEARCH = new URIImpl(NAMESPACE + "search"); /** * Magic predicate used to query for free text search metadata, reporting * the relevance of the search result to the search query. Use in * conjunction with {@link #SEARCH} as follows: *

* *

     * 
     * select ?s ?relevance
     * where {
     *   ?s bds:search "scale-out RDF triplestore" .
     *   ?s bds:relevance ?relevance .
     * }
     * 
     * 
* * Relevance is the cosine of the angle between the query vector (search * terms) and the document vector (terms in the indexed literals). The * minimum relevance is ZERO (0.0). The maximum relevance is ONE (1.0). * * @see #MIN_RELEVANCE * @see #MAX_RELEVANCE */ final URI RELEVANCE = new URIImpl(NAMESPACE + "relevance"); /** * Magic predicate used to query for free text search metadata, reporting * the rank (origin ONE (1)) of the search result amoung the search results * obtained for the search query. The rank is from ONE to N, where N is the * number of search results from the full text index. {@link #MIN_RANK} and * {@link #MAX_RANK} may be used to "slice" the full text index search * results. Use this query hint conjunction with {@link #SEARCH} as follows: *

* *

     * 
     * select ?s ?rank
     * where {
     *   ?s bds:search "scale-out RDF triplestore" .
     *   ?s bds:rank ?rank .
     * }
     * 
     * 
* * @see #MIN_RANK * @see #MAX_RANK */ final URI RANK = new URIImpl(NAMESPACE + "rank"); /** * Magic predicate used to limit the maximum rank of the free text search * results to the specified value (default {@value #DEFAULT_MAX_RANK)}. Use * in conjunction with {@link #SEARCH} as follows: *

* *

     * 
     * select ?s
     * where {
     *   ?s bds:search "scale-out RDF triplestore" .
     *   ?s bds:maxRank "5"^^xsd:int .
     * }
     * 
     * 
* * You can use {@link #MIN_RANK} and {@link #MAX_RANK} together to page * through the search results. This is often key to achieving low latency * graph search. By limiting the number of results that are fed into the * remained of the SPARQL query, you can ensure that the SPARQL query runs * quickly. If you do not get enough results from the SPARQL query, you can * feed the next "page" of free text results by changing the values for the * {@link #MIN_RANK} AND {@link #MAX_RANK} query hints. */ final URI MAX_RANK = new URIImpl(NAMESPACE + "maxRank"); /** * The default for {@link #MAX_RANK}. */ final int DEFAULT_MAX_RANK = Integer.MAX_VALUE; /** * Magic predicate used to limit the minimum rank of the free text search * results to the specified value (default {@value #DEFAULT_MIN_RANK}). Use * in conjunction with {@link #SEARCH} as follows: *

* *

     * 
     * select ?s
     * where {
     *   ?s bds:search "scale-out RDF triplestore" .
     *   ?s bds:minRank "5"^^xsd:int .
     * }
     * 
     * 
* * The default is {@value #DEFAULT_MIN_RANK}. */ final URI MIN_RANK = new URIImpl(NAMESPACE + "minRank"); /** * The default for {@link #MIN_RANK} is 1, full text search results will * start with the #1 most relevant hit by default. */ final int DEFAULT_MIN_RANK = 1; /** * Magic predicate used to query for free text search metadata. Use in * conjunction with {@link #SEARCH} as follows: *

* *

     * 
     * select ?s
     * where {
     *   ?s bds:search "scale-out RDF triplestore" .
     *   ?s bds:minRelevance "0.5"^^xsd:double .
     * }
     * 
     * 
* * The relevance scores are in [0.0:1.0], where 0.0 is the minimum possible * relevance and 1.0 is the maximum possible relevance. You should NOT * specify a minimum relevance of ZERO (0.0) as this can drag in way too * many unrelated results. The default is {@value #DEFAULT_MIN_RELEVANCE}. */ final URI MIN_RELEVANCE = new URIImpl(NAMESPACE + "minRelevance"); final double DEFAULT_MIN_RELEVANCE = 0.0d; /** * Magic predicate used to query for free text search metadata. Use in * conjunction with {@link #SEARCH} as follows: *

* *

     * 
     * select ?s
     * where {
     *   ?s bds:search "scale-out RDF triplestore" .
     *   ?s bds:maxRelevance "0.9"^^xsd:double .
     * }
     * 
     * 
* * The relevance scores are in [0.0:1.0], where 0.0 is the minimum possible * relevance and 1.0 is the maximum possible relevance. You should NOT * specify a minimum relevance of ZERO (0.0) as this can drag in way too * many unrelated results. The default maximum relevance is * {@value #DEFAULT_MAX_RELEVANCE}. */ final URI MAX_RELEVANCE = new URIImpl(NAMESPACE + "maxRelevance"); /** * The default value for {@link #MAX_RELEVANCE} unless overridden. */ final double DEFAULT_MAX_RELEVANCE = 1.0d; /** * Magic predicate used to query for free text search metadata indicates * that all terms in the query must be found within a given literal in order * for that literal to "match" the query (default * {@value #DEFAULT_MATCH_ALL_TERMS}). Use in conjunction with * {@link #SEARCH} as follows: *

* *

     * 
     * select ?s
     * where {
     *   ?s bds:search "scale-out RDF triplestore" .
     *   ?s bds:matchAllTerms "true" .
     * }
     * 
     * 
*/ final URI MATCH_ALL_TERMS = new URIImpl(NAMESPACE + "matchAllTerms"); final boolean DEFAULT_MATCH_ALL_TERMS = false; /** * Magic predicate used to query for free text search metadata indicates * that only exact string matches will be reported (the literal must contain * the search string). Use in conjunction with {@link #SEARCH} as follows: *

* *

     * 
     * select ?s
     * where {
     *   ?s bds:search "scale-out RDF triplestore" .
     *   ?s bds:matchExact "true" .
     * }
     * 
     * 
*

* This operation will be rather expensive as it will require materializing * all the hits to check their values. */ final URI MATCH_EXACT = new URIImpl(NAMESPACE + "matchExact"); final boolean DEFAULT_MATCH_EXACT = false; /** * Magic predicate used to query for free text search metadata indicates * that only search results that also pass the specified REGEX filter will * be reported. Use in conjunction with {@link #SEARCH} as follows: *

* *

     * 
     * select ?s
     * where {
     *   ?s bds:search "scale-out RDF triplestore" .
     *   ?s bds:matchRegex "regex to apply to ?s bindings" .
     * }
     * 
     * 
*

* This operation will be rather expensive as it will require materializing * all the hits to check their values. */ final URI MATCH_REGEX = new URIImpl(NAMESPACE + "matchRegex"); final String DEFAULT_MATCH_REGEX = null; /** * * Prefix matching is now indicated using a wildcard * *

     * PREFIX bds: 
     * 
     * SELECT ?subj ?label 
     * WHERE {
     *       ?label bds:search "mi*" .
     *       ?label bds:relevance ?cosine .
     *       ?subj ?p ?label .
     * }
     * 
* * The following approach is no longer supported. * * Magic predicate used to query for free text search metadata to turn on * prefix matching. Prefix matching will match all full text index tokens * that begin with the specified token(s) (default * {@value #DEFAULT_PREFIX_MATCH}). Use in conjunction with {@link #SEARCH} * as follows: *

* *

     * 
     * select ?s
     * where {
     *   ?s bds:search "scale-out RDF triplestore" .
     *   ?s bds:prefixMatch "true" .
     * }
     * 
     * 
*

* This will turn on prefix matching. * * @deprecated Prefix matching is now invoked using a wildcard. * * @see * prefixMatch does not work in full text search */ @Deprecated final URI PREFIX_MATCH = new URIImpl(NAMESPACE + "prefixMatch"); /** * @deprecated This option is now invoked using a wildcard. */ final boolean DEFAULT_PREFIX_MATCH = false; /** * Magic predicate used to query for free text search metadata. Use in * conjunction with {@link #SEARCH} as follows: *

* *

	 * 
	 * select ?s
	 * where {
	 *   ?s bds:search "scale-out RDF triplestore" .
	 *   ?s bds:subjectSearch "true" .
	 * }
	 * 
	 * 
*

* The subject-centric search index must be enabled via * {@link AbstractTripleStore.Options#SUBJECT_CENTRIC_TEXT_INDEX}. * * @deprecated Feature was never completed due to scalability issues. See * BZLG-1548, BLZG-563. */ @Deprecated final URI SUBJECT_SEARCH = new URIImpl(NAMESPACE + "subjectSearch"); @Deprecated final boolean DEFAULT_SUBJECT_SEARCH = false; /** * Magic predicate used for the "search in search" service. Also serves as * the identifier for the service itself. */ final URI SEARCH_IN_SEARCH = new URIImpl(NAMESPACE + "searchInSearch"); /** * Magic predicate used to query for free text search metadata to set a * deadline in milliseconds on the full text index search ( * {@value #DEFAULT_TIMEOUT}). Use in conjunction with {@link #SEARCH} as * follows: *

* *

     * 
     * select ?s
     * where {
     *   ?s bds:search "scale-out RDF triplestore" .
     *   ?s bds:searchTimeout "5000" .
     * }
     * 
     * 
*

* Timeout specified in milliseconds. */ final URI SEARCH_TIMEOUT = new URIImpl(NAMESPACE + "searchTimeout"); /** * The default timeout for a free text search (milliseconds). */ final long DEFAULT_TIMEOUT = Long.MAX_VALUE; /** * Magic predicate to specify that we want a range count done on the search. * Bind the range count to the variable in the object position. Will * attempt to do a fast range count on the index rather than materializing * the hits into an array. This is only possible if matchExact == false * and matchRegex == null. */ final URI RANGE_COUNT = new URIImpl(NAMESPACE + "rangeCount"); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy