我的目标: 为Windows10-64bit构建一个应用程序,它使用Unity和dotNetRDF来管理Fuseki三重商店。
Unity 2017.3 64位
脚本运行时版本:实验(.NET 4.6等效)
脚本编写后端:单声道
API兼容级别:.NET 4.6
dotNetRFD v2.0.1
我保留了与net40相关的所有dll。
Unity“游戏”由一个按钮组成,下面提供了代码。 当我运行游戏并按下按钮时,我收到以下错误:
System.InvalidOperationException: request started
at System.Net.HttpWebRequest.CheckRequestStarted ()
at System.Net.HttpWebRequest.set_Accept (System.String value)
与按钮关联的NewBehaviourScript类代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using OntSenseCSharpAPI;
using System;
using VDS.RDF.Query;
using VDS.RDF.Update;
public class NewBehaviourScript : MonoBehaviour {
private SparqlRemoteUpdateEndpoint endpoint;
// Use this for initialization
void Start() {
// Start access to Sparql End Point : just one time at main method is enough
endpoint = new SparqlRemoteUpdateEndpoint("http://localhost:3030/test/update");
}
// Update is called once per frame
void Update() {
}
public void oneTriple() {
String updateCmd =
"PREFIX ontsense: < http://example.org/sense#> " +
"PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> " +
"INSERT DATA" +
" {" +
" ontsense: dotNetRDF rdf:comment \"dotNetRDF is a great tool.\"@en . " +
"}";
print(updateCmd);
try
{ // Try to access a resource.
endpoint.Update(updateCmd);
}
catch (Exception e)
{
print(e); // // Call a custom error logging procedure.
throw; // Re-throw the error. It is likely to interrupt the application
}
}
}
请注意,如果我使用dotNetRDF包创建单独的Visual Studio项目,则与Sparql端点的交互可以完美地工作。
目前,我已采用该解决方案来构建该应用程序。因此,我的系统使用一个应用程序,该应用程序接收来自Unity的套接字发送的Sparql更新命令。当然不是理想的形式,但在获得问题的最终解决方案之前,它将被使用。
答案 0 :(得分:0)
从他们的文档中,看起来您应该声明SparqlParameterizesString update = new SparqlParameterizedString();
,然后通过update.CommandText("...");
更新它的命令文本。在示例中,它们调用SparqlParameterizesString的ToString()方法,该方法告诉我,当您调用ToString()方法时,它们可能会在字符串中插入一些逻辑。换句话说,不要将纯字符串传递给Update方法,你应该没问题。
文章来源: https://github.com/dotnetrdf/dotnetrdf/wiki/UserGuide-Updating-With-SPARQL