2017-04-27 8 views
1

온톨로지 모델이 있습니다. Sparql 업데이트를 통해 클래스 인스턴스 중 하나에 정수 데이터를 삽입합니다. 모델은 임의의 순서없이 임의로 데이터를 저장합니다. 이제 Sparql 쿼리를 통해이 데이터를 추출하고자 할 때 삽입 순서대로 필요합니다. 내가 어떻게 이걸 얻을 수 있니? 어떤 생각?온톨로지 모델의 시간을 기준으로 삽입 된 데이터 정렬

추신 : 내 온톨로지 모델은 Protege 소프트웨어로 제작되었습니다. 데이터 삽입을위한 내 쿼리가 하나가 아닙니다.

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) 
} 

그리고 나는 다음과 같은 쿼리를 사용하고있는 데이터를 얻기 위해

: RDF의

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

데이터는 단순히 세배입니다. 그래프에 트리플을 더한을 입력하면 의 개념이 없습니다. 그런 종류의 정보가 필요하면 데이터 모델에서 명시 적으로 지정해야합니다. SPARQL에는 now 함수가 포함되어있어 쿼리가 실행될 때 타임 스탬프를 얻을 수 있습니다. 일단

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:> . 

[ :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:> 

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) 
} 

지금 그래프 같은 데이터를 포함 : 그것은 당신이 뭔가를 할 수 있다는 것을 의미 당신은 다른 시간에 몇 가지를 삽입했습니다, 당신은 다른 시간 값을 가질 것입니다, 그래서 정렬은 의미가 있습니다. 나는 당신이 단지 내가했던 것과 같이 트리플을 구체화하지 말 것을 제안한다. (그리고 만약 당신이 직선화를하기 위해서는 표준 어휘를 사용해야 할 것이다.) 오히려 타임 스탬프가있는 의미있는 구조를 가져야한다. 그것의 일부로.