我无法找到有关此例外的其他信息

时间:2018-01-29 20:11:53

标签: c# .net unity3d dotnetrdf

我的目标: 为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更新命令。当然不是理想的形式,但在获得问题的最终解决方案之前,它将被使用。

1 个答案:

答案 0 :(得分:0)

从他们的文档中,看起来您应该声明SparqlParameterizesString update = new SparqlParameterizedString();,然后通过update.CommandText("...");更新它的命令文本。在示例中,它们调用SparqlParameterizesString的ToString()方法,该方法告诉我,当您调用ToString()方法时,它们可能会在字符串中插入一些逻辑。换句话说,不要将纯字符串传递给Update方法,你应该没问题。

文章来源: https://github.com/dotnetrdf/dotnetrdf/wiki/UserGuide-Updating-With-SPARQL