标签: sparql

SPARQL否定:所有foaf:不是foaf的代理人:人

我正在尝试编写一个SPARQL查询,它应该给我所有foaf:Agents不是foaf:Persons.

我无法看到将此OPTIONAL/BOUND构造应用于此问题的方法,因为所有属性都喜欢rdfs:subClassOf并且rdf:type具有传递性和反身性.

我试过这个:

SELECT * WHERE { 
?x rdf:type foaf:Agent 
OPTIONAL { ?y rdf:type foaf:Person } 
FILTER ( !BOUND(?y) ) }
Run Code Online (Sandbox Code Playgroud)

但是rdf:type似乎是传递性的,至少与JENA/ARQ/SDB一样.

rdf foaf sparql

11
推荐指数
2
解决办法
5899
查看次数

11
推荐指数
1
解决办法
2967
查看次数

使用DBPedia的示例python脚本?

我正在编写一个python脚本,从几个国家和语言的数千篇新闻文章的集合中提取"实体名称".

我想利用令人惊叹的DBPedia结构化knwoledge,例如查找"埃及艺术家"的名字和"加拿大公司"的名称.

(如果这些信息是SQL形式的,我就没有问题了.)

我更愿意下载DBPedia内容并离线使用它.有什么需要这样做的想法以及如何从python本地查询?

python mysql sparql information-extraction dbpedia

11
推荐指数
2
解决办法
5587
查看次数

如何在DBpedia SPARQL请求中跳过错误日期?

我需要从DBpedia获取有关电影的数据.

我在http://dbpedia-live.openlinksw.com/sparql上使用SPARQL查询如下:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>

SELECT ?subject ?label ?released WHERE {
  ?subject rdf:type <http://dbpedia.org/ontology/Film>.
  ?subject rdfs:label ?label.
  ?subject <http://dbpedia.org/ontology/releaseDate> ?released.
  FILTER(xsd:date(?released) >= "2000-01-01"^^xsd:date).
} ORDER BY ?released
LIMIT 20
Run Code Online (Sandbox Code Playgroud)

我试图获得2000年1月1日之后发行的电影.但引擎答案如下:

Virtuoso 22007 Error DT006: Cannot convert 2009-06-31 to datetime : 
Too many days (31, the month has only 30)

SPARQL query:
define sql:big-data-const 0 
#output-format:text/html
define sql:signal-void-variables 1 define input:default-graph-uri <http://dbpedia.org> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>

SELECT ?subject …
Run Code Online (Sandbox Code Playgroud)

sparql dbpedia virtuoso

11
推荐指数
1
解决办法
1305
查看次数

SPARQL:获取某个类的子类的所有实体

我将在SPARQL中获取C的C类和子类(直接或间接)的所有实例.

我可以用这种方式得到C的所有直接子类:

SELECT ?entity
WHERE {
  ?subclass rdfs:subClassOf :C .
  ?entity rdf:type ?subclass .
}
Run Code Online (Sandbox Code Playgroud)

但我不能得到间接子类的实例,也不能得到任何C的实例.

据我所知(我已经预先计算了它们)所有子类(C的直接和间接),我可以构建一个动态查询,是否可以构建如下的查询?

SELECT ?entity
WHERE {
  ?entity rdf:type in <list>.
}
Run Code Online (Sandbox Code Playgroud)

谢谢大家.

编辑:

我刚刚解决了它,即使是以一种不优雅的方式.

SELECT ?entity
WHERE {
  { ?entity rdf:type :C }
  UNION { ?entity rdf:type :SubClass1 }
  UNION { ?entity rdf:type :SubClass2 }
  UNION { ?entity rdf:type :SubClass3 }
}
Run Code Online (Sandbox Code Playgroud)

entity subclass instance sparql

11
推荐指数
2
解决办法
2万
查看次数

如何在SPARQL构造查询中递归扩展空白节点?

可能很容易回答这个问题,但我甚至无法弄清楚如何制定Google查询来查找它.

我正在针对包含空白节点的数据集编写SPARQL构造查询.所以,如果我做一个像这样的查询

CONSTRUCT {?x ?y ?z .} WHERE {?x ?y ?z .}

然后我的一个结果可能是:

nm:John nm:owns _:Node

这是一个问题,如果所有的

_:Node nm:has nm:Hats

三元组也不会以某种方式进入查询结果(因为我使用的一些解析器就像rdflib for Python真的不喜欢悬空的bnodes).

