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
。     

要回复问题请先登录注册