我正在尝试编写一个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一样.
但如果我想用意大利语检索信息?
它有另一种服务(类似这个)可以吗?
我正在编写一个python脚本,从几个国家和语言的数千篇新闻文章的集合中提取"实体名称".
我想利用令人惊叹的DBPedia结构化knwoledge,例如查找"埃及艺术家"的名字和"加拿大公司"的名称.
(如果这些信息是SQL形式的,我就没有问题了.)
我更愿意下载DBPedia内容并离线使用它.有什么需要这样做的想法以及如何从python本地查询?
我需要从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中获取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) 可能很容易回答这个问题,但我甚至无法弄清楚如何制定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?
我正在使用Jena的SPARQL引擎并尝试编写一个查询来过滤日期范围,因为我需要在固定日期之后找到属性的值.
我的日期属性采用以下格式:
Fri May 23 10:20:13 IST 2014
Run Code Online (Sandbox Code Playgroud)
如何编写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 :(.所以它的数量更多是因为有人有这个属性一次或多次.但是我怎么得到拥有这个属性的大使的数量,无论他们有多少次.你能做到这一点吗?在一个查询?
谢谢.
我正在开发一个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) 我想用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
但仍然具有外部列的输出?