即使使用DISTINCT子句,以下SPARQL查询也会在Virtuoso中提供重复项。您可以在DBpedia公共端点中测试查询。查询有什么问题?
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX dbpedia:<http://dbpedia.org/resource/>
PREFIX dbpedia-owl:<http://dbpedia.org/ontology/>
PREFIX dbpprop: <http://dbpedia.org/property/>
PREFIX vrank:<http://purl.org/voc/vrank#>
SELECT DISTINCT ?person1 ?person1_id ?person2 ?person2_id ?person2_rank
FROM <http://dbpedia.org>
FROM <http://people.aifb.kit.edu/ath/#DBpedia_PageRank>
WHERE {
?person1 rdf:type dbpedia-owl:Person.
?person2 rdf:type dbpedia-owl:Person.
?person1 ?link ?person2.
?person1 dbpedia-owl:wikiPageID ?person1_id.
?person2 dbpedia-owl:wikiPageID ?person2_id.
?person2 vrank:hasRank/vrank:rankValue ?person2_rank.
FILTER (?person1_id != ?person2_id).
FILTER (?person1_id = 308)
} ORDER BY DESC(?person2_rank) ASC(?person2_id)
Run Code Online (Sandbox Code Playgroud)
结果包括看似重复的行,例如:
http://dbpedia.org/resource/Aristotle 308 http://dbpedia.org/resource/Democritus 8211 27.281
http://dbpedia.org/resource/Aristotle 308 http://dbpedia.org/resource/Democritus 8211 27.281
http://dbpedia.org/resource/Aristotle 308 http://dbpedia.org/resource/Heraclitus …Run Code Online (Sandbox Code Playgroud) 我尝试INSERT使用 Virtuoso 中基于 Web 的 SPARQL 端点 ( http://localhost:8890/sparql/ )为 RDF 三元组执行语句:
INSERT DATA
{
GRAPH <http://my.graph>
{
<http://test.com/someid> <http://namespace.ref#someVar> 123
}
}
Run Code Online (Sandbox Code Playgroud)
但我得到了
Virtuoso 42000 错误 SR186:SECURITY: 无权限使用用户 ID 107、组 ID 107 执行过程 DB.DBA.SPARQL_INSERT_DICT_CONTENT
我能够通过我的数据库编辑器运行相同的语句,该编辑器在 port 上使用 JDBC 驱动程序1111,使用DBA登录名。
在我将以下内容作为DBA直通端口运行后,Web 界面/服务插入成功1111:
grant execute on DB.DBA.SPARQL_INSERT_DICT_CONTENT to "SPARQL";
grant execute on DB.DBA.SPARQL_INSERT_DICT_CONTENT to SPARQL_UPDATE;
Run Code Online (Sandbox Code Playgroud)
不过,我想撤消用户的特权SPARQL,我的理解是与网络接口相关联,并发送HTTP POST/ PUT/DELETE使用摘要身份验证提供的用户凭据请求。这是可能的吗?我去了手册的这个页面,但它是空的。
我想找到这个查询返回的每个主题是另一个三元组的对象的次数。
我可以使用以下示例来选择我想要的所有内容,而无需计算我想要的数量。
SELECT DISTINCT
?subject
?displayId
?version
?name
?description
?type
WHERE {
{ ?subject a sbol2:ComponentDefinition } UNION
{ ?subject a sbol2:ModuleDefinition } UNION
{ ?subject a sbol2:Collection } UNION
{ ?subject a sbol2:Sequence } UNION
{ ?subject a sbol2:Model } .
?subject a ?type
OPTIONAL { ?subject sbol2:displayId ?displayId . }
OPTIONAL { ?subject sbol2:version ?version . }
OPTIONAL { ?subject dcterms:title ?name . }
OPTIONAL { ?subject dcterms:description ?description . }
}
LIMIT 50
Run Code Online (Sandbox Code Playgroud)
我可以添加以下条件以将我的查询限制为仅与示例对象相关的事物,在本例中为具有 URI 的对象<http://localhost:7777/public/test/U49845/1> …
我已经安装了本地的virtuoso服务器并导入了dbpedia数据.我发现了一系列在isql中不起作用的SPARQL命令.例如,我在我的isql shell中运行了这个查询.
SPARQL SELECT ?s GROUP_CONCAT (?obj, ' ') as ?artist_list WHERE { ?s a dbpedia-owl:Single ;(dbpedia-owl:artist|dbpedia-owl:producer) ?obj } limit 10
Run Code Online (Sandbox Code Playgroud)
它首先抱怨| 在(dbpedia-owl:artist | dbpedia-owl:producer)中,然后是GROUP_CONCAT.我对Virtuoso文档进行了一些研究,并做了以下工作
EDIT1 我试图检查不同的情况,
1- group_concat
SPARQL select ?s (group_concat(?obj; separator='|') as ?artist_list) FROM <http://ja.dbpedia.org> where { ?s a dbpedia-owl:Single ; (dbpedia-owl:artist) ?obj } group by ?s limit 10;
SQL> syntax error at 'group_concat' before '('
Run Code Online (Sandbox Code Playgroud)
2-使用值
SPARQL select ?s FROM <http://ja.dbpedia.org> where { values ?sType {dbpedia-owl:Song dbpedia-owl:Single }. ?s a ?sType} limit 10;
*** Error 37000: …Run Code Online (Sandbox Code Playgroud) 我试图使用sparql查询dbpedia并遇到主题名称中括号的问题.此查询运行但不返回任何内容.如果我在没有括号的类似人物上尝试它,它会起作用.
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
SELECT * WHERE
{
<http://dbpedia.org/resource/Yves_Saint_Laurent_(designer)> dbpedia-owl:abstract ?abstract ;
dbpedia-owl:thumbnail ?thumbnail .filter(langMatches(lang(?abstract),"en"))
}
Run Code Online (Sandbox Code Playgroud)
我试过各种角色来逃避括号,但似乎没有任何作用.还有其他方法可以获取数据吗?
我是一个初学者Virtuoso,并sparql和我的问题是,我怎么能列出所有可用的predicates我triplestore?
例如,如果我的查询是:
sparql
select * {
<http://my.domain.com/catalog/element/item55> ?p ?o.
}
Run Code Online (Sandbox Code Playgroud)
我得到
p | ○ -------------------------------------------------- -------------- http://www.w3.org/2000/01/rdf-schema#label | 第 55 项 http://my.domain.com/catalog#propertyX | 美国广播公司
如何检索三元组中可用的所有谓词的列表?
我有个问题.
我正在http://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/VirtJenaProvider上关注sample8 .
特别是,我有这个代码:
package ExampleVirtuoso;
import com.hp.hpl.jena.query.*;
import com.hp.hpl.jena.rdf.model.RDFNode;
import virtuoso.jena.driver.*;
public class ExampleVirtuoso {
public static void main(String[] args) {
/* STEP 1 */
VirtGraph set = new VirtGraph("jdbc:virtuoso://localhost:1111", "dba", "dba");
/* STEP 2 */
System.out.println("\nexecute: CLEAR GRAPH <http://test1>");
String str = "CLEAR GRAPH <http://test1>";
VirtuosoUpdateRequest vur = VirtuosoUpdateFactory.create(str, set);
vur.exec();
System.out.println("\nexecute: INSERT INTO GRAPH <http://test1> { <aa> <bb> 'cc' . <aa1> <bb1> 123. }");
str = "INSERT INTO GRAPH <http://test1> { <aa> <bb> 'cc' . …Run Code Online (Sandbox Code Playgroud)