2017-03-15 6 views
1

SPARQL INSERT 문을 사용하여 새로운 인스턴스를 내 온톨로지에 삽입하고 싶습니다. 샘플 예 :SPARQL을 사용하여 OWL 온톨로지에 새 인스턴스를 삽입하는 방법

<owl:NamedIndividual rdf:about="http://www.test123.com/test123-ontology.owl#cap_123"> 
<rdf:type rdf:resource="http://www.test123.com/test123-ontology.owl#HealthBeauty"/> 
<description>Test test test</description> 
<hasPrice rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">49</hasPrice> 
<id rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">123</id> 
</owl:NamedIndividual> 

다음과 같은 특성이 있습니다 삽입 할 새로운 인스턴스를 :

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX owl: <http://www.test123.com/test123-ontology.owl#> 
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
PREFIX oo: <http://www.w3.org/2002/07/owl#> 
INSERT " 
{ 
//... 
} 
:

id: 456 
hasPrice: 15 
description: "Test2 test2 test2" 

내가 쿼리의 INSERT 부분을 완료하는 방법을 모른다

+0

이것은 W3C 사양에서 매우 명확합니다. https://www.w3.org/TR/sparql11-update/#insertData – AKSW

+0

@AKSW :이 부분을 지정하는 방법을 모르겠습니다. 'rdf : type rdf : resource = "http://www.test123.com/test123-ontology.owl#HealthBeauty"/>' – Dinosaurius

+0

이해가 안됩니다. 모든 것이 트리플이기 때문에 단순히 ' rdf : type . – AKSW

답변

2

솔루션은 다음과 같습니다.

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX owl: <http://www.test123.com/test123-ontology.owl#> 
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
PREFIX oo: <http://www.w3.org/2002/07/owl#> 

INSERT 
{ 
    owl:cap_456 rdf:type owl:HealthBeauty . 
    owl:cap_456 owl:id 456 . 
    owl:cap_456 owl:hasPrice 15 . 
    owl:cap_456 owl:description 'Test2 test2 test2' . } 
WHERE 
{ 
    FILTER NOT EXISTS 
    { 
    owl:cap_456 rdf:type owl:HealthBeauty . 
    } 
} 
+0

왜 나는'WHERE' 절이 필요한지 이해하지 못하고 단순히 앞의 주석에서 언급 한대로'INSERT DATA'를 사용하지 않았습니다. 트리플 패턴, 즉 변수가 없습니다. 단순히 트리플입니다. 'WHERE' 절은 데이터의 패턴을 일치시키기위한 것이다. – AKSW