def test_authenticated_access_to_not_authenticated_endpoint(self, time, info, greenlet_fetch): response = triplestore.query_sparql(SIMPLE_QUERY, triplestore_config) self.assertEqual(response, None) self.assertEqual(info.call_count, 1) log_msg = "POST - http://localhost:8890/sparql-auth - None - dba [tempo: 0] - QUERY - SELECT COUNT(*) WHERE {?s a owl:Class}" self.assertTrue(info.call_args, log_msg) with self.assertRaises(HTTPError) as error: triplestore.query_sparql(SIMPLE_QUERY, modified_dict) self.assertEqual(error.status_code, 401)
def _query_predicate_without_lang(query_params, superclasses): filter_expression = u"FILTER (?domain_class IN (<" + u">, <".join(superclasses) + u">))" template_vars = dict(filter_classes_clause=filter_expression, uniqueness_property=settings.ANNOTATION_PROPERTY_HAS_UNIQUE_VALUE, **query_params) query = QUERY_PREDICATE_WITHOUT_LANG % template_vars return triplestore.query_sparql(query, query_params.triplestore_config)
def list_all_contexts(query_params): sparql_response = triplestore.query_sparql(QUERY_LIST_CONTEXT, query_params.triplestore_config) all_contexts_uris = sparql.filter_values(sparql_response, "graph") filtered_contexts = filter_and_build_contexts(all_contexts_uris) if not filtered_contexts: json = {"items": [], "warning": "No contexts were found."} return json page_index = int(query_params["page"]) per_page = int(query_params["per_page"]) contexts_pages = split_into_chunks(filtered_contexts, per_page) try: contexts = contexts_pages[page_index] except IndexError: json = { "items": [], "warning": u"No contexts were found in page {0:d}.".format( int(query_params["page"]) + 1) } return json json = { '_base_url': remove_last_slash(query_params.base_url), 'items': contexts } def calculate_total_items(): return len(filtered_contexts) decorate_dict_with_pagination(json, query_params, calculate_total_items) return json
def list_all_contexts(query_params): sparql_response = triplestore.query_sparql(QUERY_LIST_CONTEXT, query_params.triplestore_config) all_contexts_uris = sparql.filter_values(sparql_response, "graph") filtered_contexts = filter_and_build_contexts(all_contexts_uris) if not filtered_contexts: json = { "items": [], "warning": "No contexts were found." } return json page_index = int(query_params["page"]) per_page = int(query_params["per_page"]) contexts_pages = split_into_chunks(filtered_contexts, per_page) try: contexts = contexts_pages[page_index] except IndexError: json = { "items": [], "warning": u"No contexts were found in page {0:d}.".format(int(query_params["page"]) + 1) } return json json = { '_base_url': remove_last_slash(query_params.base_url), 'items': contexts } def calculate_total_items(): return len(filtered_contexts) decorate_dict_with_pagination(json, query_params, calculate_total_items) return json
def _get_class_fields_value(query_params, classes, meta_field): query = _build_class_fields_query(classes, meta_field) class_field_query_response = triplestore.query_sparql( query, query_params.triplestore_config) class_field_values = filter_values(class_field_query_response, "field_value") return class_field_values
def _query_predicate_with_lang(query_params, superclasses): filter_expression = "FILTER (?domain_class IN (<" + ">, <".join(superclasses) + ">))" template_vars = dict(filter_classes_clause=filter_expression, uniqueness_property=query_params.get_aux_param('uniqueness_property'), **query_params) query = QUERY_PREDICATE_WITH_LANG % template_vars response = triplestore.query_sparql(query, query_params.triplestore_config) return response
def _query_predicate_without_lang(query_params, superclasses): filter_expression = u"FILTER (?domain_class IN (<" + u">, <".join( superclasses) + u">))" template_vars = dict( filter_classes_clause=filter_expression, uniqueness_property=settings.ANNOTATION_PROPERTY_HAS_UNIQUE_VALUE, **query_params) query = QUERY_PREDICATE_WITHOUT_LANG % template_vars return triplestore.query_sparql(query, query_params.triplestore_config)
def find_graph_from_class(class_uri): query = QUERY_FIND_GRAPH_FROM_CLASS % {'class_uri': class_uri} result_dict = query_sparql(query, config_parser.parse_section(), async=False) graphs = filter_values(result_dict, 'graph') try: return graphs[0] if (len(graphs) == 1) else None except IndexError: return None
def _query_predicate_with_lang(query_params, superclasses): filter_expression = "FILTER (?domain_class IN (<" + ">, <".join( superclasses) + ">))" template_vars = dict( filter_classes_clause=filter_expression, uniqueness_property=query_params.get_aux_param('uniqueness_property'), **query_params) query = QUERY_PREDICATE_WITH_LANG % template_vars response = triplestore.query_sparql(query, query_params.triplestore_config) return response
def is_value_already_used(instance_uri, object_value, predicate_uri, class_object, graph_uri, query_params): class_uri = class_object['id'] query = QUERY_VALUE_EXISTS % { "graph_uri": graph_uri, "class_uri": class_uri, "instance_uri": instance_uri, "predicate_uri": predicate_uri, "object_value": object_value } query_result = triplestore.query_sparql(query, query_params.triplestore_config) return is_result_true(query_result)
def query_all_properties_and_objects_by_instance_uri(query_params): template_vars = dict(ruleset=settings.DEFAULT_RULESET_URI, **query_params) expand_object_properties = query_params.get("expand_object_properties") == "1" if expand_object_properties: template_vars["object_label_variable"] = "?object_label" template_vars["object_label_optional_clause"] = "OPTIONAL { ?object rdfs:label ?object_label } ." else: template_vars["object_label_variable"] = "" template_vars["object_label_optional_clause"] = "" query = QUERY_ALL_PROPERTIES_AND_OBJECTS_TEMPLATE_BY_URI % template_vars return triplestore.query_sparql(query, query_params.triplestore_config)
def get_subproperties(super_property): params = { "ruleset": "http://semantica.globo.com/ruleset", "property": super_property } query = QUERY_SUBPROPERTIES % params result_dict = query_sparql(query, config_parser.parse_section(), async=False) subproperties = filter_values(result_dict, "property") return subproperties
def query_all_properties_and_objects_by_instance_uri(query_params): template_vars = dict(ruleset=settings.DEFAULT_RULESET_URI, **query_params) expand_object_properties = query_params.get( "expand_object_properties") == "1" if expand_object_properties: template_vars["object_label_variable"] = "?object_label" template_vars[ "object_label_optional_clause"] = "OPTIONAL { ?object rdfs:label ?object_label } ." else: template_vars["object_label_variable"] = "" template_vars["object_label_optional_clause"] = "" query = QUERY_ALL_PROPERTIES_AND_OBJECTS_TEMPLATE_BY_URI % template_vars return triplestore.query_sparql(query, query_params.triplestore_config)
def find_graph_and_class_from_instance(instance_uri): query = QUERY_FIND_GRAPH_AND_CLASS_FROM_INSTANCE % {'instance_uri': instance_uri} result_dict = query_sparql(query, config_parser.parse_section(), async=False) graphs = filter_values(result_dict, 'graph') classes = filter_values(result_dict, 'class') try: graph_uri = graphs[0] if (len(graphs) == 1) else None except IndexError: graph_uri = None try: class_uri = classes[0] if (len(classes) == 1) else None except IndexError: class_uri = None return graph_uri, class_uri
def execute_query(query_id, stored_query, querystring_params): query = get_query(stored_query, querystring_params) # TODO extract_method? request_dict = copy.copy(querystring_params.triplestore_config) request_dict.update({"query_id": query_id}) request_dict.update({"query": query}) log.logger.info(QUERY_EXECUTION_LOG_FORMAT.format(**request_dict)) result_dict = query_sparql(query, querystring_params.triplestore_config) items = compress_keys_and_values(result_dict) if not items: message = NO_RESULTS_MESSAGE_FORMAT.format(querystring_params.triplestore_config["url"], query) return { "items": [], # TODO explain in which instance of Virtuoso the query was executed? "warning": message} return {"items": items}
def execute_query(query_id, stored_query, querystring_params): query = get_query(stored_query, querystring_params) # TODO extract_method? request_dict = copy.copy(querystring_params.triplestore_config) request_dict.update({"query_id": query_id}) request_dict.update({"query": query}) log.logger.info(QUERY_EXECUTION_LOG_FORMAT.format(**request_dict)) result_dict = query_sparql(query, querystring_params.triplestore_config) items = compress_keys_and_values(result_dict) if not items: message = NO_RESULTS_MESSAGE_FORMAT.format( querystring_params.triplestore_config["url"], query) return { "items": [], # TODO explain in which instance of Virtuoso the query was executed? "warning": message } return {"items": items}
def query_count_filter_instances(query_params): query = Query(query_params).to_string(count=True) query_response = triplestore.query_sparql(query, query_params.triplestore_config) return query_response
def get_class_and_graph(query_params): query = QUERY_GET_CLASS_AND_GRAPH % query_params return triplestore.query_sparql(query, query_params.triplestore_config)
def _get_class_fields_value(query_params, classes, meta_field): query = _build_class_fields_query(classes, meta_field) class_field_query_response = triplestore.query_sparql(query, query_params.triplestore_config) class_field_values = filter_values(class_field_query_response, "field_value") return class_field_values
def query_class_schema(query_params): query = build_class_schema_query(query_params) return triplestore.query_sparql(query, query_params.triplestore_config)
def query_count_classes(query_params): query = QUERY_COUNT_ALL_CLASSES_OF_A_GRAPH % query_params return triplestore.query_sparql(query, query_params.triplestore_config)
def test_query_sparql_with_valid_credential(self, mocked_log, greenlet_fetch): response = triplestore.query_sparql("", triplestore_config) self.assertEqual(greenlet_fetch.call_count, 1) self.assertEqual(response, {})
def query_dependants(query_params): query = QUERY_DEPENDANTS_TEMPLATE % query_params result_dict = triplestore.query_sparql(query, query_params.triplestore_config) return result_dict
def test_query_sparql_without_error(self, run_query, mock_log): response = triplestore.query_sparql("", self.TRIPLESTORE_CONFIG) self.assertEqual(response, {})
def test_malformed_query(self): MALFORMED_QUERY = "SELECT A MALFORMED QUERY {?s ?p ?o}" with self.assertRaises(ClientHTTPError) as error: triplestore.query_sparql(MALFORMED_QUERY, triplestore_config) self.assertEqual(str(error.exception), 'HTTP 400: Bad Request')
def _query_superclasses(query_params): query = QUERY_SUPERCLASS % query_params return triplestore.query_sparql(query, query_params.triplestore_config)
def query_cardinalities(query_params): query = QUERY_CARDINALITIES % query_params return triplestore.query_sparql(query, query_params.triplestore_config)
def class_exists(query_params): query = QUERY_CLASS_EXISTS % query_params query_result = triplestore.query_sparql(query, query_params.triplestore_config) return is_result_true(query_result)
def _get_predicate_ranges(query_params, search_params): query = _build_predicate_ranges_query(query_params, search_params) return triplestore.query_sparql(query, query_params.triplestore_config)
def query(self, query_string, graph=None): endpoint_dict = parse_section() self.process_inference_options() response = triplestore.query_sparql(query_string, endpoint_dict, async=False) return response
def graph_exists(query_params): query = QUERY_GRAPH_EXISTS % query_params query_result = triplestore.query_sparql(query, query_params.triplestore_config) return is_result_true(query_result)
def query_delete(query_params): query = QUERY_DELETE_INSTANCE % query_params result_dict = triplestore.query_sparql(query, query_params.triplestore_config) return result_dict
def query_classes_list(query_params): offset = calculate_offset(query_params) query_params['offset'] = offset query = QUERY_ALL_CLASSES_OF_A_GRAPH % query_params del query_params['offset'] return triplestore.query_sparql(query, query_params.triplestore_config)
def query_create_instances(query_params): query = QUERY_INSERT_TRIPLES % query_params return triplestore.query_sparql(query, query_params.triplestore_config)
def test_sync_query_not_authenticated_works(self): triplestore_config = config_parser.parse_section() triplestore_config["url"] = "http://localhost:8890/sparql" response = triplestore.query_sparql(SIMPLE_QUERY, triplestore_config, async=False) self.assertTrue(response['boolean'])
def test_query_ok(self): response = triplestore.query_sparql(SIMPLE_QUERY, triplestore_config) self.assertTrue(response['boolean'])
def test_authenticated_access_to_not_authenticated_endpoint(self): modified_dict = triplestore_config.copy() modified_dict["url"] = 'http://localhost:8890/sparql' response = triplestore.query_sparql(SIMPLE_QUERY, modified_dict) self.assertTrue(response['boolean'])
def modify_instance(query_params, **kw): kw.update(query_params) query = MODIFY_QUERY % kw return triplestore.query_sparql(query, query_params.triplestore_config)
def test_sync_query_authenticated_works(self): triplestore_config = config_parser.parse_section() response = triplestore.query_sparql(SIMPLE_QUERY, triplestore_config, async=False) self.assertTrue(response["boolean"])
def instance_exists(query_params): query = QUERY_INSTANCE_EXISTS_TEMPLATE % query_params result_dict = triplestore.query_sparql(query, query_params.triplestore_config) return is_result_true(result_dict)