有没有办法编写我的原始CONSTRUCT查询以递归方式添加附加到任何bnode结果的所有三元组,以便在我的新图形中没有留下任何bnodes?

rdf semantic-web sparql semantics blank-nodes

11
推荐指数
1
解决办法
3528
查看次数

按SPARQL中的日期范围过滤

我正在使用Jena的SPARQL引擎并尝试编写一个查询来过滤日期范围,因为我需要在固定日期之后找到属性的值.

我的日期属性采用以下格式:

 Fri May 23 10:20:13 IST 2014 
Run Code Online (Sandbox Code Playgroud)

如何编写SPARQL查询以获取日期大于此值的其他属性?

datetime rdf sparql jena

11
推荐指数
1
解决办法
1万
查看次数

计入SPARQL

好的,所以我有这个查询

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 

SELECT DISTINCT (COUNT(?instance) AS ?count) WHERE {
?instance a <http://dbpedia.org/ontology/Ambassador> . 
}
Run Code Online (Sandbox Code Playgroud)

结果是286.很酷.现在我想获得拥有http://dbpedia.org/property/name属性的大使数量.但

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 

SELECT DISTINCT (COUNT(?instance) AS ?count) WHERE {
?instance a <http://dbpedia.org/ontology/Ambassador> . 
?instance <http://dbpedia.org/property/name> ?name
}
Run Code Online (Sandbox Code Playgroud)

结果在533 :(.所以它的数量更多是因为有人有这个属性一次或多次.但是我怎么得到拥有这个属性的大使的数量,无论他们有多少次.你能做到这一点吗?在一个查询?

谢谢.

rdf sparql dbpedia semantics

10
推荐指数
1
解决办法
1万
查看次数

SPARQL使用带有限制的子查询

我正在开发一个Java应用程序,它使用ARQ通过TDB上的Fuseki端点执行SPARQL查询.

该应用程序需要一个查询,返回每个人和出生在同一个地方的其他人的出生地.

首先,我写了这个SPARQL查询,它返回person_ids和每个人的出生地.

prefix fb: <http://rdf.freebase.com/ns/>
prefix fn: <http://www.w3.org/2005/xpath-functions#>
select ?person_id ?place_of_birth 
where {
    ?person_id fb:type.object.type fb:people.person .
    ?person_id fb:people.person.place_of_birth ?place_of_birth_id .
    ?place_of_birth_id fb:type.object.name ?place_of_birth .
     FILTER (langMatches(lang(?place_of_birth),"en"))
}
LIMIT 10

----------------------------------
| person_id    | place_of_birth  |
==================================
| fb:m.01vtj38 | "El Centro"@en  |
| fb:m.01vsy7t | "Brixton"@en    |
| fb:m.09prqv  | "Pittsburgh"@en |
----------------------------------
Run Code Online (Sandbox Code Playgroud)

之后,我添加了一个子查询(https://jena.apache.org/documentation/query/sub-select.html),添加了出生在那里的其他人,但我得到的不止一个人相关,我只需要一个.

prefix fb: <http://rdf.freebase.com/ns/>
prefix fn: <http://www.w3.org/2005/xpath-functions#>
select ?person_id ?place_of_birth ?other_person_id
where {
    ?person_id fb:type.object.type fb:people.person .
    ?person_id fb:people.person.place_of_birth ?place_of_birth_id .
    ?place_of_birth_id fb:type.object.name …
Run Code Online (Sandbox Code Playgroud)

nested subquery sparql limit

10
推荐指数
1
解决办法
1万
查看次数

仅使用SPARQL对一个值进行DISTINCT

我想用SPARQL检索人口超过10万的意大利城市列表,我正在使用以下查询:

PREFIX dbo: <http://dbpedia.org/ontology/> 
SELECT ?city ?name ?pop WHERE { 
    ?city a dbo:Settlement .
    ?city foaf:name ?name .
    ?city dbo:populationTotal ?pop .
    ?city dbo:country ?country .
    ?city dbo:country dbpedia:Italy .
  FILTER (?pop > 100000) 
}
Run Code Online (Sandbox Code Playgroud)

在结果中,我得到两个不同的行(代表相同的实体,但名称不同):

http://dbpedia.org/resource/Bologna "博洛尼亚"@ 384038

http://dbpedia.org/resource/Bologna"Comune di Bologna"@ 384038

如何SELECT DISTINCT仅在列中使用?city但仍然具有外部列的输出?

rdf sparql dbpedia linked-data

10
推荐指数
1
解决办法
4831
查看次数