2017-04-27 19 views
1

私はオントロジーモデルを持っています。私はSparqlの更新を介してクラスインスタンスの1つに整数データを挿入しています。モデルは任意の順序でランダムにデータを格納しています。今私はSparqlのクエリを介してこのデータを抽出したいときは、挿入の順番にしたい。どうすればこれを達成できますか?何か案が?オントロジーモデルの時間に基づいて挿入データをソート

P.S:マイオントロジーモデルは、Protegeソフトウェアで作成されています。 データを挿入するためのクエリが1つ以下です。

PREFIX test:<http://www.semanticweb.org/muhammad/ontologies/2017/2/untitled-ontology-14#> 
INSERT { 
    ?KPI_Variables test:hasValue_ROB1 10 
} WHERE { 
    ?KPI_Variables test:hasValue_ROB1 ?Newvalue 
    FILTER(?KPI_Variables= test:Actual_Production_Time) 
} 

そして、私は次のクエリを使用していたデータを取得する:

PREFIX test:<http://www.semanticweb.org/muhammad/ontologies/2017/2/untitled-ontology-14#> 
SELECT ?KPI_Variables ?Newvalue WHERE { 
    ?KPI_Variables test:hasValue_ROB1 ?Newvalue 
    FILTER(?KPI_Variables = test:Actual_Production_Time) 
} LIMIT 25 
+0

質問を編集して質問を編集できますか?人々があなたの努力を見て、あなたを助けることができるように。 – user730611

+0

質問編集されました。追加されたクエリ –

+0

INSERTクエリをどのように実行しますか?プロテウスで?もしそうなら、どのプラグインによって? – AKSW

答えて

4

RDFのデータは、単純にトリプルれます。グラフにトリプルが追加された場合、という概念はありません。そのような情報が必要な場合は、データモデルで明示的にする必要があります。 SPARQLにはが含まれています。これにより、クエリの実行時にタイムスタンプを取得できます。

あなたのようなクエリを実行でき
@prefix :  <urn:ex:> . 

[ :hasObject  :d ; 
    :hasPredicate :q ; 
    :hasSubject :c ; 
    :hasTime  "2017-04-28T13:32:11.482+00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> 
] . 

[ :hasObject  :b ; 
    :hasPredicate :p ; 
    :hasSubject :a ; 
    :hasTime  "2017-04-28T13:32:11.482+00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> 
] . 

prefix : <urn:ex:> 

select ?s ?p ?o ?time { 
    [] :hasSubject ?s ; 
    :hasPredicate ?p ; 
    :hasObject ?o ; 
    :hasTime ?time 
} 
order by ?time 
一度
s,p,o,time 
urn:ex:c,urn:ex:q,urn:ex:d,2017-04-28T13:32:11.482+00:00 
urn:ex:a,urn:ex:p,urn:ex:b,2017-04-28T13:32:11.482+00:00 

今、あなたのグラフのようなデータが含まれている

prefix : <urn:ex:> 

insert { 
    [] :hasSubject ?s ; 
    :hasPredicate ?p ; 
    :hasObject ?o ; 
    :hasTime ?now . 
} 
where { 
    #-- Fake a couple of triples 
    values (?s ?p ?o) { 
     (:a :p :b) 
     (:c :q :d) 
    } 
    #-- Get the current time 
    bind (now() as ?now) 
} 

:それはあなたがこのような何かを行うことができることを意味しあなたは異なる時にいくつかのものを挿入しました、あなたは異なる時間値を持っていました、ソートは意味があります。私は、私がしたようにトリプルを正当化するだけではないことを示唆しています(そして、もしあなたが真っ直ぐな階級化に行くならば、おそらく標準のボキャブラリを使うべきです)。しかし、実際にはタイムスタンプその一部として

関連する問題