微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SPARQL选择两列

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?