2017-10-02 7 views
1

このリソース内のすべてのトリプルを削除するSPARQLクエリを作成しています。SPARQLリソース内の空白ノードをすべて削除するクエリ

prefix oslc: <http://open-services.net/ns/core#> 
prefix example: <http://rdf.company.com/ns/something/net#> 
prefix xsd: <http://www.w3.org/2001/XMLSchema#> 
prefix dcterms: <http://purl.org/dc/terms/> 
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 

example:Resource2 
     a    oslc:ResourceShape ; 
     oslc:describes example:Resource2 ; 
     oslc:property [ a      oslc:Property ; 
          oslc:isMemberProperty true ; 
          oslc:name    "pgn" ; 
          oslc:occurs   oslc:Zero-or-one ; 
          oslc:valueType   xsd:integer ] ; 
     dcterms:title "Resource2"^^rdf:XMLLiteral . 

私が試してみました:

DELETE 
    { ?s ?p ?o } 
    WHERE 
    { 
     ?s ?p ?o . 
     FILTER (?s IN (<http://rdf.company.com/ns/something/net#Resource2>)) 
    } 

しかし、IDはその中に空白ノードを削除しません:

[ a      oslc:Property ; 
    oslc:isMemberProperty true ; 
    oslc:name    "pgn" ; 
    oslc:occurs   oslc:Zero-or-one ; 
    oslc:valueType   xsd:integer ] 

フィルタは、特定の対象を指定しているのでそれはかなり明白です空白ノードにはその件名がありません。

どのように空ノードも削除できますか?

答えて

0

ネストされた空白ノードがないことを願っています。試してみてください:

PREFIX example: <http://rdf.company.com/ns/something/net#> 

DELETE { 
    ?s ?p ?o . 
    ?o ?p1 ?o1 . 
} 
WHERE { 
    VALUES (?s) { (example:Resource2) } 
    ?s ?p ?o . 
    OPTIONAL { 
     ?o ?p1 ?o1 . 
     FILTER (isBlank(?o)) 
    } 
} 

関連する質問:Delete blank node from ontology through SPARQL UPDATE

関連する問題