如何在一个sparql查询中删除空白节点及其关联的三元组?

如何在一个sparql查询中删除空白节点及其关联的三元组?,sparql,blank-nodes,Sparql,Blank Nodes,样本数据: @prefix skos: <http://www.w3.org/2004/02/skos/core#> . @prefix xs: <http://www.w3.org/2001/XMLSchema#> . @prefix p0: <http://www.mlacustom.com#> . @prefix p2: <http://www.mla.com/term/> . _:bnode7021016689601753065 p0:la

样本数据:

@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .
@prefix p0: <http://www.mlacustom.com#> .
@prefix p2: <http://www.mla.com/term/> .
_:bnode7021016689601753065 p0:lastModifiedDateTime "2018-09-14T12:55:38"^^<xsd:dateTime> ;
                           p0:lastModifiedUser "admin"^^xs:string .
<http://www.mla.com/name/4204078359> p0:hasClassingFacet "http://www.mla.com/facet/RA"^^xs:string ;
                                     p0:type "Normal"^^xs:string ;
                                     p0:classification _:bnode3452184423513029143 ,
                                                       _:bnode6827572371999795686 ;
                                     p0:recordType "Name"^^xs:string ;
                                     p0:recordNumber "4204078359"^^xs:string ;
                                     p0:stdDescriptor "classification111111"^^xs:string ;
                                     p0:establishedBy "admin"^^xs:string ;
                                     skos:prefLabel "classification111111"^^xs:string ;
                                     p0:createdBy "admin"^^xs:string ;
                                     a skos:Concept ;
                                     p0:createdDate "2018-09-14T12:55:38"^^<xsd:dateTime> ;
                                     p0:establishedDate "2018-09-14T12:55:38"^^<xsd:dateTime> ;
                                     p0:hasRAsubFacet "http://www.mla.com/subfacet/classing-subject-authors"^^xs:string ;
                                     p0:lastModifiedDate "2018-09-14T12:55:38"^^<xsd:dateTime> ;
                                     p0:lastModifiedDetails _:bnode7021016689601753065 ;
                                     p0:isProblematic "N,N"^^xs:string ;
                                     p0:lastModifiedBy "admin"^^xs:string ;
                                     p0:status "established"^^xs:string .
_:bnode3452184423513029143 p0:literature p2:1513 ;
                           p0:timePeriod p2:1005 ;
                           p0:language p2:3199 .
_:bnode6827572371999795686 p0:literature p2:11307 ;
                           p0:timePeriod p2:1009 ;
                           p0:language p2:31 .
我是说这些数据

_:bnode3452184423513029143 p0:literature p2:1513 ;
                           p0:timePeriod p2:1005 ;
                           p0:language p2:3199 .
_:bnode6827572371999795686 p0:literature p2:11307 ;
                           p0:timePeriod p2:1009 ;
                           p0:language p2:31 .
但是我还想删除带有主IRI的分类三元组。 这三个三元组:

<http://www.mla.com/name/4204078359> 
                     p0:classification _:bnode3452184423513029143 ,
                                       _:bnode6827572371999795686 ;

p0:分类u2;:编号3452184423513029143,
_:bnode6827572371999795686;

我必须删除单个sparql中的三元组。

对于上述样本数据,以下更新将删除
p0:classification
三元组以及与之相关的两个B节点的所有内容:

PREFIX p0: <http://www.mlacustom.com#>

delete {
    <http://www.mla.com/name/4204078359> p0:classification ?bnode .
    ?bnode ?p ?o .
} where {
    <http://www.mla.com/name/4204078359> p0:classification ?bnode .
    ?bnode ?p ?o .
}
前缀p0:
删除{
p0:分类?B节点。
?B节点?p?o。
}在哪里{
p0:分类?B节点。
?B节点?p?o。
}

基本上是这样的:寻找这样的ONYL,这将删除所有的空白节点,在我的情况下,我必须只删除<代码>分类>代码>,我尝试了你的查询,但是它不像预期的那样工作,我没有得到的是,为什么<代码>可选< /代码>,我相信这也会删除所有其他的三元组,如果我错了,请原谅。来自的查询解决了不同的问题。只要将同样的技巧应用到你的案例中。例如,使用“p0:classification”代替“p”,使用ommit选项和过滤器等。
PREFIX p0: <http://www.mlacustom.com#>

delete {
    <http://www.mla.com/name/4204078359> p0:classification ?bnode .
    ?bnode ?p ?o .
} where {
    <http://www.mla.com/name/4204078359> p0:classification ?bnode .
    ?bnode ?p ?o .
}