SPARQL选择RDF:ID

时间:2009-03-26 19:52:15

标签: rdf sparql

我试图用sparql(在Protege中)选择一个对象的rdf:ID,我似乎无法得到rdf:ID。有没有人见过这个问题。我使用的SPARQL查询是:

Select * where (?element rdf:id ?id)

以下也不起作用:

Select * where (?element rdfs:label ?id)

提出了一个建议,但仍然不行:

Select * where (?element rdfs:about ?id)

但这样做:

Select * where (?element rdfs:comment ?id)

我得到的只是“不匹配”。所以我可以选择评论而不是标签......想法?

更新::经过一些研究,选择以下内容:

Select ?subject ?property ?object where (?subject ?property ?object)

没有提出任何RDFS属性。我错过了什么专业吗? (我可以用rdfs:comment来选择它,但这并没有出现......

4 个答案:

答案 0 :(得分:6)

首先rdf:id在数据模型中不存在 - rdf图三倍。 “rdf:ID”是一种语法中使用的语法术语,RDF / XML但不会出现在三元组中。同样,rdf:about是一个语法术语。

至于为什么protege的sparql在这里不起作用 - 我没有使用过Protege - 我想你试图找到的三元组是由推理引擎推断出来的,因此不一定在基础rdf图中。

目前还不完全清楚你要做什么。你想要URI对象[有些三倍]?你如何确定这个三联?

答案 1 :(得分:4)

如果您正在寻找所有RDF主题的URI,您可以运行:

SELECT ?subject WHERE { ?subject ?predicate ?object }

请注意,您需要花括号而不是括号。还要注意RDF中的情况很重要,所以要非常小心你的URI(以及前缀/本地名称)的拼写和大小写。

关于dajobe关于蕴涵(推断的三元组)的观点,rdfs:label是一个OWL注释属性,除非你包含自己的规则和/或OWL结构,否则它们将被推理器忽略。换句话说,如果你刚刚开始使用RDF,如果推理者以rdfs:label作为谓词推断三倍,我会感到惊讶。

答案 2 :(得分:0)

我猜您的rdf:ID(rdf文档中的本地引用)将使用xml:base解析并转换为rdf:about

答案 3 :(得分:-1)

以下查询为rdf:ID

类型的个人提供了pref:class
select * where {
?id rdf:type pref:class
}