2017-07-20 4 views
0

を働いていないと挿入します。しかし、値を挿入する場合、204 HTTPコードが返されますが、データはグラフに追加されません。ここに私がやったことです:
はSPARQLは布石が、私は、Javaアプリケーションから埋め込ま布石を使用しています

PREFIX dc: <http://purl.org/dc/elements/1.1/>INSERT DATA{ <http://example/book3> dc:title "A new book"} 

<Response [204]> 

その後、私はそれが働いたかどうかを確認するために、すべてを選択します。

SELECT DISTINCT * WHERE {?s ?q ?o} 

を、私はクライアント側で

<?xml version="1.0"?> 
<sparql xmlns="http://www.w3.org/2005/sparql-results#"> 
    <head> 
    <variable name="s"/> 
    <variable name="q"/> 
    <variable name="o"/> 
    </head> 
    <results> 
    </results> 
</sparql> 

を取得し、私は基本的なのpythonを持っていますスクリプト:

port = 3333 
test_add = 'PREFIX dc: <http://purl.org/dc/elements/1.1/>INSERT DATA{ <http://example/book3> dc:title "A new book"}' 
try : 
    print requests.post("http://localhost:"+str(port)+"/ds", data={'update': test_add}) 
    print urllib2.urlopen("http://localhost:"+str(port)+"/ds?query=SELECT%20DISTINCT%20*%20WHERE%20{?s%20?q%20?o}").read() 

except Exception as e : 
    print e 

このpythonスクリプトは現在動作していますが、以下の答えから順応しています。

+0

操作を行うクライアント側のコードを表示してください。 – AndyS

+0

これはちょうど非常に基本的なpythonスクリプトです(私は質問にそれを加えました)。私はtest_add変数でいくつかのことをテストしました – Yotm

+0

ブール引数なしでサーバーを作成できませんか?たぶん、HTTP経由で読み取り専用です。 – AKSW

答えて

0

これは良い答えではないかもしれませんが、それは私のために働くことを示しています。

イエナ布石2.6.0

スタート組み込みサーバー

public class FusekiTestServer { 
    public static void main(String[] args) { 
     Dataset ds = DatasetFactory.createTxnMem() ; 

     FusekiEmbeddedServer server = FusekiEmbeddedServer.create() 
       .setPort(3333) 
       .add("/ds", ds, true) 
       .build() ; 
     server.start() ; 
    } 
} 

挿入データ

要求

curl --request POST http://localhost:3333/ds --data-urlencode 'update=PREFIX dc: <http://purl.org/dc/elements/1.1/>INSERT DATA{ <http://example/book3> dc:title "A new book"}' 

出力

<html> 
<head> 
</head> 
<body> 
<h1>Success</h1> 
<p> 
Update succeeded 
</p> 
</body> 
</html> 

クエリデータ

要求

curl --request GET http://localhost:3333/ds --data-urlencode 'query=SELECT DISTINCT * WHERE {?s ?q ?o}' 

出力

<http://example/book3> 
     <http://purl.org/dc/elements/1.1/title> 
       "A new book" . 

診断

私は、Pythonの専門家ではないんだけど、クエリ文字列は、データの中に置かれるべきではありませんそれはPOST要求の配列ですか?何かのように

requests.post("http://localhost:"+str(port)+"/ds, data={'update': 'PREFIX dc: <http://purl.org/dc/elements/1.1/>INSERT DATA{ <http://example/book3> dc:title "A new book"}'}) 
+0

あなたは完全に正しいです、GETのようなPOSTを使用するのは意味がありません。なぜ私はそれをしたのか分かりません。前にデータにquerryを入れようとしましたが、動作しませんでした。私は当時何かを忘れてしまったに違いない。私は今朝それを試みたときに働いていた!ありがとう、コードを更新します – Yotm

関連する問題