public void Write(Stream fs, Uri graph, RdfSerializationFormat format) { using (VDS.RDF.Storage.VirtuosoManager m = new VDS.RDF.Storage.VirtuosoManager(CreateConnectionString())) { using (VDS.RDF.Graph g = new VDS.RDF.Graph()) { m.LoadGraph(g, graph); StreamWriter sw = new StreamWriter(fs, Encoding.UTF8); switch (format) { case RdfSerializationFormat.RdfXml: { VDS.RDF.Writing.RdfXmlWriter wr = new VDS.RDF.Writing.RdfXmlWriter(); wr.Save(g, sw); break; } } } } }
public override void Write(Stream fs, Uri graph, RdfSerializationFormat format) { using (VirtuosoManager manager = new VirtuosoManager(CreateConnectionString())) { using (VDS.RDF.Graph g = new VDS.RDF.Graph()) { manager.LoadGraph(g, graph); StreamWriter streamWriter = new StreamWriter(fs, Encoding.UTF8); switch (format) { case RdfSerializationFormat.RdfXml: { VDS.RDF.Writing.RdfXmlWriter xmlWriter = new VDS.RDF.Writing.RdfXmlWriter(); xmlWriter.Save(g, streamWriter); break; } } } } }
public Response Pull(string scope, string app, string graph, Request request) { Response response = new Response(); response.Level = StatusLevel.Success; Status status = new Status(); status.Messages = new Messages(); try { status.Identifier = String.Format("{0}.{1}", scope, app); InitializeScope(scope, app); if (_settings["ReadOnlyDataLayer"] != null && _settings["ReadOnlyDataLayer"].ToString().ToLower() == "true") { string message = "Can not perform post on read-only data layer of [" + scope + "." + app + "]."; _logger.Error(message); status.Level = StatusLevel.Error; status.Messages.Add(message); } else { InitializeDataLayer(); DateTime startTime = DateTime.Now; #region move this portion to dotNetRdfEngine? if (!request.ContainsKey("targetEndpointUri")) { throw new Exception("Target Endpoint Uri is required"); } string targetEndpointUri = request["targetEndpointUri"]; if (!request.ContainsKey("targetGraphBaseUri")) { throw new Exception("Target graph uri is required"); } string targetGraphBaseUri = request["targetGraphBaseUri"]; _settings["TargetGraphBaseUri"] = targetGraphBaseUri; if (targetGraphBaseUri.ToLower() == "[default graph]") { targetGraphBaseUri = String.Empty; } SparqlRemoteEndpoint endpoint = new SparqlRemoteEndpoint(new Uri(targetEndpointUri), targetGraphBaseUri); if (request.ContainsKey("targetCredentials")) { string targetCredentialsXML = request["targetCredentials"]; WebCredentials targetCredentials = Utility.Deserialize <WebCredentials>(targetCredentialsXML, true); if (targetCredentials.isEncrypted) { targetCredentials.Decrypt(); } endpoint.SetCredentials(targetCredentials.GetNetworkCredential().UserName, targetCredentials.GetNetworkCredential().Password, targetCredentials.GetNetworkCredential().Domain); } string proxyHost = _settings["ProxyHost"]; string proxyPort = _settings["ProxyPort"]; string proxyCredsToken = _settings["ProxyCredentialToken"]; if (!String.IsNullOrEmpty(proxyHost) && !String.IsNullOrEmpty(proxyPort) && !String.IsNullOrEmpty(proxyCredsToken)) { WebProxyCredentials proxyCreds = _settings.GetWebProxyCredentials(); endpoint.Proxy = proxyCreds.GetWebProxy() as WebProxy; endpoint.ProxyCredentials = proxyCreds.GetNetworkCredential(); } VDS.RDF.IGraph resultGraph = endpoint.QueryWithResultGraph("CONSTRUCT {?s ?p ?o} WHERE {?s ?p ?o}"); #endregion if (resultGraph != null && resultGraph.Triples.Count > 0) { // call RdfProjectionEngine to fill data objects from a given graph _projectionEngine = _kernel.Get <IProjectionLayer>("rdf"); System.Text.StringBuilder sb = new System.Text.StringBuilder(); TextWriter textWriter = new StringWriter(sb); VDS.RDF.Writing.RdfXmlWriter rdfWriter = new VDS.RDF.Writing.RdfXmlWriter(); rdfWriter.Save(resultGraph, textWriter); XDocument xDocument = XDocument.Parse(sb.ToString()); if (xDocument != null && xDocument.Root != null) { _logger.Debug(xDocument.Root.ToString()); _dataObjects = _projectionEngine.ToDataObjects(graph, ref xDocument); if (_dataObjects != null && _dataObjects.Count > 0) { status.Messages.Add("Query target endpoint completed successfully."); status.Messages.Add(String.Format("Number of data objects created [{0}].", _dataObjects.Count)); // post data objects to data layer response.Append(_dataLayer.Post(_dataObjects)); DateTime endTime = DateTime.Now; TimeSpan duration = endTime.Subtract(startTime); status.Messages.Add(String.Format("Execution time [{0}:{1}.{2}] minutes.", duration.Minutes, duration.Seconds, duration.Milliseconds)); } else { status.Messages.Add(string.Format("No data objects being created.")); } } else { throw new Exception("Facade document is empty."); } } else { throw new Exception("Facade graph is empty."); } } } catch (Exception ex) { _logger.Error("Error in Pull(): ", ex); status.Level = StatusLevel.Error; status.Messages.Add(string.Format("Error pulling graph: {0}", ex)); } response.Append(status); return(response); }
public Response Pull(string projectName, string applicationName, string graphName, Request request) { Status status = new Status(); status.Messages = new Messages(); try { status.Identifier = String.Format("{0}.{1}", projectName, applicationName); InitializeScope(projectName, applicationName); InitializeDataLayer(); DateTime startTime = DateTime.Now; if (!request.ContainsKey("targetEndpointUri")) { throw new Exception("Target Endpoint Uri is required"); } string targetEndpointUri = request["targetEndpointUri"]; if (!request.ContainsKey("targetGraphBaseUri")) { throw new Exception("Target graph uri is required"); } string targetGraphBaseUri = request["targetGraphBaseUri"]; _settings["TargetGraphBaseUri"] = targetGraphBaseUri; SparqlRemoteEndpoint endpoint = new SparqlRemoteEndpoint(new Uri(targetEndpointUri), targetGraphBaseUri); if (request.ContainsKey("targetCredentials")) { string targetCredentialsXML = request["targetCredentials"]; WebCredentials targetCredentials = Utility.Deserialize <WebCredentials>(targetCredentialsXML, true); if (targetCredentials.isEncrypted) { targetCredentials.Decrypt(); } endpoint.SetCredentials( targetCredentials.GetNetworkCredential().UserName, targetCredentials.GetNetworkCredential().Password, targetCredentials.GetNetworkCredential().Domain); } string proxyHost = _settings["ProxyHost"]; string proxyPort = _settings["ProxyPort"]; if (!String.IsNullOrEmpty(proxyHost) && !String.IsNullOrEmpty(proxyPort)) { WebProxy webProxy = new WebProxy(proxyHost, Int32.Parse(proxyPort)); WebProxyCredentials proxyCrendentials = _settings.GetWebProxyCredentials(); if (proxyCrendentials != null) { webProxy.Credentials = _settings.GetProxyCredential(); } endpoint.SetProxyCredentials(proxyCrendentials.userName, proxyCrendentials.password, proxyCrendentials.domain); endpoint.SetProxy(webProxy.Address); } String query = "CONSTRUCT {?s ?p ?o} WHERE {?s ?p ?o}"; VDS.RDF.IGraph graph = endpoint.QueryWithResultGraph(query); System.Text.StringBuilder sb = new System.Text.StringBuilder(); TextWriter textWriter = new StringWriter(sb); VDS.RDF.Writing.RdfXmlWriter rdfWriter = new VDS.RDF.Writing.RdfXmlWriter(); rdfWriter.Save(graph, textWriter); XDocument xDocument = XDocument.Parse(sb.ToString()); // call RdfProjectionEngine to fill data objects from a given graph _projectionEngine = _kernel.Get <IProjectionLayer>("rdf"); _dataObjects = _projectionEngine.ToDataObjects(graphName, ref xDocument); // post data objects to data layer _dataLayer.Post(_dataObjects); DateTime endTime = DateTime.Now; TimeSpan duration = endTime.Subtract(startTime); status.Messages.Add(string.Format("Graph [{0}] has been posted to legacy system successfully.", graphName)); status.Messages.Add(String.Format("Execution time [{0}:{1}.{2}] minutes.", duration.Minutes, duration.Seconds, duration.Milliseconds)); } catch (Exception ex) { _logger.Error("Error in Pull(): ", ex); status.Level = StatusLevel.Error; status.Messages.Add(string.Format("Error pulling graph: {0}", ex)); } _response.Append(status); return(_response); }