如何解决SPARQL选择两列
| 我是SPARQL的新手,我正在尝试从实体中选择两个或多个数据属性。 我有一个Artist实体,它具有两个数据属性(id和name)。我正在尝试获得如下结果: id Name
0 Artist 1
1 Artist 2
但是我得到的是:
id Name
0 Artist 1
0 Artist 2
1 Artist 1
1 Artist 2
这是我的SPARQL查询:
PREFIX wits: <http://wits.org/song/>
SELECT ?name,?id
FROM <http://wits.org/song>
WHERE
{
<http://wits.org/song/Artist> wits:Name ?name .
<http://wits.org/song/Artist> wits:ID ?id
}
这是Artist类的RDF实现:
<!ENTITY www \"http://www.wits.org/\" >
<owl:Class rdf:about=\"&www;Artist\">
<rdfs:subClassOf rdf:resource=\"&owl;Thing\"/>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource=\"&www;song#ID\"/>
<owl:allValuesFrom rdf:resource=\"&xsd;unsignedInt\"/>
</owl:Restriction>
</rdfs:subClassOf>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource=\"&www;song#Name\"/>
<owl:qualifiedCardinality rdf:datatype=\"&xsd;nonNegativeInteger\">1</owl:qualifiedCardinality>
<owl:onDatarange rdf:resource=\"&xsd;string\"/>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
这是先前执行的INSERT命令:
PREFIX wits: <http://wits.org/song/>
INSERT DATA INTO <http://wits.org/song> {
wits:Artist wits:Name \"Artist 2\"
wits:ID 1 .
}
我究竟做错了什么?
任何帮助表示赞赏。
125125
解决方法
我想您正在插入以下数据。
INSERT DATA INTO <http://wits.org/song> {
wits:Artist wits:Name \"Artist 0\"; wits:ID 0 .
wits:Artist wits:Name \"Artist 1\"; wits:ID 1 .
}
这是错误的,因为wits:Artist
会同时具有名称和ID,因此您需要为每个Artist提供不同的URI,并将类提供为rdf:type
。
根据您的本体论正确的方法是...
INSERT DATA INTO <http://wits.org/song> {
wits:Artist0 a wits:Artist; wits:Name \"Artist 0\"; wits:ID 0 .
wits:Artist1 a wits:Artist; wits:Name \"Artist 1\"; wits:ID 1 .
}
a
等同于rdf:type
。在这里,我们说wits:Artist0
是类型wits:Artist
的类型,名称为name13ѭ,标识为0
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。