我试图用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来选择它,但这并没有出现......
答案 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
}