2

我正在尝试使用 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

4 回答 4

6

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

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

目前尚不清楚您要做什么。你想要[一些三元组的] URI 对象吗?你如何识别这个三元组?

于 2009-04-03T05:16:18.320 回答
4

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

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

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

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

于 2009-05-20T23:55:27.143 回答
0

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

于 2009-03-26T20:22:10.413 回答
-1

以下查询为我rdf:ID提供了个人类型pref:class

select * where {
?id rdf:type pref:class
}
于 2009-06-13T23:58:00.473 回答