我在RDF / XML中有一个本体实体实例,如下所示:

<owl:NamedIndividual rdf:about="http://example.org#x1">
    <rdf:type rdf:resource="http://example.org/Example"/>
    <ex:amount rdf:datatype="http://www.w3.org/2001/XMLSchema#float">uuid-v4</ex:amount>
    <rdfs:label xml:lang="en">An example instance</rdfs:label>
</owl:NamedIndividual>

我只需要给出它的 <ex:amount> 值,在这种情况下,它是一个字符串 . 我看到的SPARQL查询如下所示:

SELECT * WHERE {
    ?s ?p "uuid-v4" .
}

如您所见,指定值 "uuid-v4" 是一个字符串,但 <ex:amount> 属性的数据类型是 float .

问题:

  • 为什么结果为空?是因为数据类型不匹配吗?

  • 如何使此查询有效?我无法将 rdf:datatype 更改为 http://www.w3.org/2001/XMLSchema#string . 有什么选择?

看起来像指定数据类型有帮助 .

SELECT * WHERE {
    ?s ?p "uuid-v4"^^xsd:float .
}

但在选择实例之前,我对该属性一无所知 . 唯一可用的信息是 "uuid-v4"