获取根节点的rdf:类型。

问题描述 投票:0回答:1

我有以下数据。

@prefix ex: <http://example.com/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sch: <http://schema.org/> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<ex:a4fe06ac906b092870> a ex:XXXX ;
    ex:pA [ a ex:YYYY ;
            ex:bar "value" ;
            ex:foo "" ;
            ex:name "another_name" ] ;
    ex:pB "another_value" ;
    ex:pC [ a ex:ZZZZ ;
            ex:identifier "the id" ;
            ex:index "asdf" ] .

它可以被可视化为 这个.

根节点被定义为没有传入边的节点,本示例中的根节点是ex:a4fe06ac906b092870,rdf:type是ex:XXXX。

在这个示例中,根节点是ex:a4fe06ac906b092870,rdf:type是ex:XXXX。

什么样的SPARQL查询会返回给我ex:XXXX?

sparql rdf turtle-rdf
1个回答
1
投票

根据UninformedUser的评论,将返回根节点的rdf:type的SPARQL查询是。

        SELECT ?o 
        WHERE { 
            ?s a ?o . 
            FILTER NOT EXISTS {
                ?s_in ?p_in ?s .
            } 
        }

因为根节点的rdf: type是需要的 只有那些有rdf: type边缘的主题才需要被考虑 ( ?s a ?o . ).

?s_in ?p_in ?s . 中的过滤器将匹配所有具有 rdf:type 边缘的节点,这些节点都有一个传入边缘。然后,这些节点会被从结果中过滤掉。

剩下的就是根节点的rdf:type。

© www.soinside.com 2019 - 2024. All rights reserved.