public function testGetParserErrors() { $graph = new SimpleGraph(); $graph->add_rdf($this->_single_triple_turtle); $errors = $graph->get_parser_errors(); $this->assertTrue(empty($errors), "Errors should be empty"); $graph->add_rdf($this->_single_triple_invalid_rdf); $errors = $graph->get_parser_errors(); $this->assertFalse(empty($errors), "Errors should not be empty"); $this->assertTrue(!empty($errors[0]), "Errors first item should not be empty"); }
function loadDataFromItem() { $uri = $this->ConfigGraph->getCompletedItemTemplate(); $this->list_of_item_uris = array($uri); $viewerUri = $this->getViewer(); $this->viewQuery = $this->SparqlWriter->getViewQueryForUri($uri, $viewerUri); if (LOG_VIEW_QUERIES) { logViewQuery($this->Request, $this->viewQuery); } $response = $this->SparqlEndpoint->graph($this->viewQuery, PUELIA_RDF_ACCEPT_MIMES); $pageUri = $this->Request->getUriWithoutPageParam(); if ($response->is_success()) { $rdf = $response->body; $this->DataGraph->add_rdf($rdf); $this->DataGraph->add_resource_triple($pageUri, FOAF . 'primaryTopic', $uri); $label = $this->DataGraph->get_first_literal($uri, SKOS . 'prefLabel'); if (!empty($label) || ($label = $this->DataGraph->get_label($uri))) { $this->DataGraph->add_literal_triple($pageUri, RDFS_LABEL, $label); } $this->DataGraph->add_resource_triple($uri, FOAF . 'isPrimaryTopicOf', $pageUri); $this->DataGraph->add_resource_triple($this->Request->getUri(), API . 'definition', $this->endpointUrl); if ($datasetUri = $this->ConfigGraph->getDatasetUri()) { $this->DataGraph->add_resource_triple($pageUri, VOID . 'inDataset', $datasetUri); $voidRequest = $this->HttpRequestFactory->make('GET', $datasetUri); $voidRequest->set_accept(PUELIA_RDF_ACCEPT_MIMES); $voidResponse = $voidRequest->execute(); if ($voidResponse->is_success()) { $voidGraph = new SimpleGraph(); $base = array_shift(explode('#', $datasetUri)); $voidGraph->add_rdf($voidResponse->body, $base); if ($licenseUri = $voidGraph->get_first_resource($datasetUri, DCT . 'license')) { $this->DataGraph->add_resource_triple($this->Request->getUri(), DCT . 'license', $licenseUri); } else { logDebug($datasetUri . ' has no dct:license'); } } else { logDebug("VoID document could not be fetched from {$datasetUri}"); } } } else { logError("Endpoint returned {$response->status_code} {$response->body} View Query <<<{$this->viewQuery}>>> failed against {$this->SparqlEndpoint->uri}"); $this->setStatusCode(HTTP_Internal_Server_Error); $this->errorMessages[] = "The SPARQL endpoint used by this URI configuration did not return a successful response."; } $this->pageUri = $pageUri; }
/** * mirror_from_url * * @return array of responses from http requests, and overall success status * @author Keith Alexander * * **/ function mirror_from_url($url, $rdf_content = false) { $return = array('get_page' => false, 'get_copy' => false, 'put_page' => false, 'update_data' => false, 'success' => false); if (empty($this->request_factory)) { $this->request_factory = new HttpRequestFactory(); } $last_cached_page_uri = $this->get_contentbox()->uri . '/mirrors/' . $url; if (!$rdf_content) { $web_page_request = $this->request_factory->make('GET', $url); $web_page_request->set_accept('application/rdf+xml;q=0.8,text/turtle;q=0.9,*/*;q=0.1'); $web_page_response = $web_page_request->execute(); $return['get_page'] = $web_page_response; $web_page_content = $web_page_response->body; } else { $web_page_content = $rdf_content; $return['rdf_content'] = $rdf_content; } if ($rdf_content or $web_page_response->is_success()) { $newGraph = new SimpleGraph(); $newGraph->add_rdf($web_page_content, $url); $newGraph->add_resource_triple($url, OPEN_LASTCACHEDPAGE, $last_cached_page_uri); $newGraph->skolemise_bnodes($last_cached_page_uri . '/'); $after = $newGraph->get_index(); # get previous copy if it exists $cached_page_request = $this->request_factory->make('GET', $last_cached_page_uri, $this->credentials); $cached_page_response = $cached_page_request->execute(); $return['get_copy'] = $cached_page_response; if ($cached_page_response->status_code == '200') { $before = json_decode($cached_page_response->body, true); } else { if ($cached_page_response->status_code == '404') { $before = false; } else { return $return; } } # build new changeset $Changeset = new ChangeSet(array('before' => $before, 'after' => $after, 'creatorName' => 'Store::mirror_from_url', 'changeReason' => 'mirroring from ' . $url)); if ($Changeset->has_changes()) { $return['update_data'] = $this->get_metabox()->apply_changeset($Changeset); if ($return['update_data']->is_success()) { $return['success'] = true; } else { if ($return['update_data']->status_code == '409') { # Conflict. some statements already removed. $before_graph = new SimpleGraph($before); $return['reapply_before_triples'] = $this->get_metabox()->submit_turtle($before_graph->to_turtle()); if ($return['reapply_before_triples']->status_code == '204') { #Succeeded. No content $return['update_data'] = $this->get_metabox()->apply_changeset($Changeset); $return['success'] = $return['update_data']->is_success(); } } else { return $return; } } $put_page_request = $this->request_factory->make('PUT', $last_cached_page_uri, $this->credentials); $put_page_request->set_body($newGraph->to_json()); $put_page_request->set_content_type('application/json'); $put_page_response = $put_page_request->execute(); $return['put_page'] = $put_page_response; $return['success'] = $put_page_response->is_success(); return $return; } else { $return['success'] = true; return $return; } } else { return $return; } }
/** * mirror_from_uri: * * @return array of responses from http requests, and overall success status * @author Keith Alexander * * **/ function mirror_from_uri($url, $rdf_content = false) { $return = array('get_page' => false, 'get_copy' => false, 'update_data' => false, 'success' => false); if (empty($this->request_factory)) { $this->request_factory = new HttpRequestFactory(); } if (!$rdf_content) { $web_page_request = $this->request_factory->make('GET', $url); $web_page_request->set_accept('application/rdf+xml;q=0.8,text/turtle;q=0.9,*/*;q=0.1'); $web_page_response = $web_page_request->execute(); $return['get_page'] = $web_page_response; $web_page_content = $web_page_response->body; } else { $web_page_content = $rdf_content; $return['rdf_content'] = $rdf_content; } if ($rdf_content or $web_page_response->is_success()) { $newGraph = new SimpleGraph(); $newGraph->add_rdf($web_page_content, $url); $jsonGraphContent = $newGraph->to_json(); $newGraph->add_resource_triple($url, OPEN_JSON, $jsonGraphContent); $newGraph->skolemise_bnodes(trim($url, '#') . '#'); $after = $newGraph->get_index(); # get previous copy if it exists $cached_page_response = $this->describe($url, 'json'); $return['get_copy'] = $cached_page_response; if ($cached_page_response->status_code == '200') { $description_index = json_decode($cached_page_response->body, true); if (isset($description_index[$url]) and isset($description_index[$url][OPEN_JSON])) { $before = json_decode($description_index[$url][OPEN_JSON][0]['value'], 1); } else { $before = false; } } else { if ($cached_page_response->status_code == '404') { $before = false; } else { return $return; } } # build new changeset $Changeset = new ChangeSet(array('before' => $before, 'after' => $after, 'creatorName' => 'Graph::mirror_from_uri', 'changeReason' => 'mirroring from ' . $url)); if ($Changeset->has_changes()) { $return['update_data'] = $this->apply_changeset($Changeset); if ($return['update_data']->is_success()) { $return['success'] = true; } else { if ($return['update_data']->status_code == '409') { # Conflict. some statements already removed. $before_graph = new SimpleGraph($before); $return['reapply_before_triples'] = $this->get_metabox()->submit_turtle($before_graph->to_turtle()); if ($return['reapply_before_triples']->status_code == '204') { #Succeeded. No content $return['update_data'] = $this->get_metabox()->apply_changeset($Changeset); $return['success'] = $return['update_data']->is_success(); } } else { return $return; } } return $return; } else { $return['success'] = true; return $return; } } else { return $return; } }