我已经下载了bigdata.war并使用sesame HTTP API进行了部署.现在我不知道如何使用nanosparqlserver将rdf三元组/出处加载到bigdata?我正在使用sesame HTTP API(使用apache tomcat).有人可以请帮助.
我打算使用mysql,native java和postgres with sesame
我知道以下针对Wikidata SPARQL Endpoint查询的 SPARQL 是毫无意义的。我的应用程序中会自动生成类似的查询。请忽略概念的合理性,让我们深入研究这个奇怪的(至少对我来说)发生的事情。
\n\nSELECT ?year1 ?year_labelTemp\n WHERE\n { \n ?year1 <http://www.w3.org/2000/01/rdf-schema#label> ?year_labelTemp .\n { SELECT distinct ?year1\n WHERE\n { ?film <http://www.wikidata.org/prop/direct/P577> ?date ;\n <http://www.wikidata.org/prop/direct/P31> <http://www.wikidata.org/entity/Q11424>\n BIND(year(?date) AS ?year1)\n }\n } \n }\n limit 10\n
Run Code Online (Sandbox Code Playgroud)\n\n根据 SPARQL 中的查询评估,首先评估子查询,然后将其结果投影到包含查询。因此,将首先评估该子查询。
\n\nSELECT distinct ?year1\n WHERE\n { ?film <http://www.wikidata.org/prop/direct/P577> ?date ;\n <http://www.wikidata.org/prop/direct/P31> <http://www.wikidata.org/entity/Q11424>\n BIND(year(?date) AS ?year1)\n }\n
Run Code Online (Sandbox Code Playgroud)\n\n子查询准确地给出了预期的结果(130 个不同的年份)。然后,该子查询(变量)的结果?year1
将被投影出来并与外部选择中的三元组模式连接。
?year1 <http://www.w3.org/2000/01/rdf-schema#label> ?year_labelTemp .\n
Run Code Online (Sandbox Code Playgroud)\n\n但是,由于外部选择不应该有任何数据(没有标签?year1
),因此连接不会给出任何结果。
令人惊讶的是(至少对我来说),执行首先声明的整个查询 () 给出了结果,而且结果很奇怪。
\n\n wd:Q43576 Mi\xc3\xab\n …
Run Code Online (Sandbox Code Playgroud) 此代码给出了成吉思汗的后裔达到一定深度(作为可以更改为表格的图表):
PREFIX bd: <http://www.bigdata.com/rdf#>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wikibase: <http://wikiba.se/ontology#>
#defaultView:Graph
PREFIX gas: <http://www.bigdata.com/rdf/gas#>
SELECT DISTINCT ?depth ?item ?itemLabel ?pic #?linkTo
WHERE {
SERVICE gas:service {
gas:program gas:gasClass "com.bigdata.rdf.graph.analytics.SSSP" ;
gas:in wd:Q720 ;
gas:traversalDirection "Forward" ;
gas:out ?item ;
gas:out1 ?depth ;
gas:maxIterations 4 ;
gas:linkType wdt:P40 .
}
# OPTIONAL { ?item wdt:P40 ?linkTo }
OPTIONAL { ?item wdt:P18 ?pic }
SERVICE wikibase:label {bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }
}
ORDER BY ?depth
Run Code Online (Sandbox Code Playgroud)
是否可以修改此代码以获得成吉思汗和特定后代(例如Baltu,Q7070636)之间的最短路径,包括中间的人以及他们之间的关系类型(linkType)?一般来说:如何获得两个特定节点之间的最短路径,并得到一个包含这些节点之间的节点以及所有这些节点之间的关系类型(限于一定深度)的表?
我有一个看起来有点像的数据集:
<item1> <isLocated> <someAddress>
<item2> <isLocated> <someAddress>
<item3> <isLocated> <someOtherAddress>
Run Code Online (Sandbox Code Playgroud)
我希望能够使用SPARQL来回答这个问题:
"我会在someAddress或someOtherAddress找到哪些项目?"
我可以像这样使用UNION:
SELECT ?item
{
{ ?item <isLocated> <someAddress> }
UNION { ?item <isLocated> <someOtherAddress }
}
Run Code Online (Sandbox Code Playgroud)
但是当我开始谈论100或1000的地址时,我认为这将变得非常混乱.
我认为VALUES内联数据可能比一堆UNION查询更合适.我已经尝试编写以下查询,但我的RDF存储/引擎(bigdata)似乎扼杀了它:
SELECT ?item
{
?item <isLocated> ?loc .
}
VALUES (?loc) { (<someAddress>) (<someOtherAddress>) }
Run Code Online (Sandbox Code Playgroud)
(基于http://www.w3.org/TR/sparql11-query/#inline-data)
我从bigdata得到的错误是:第5行第7列的词汇错误.遇到:""(32),之后:"VALUES"
我正确地形成了这个查询吗?使用UNION或VALUES更合适吗?
似乎无论我如何格式化这个查询(基于上面链接中的w3示例),我都会得到类似的Lexical错误.
有任何想法吗?
干杯.
我正在尝试从Wikidata的SPARQL端点获取多种语言的标签。此处给出以下示例:
SELECT ?country ?country_EN ?country_DE ?country_FR
WHERE {
?country wdt:P31 wd:Q185441. # member state of the European Union
SERVICE wikibase:label { bd:serviceParam wikibase:language "en".
?country rdfs:label ?country_EN.
}
SERVICE wikibase:label { bd:serviceParam wikibase:language "de".
?country rdfs:label ?country_DE.
}
SERVICE wikibase:label { bd:serviceParam wikibase:language "fr".
?country rdfs:label ?country_FR.
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这将返回以下错误:
未知错误:任何组中只能有一个“最后运行”联接
是否有一种解决方案可以使用多种语言获得标签?
我对RDF/SPARQL比较陌生,我正试图将一些N-Quad,4列/四列数据导入并查询到Blazegraph(参见schemaOrgEvent.sample.txt).
当我导入Quads数据(Web控制台)时,我只剩下基于三元组的3列元组数据,即Blazegraph只允许SPARQL查询选择{?s?p?o},但是四重选择{?s? p?o?c},不要.我究竟做错了什么???
Blazegraph可以原生存储4列Quad数据,还是我误解了RDF/Triple/Quad存储的性质?
com.bigdata.rdf.store.AbstractTripleStore.quads=true
此外,导入的四元数据以及三元组(标准化???)似乎将第1列转换为另一列,Blazegraph提供的(?),标识符,原始(Quad)数据格式为(4列)
_:node03f536f724c9d62eb9acac3ef91faa9 <http://schema.org/PostalAddress/addressRegion> "Kentucky"@en <http://concerts.eventful.com/Lauren-Alaina> .
Run Code Online (Sandbox Code Playgroud)
导入后(3列):
t1702 schema:PostalAddress/addressRegion Kentucky
Run Code Online (Sandbox Code Playgroud)
谁的查询是:
SELECT * WHERE
{
?s ?p ?o
#?s ?p ?o ?c - Won't work :-(
FILTER(STR(?o)="Kentucky")
}
Run Code Online (Sandbox Code Playgroud)
值't1702'是各种各样的'外键',可用于链接到其他三元组(即在导入日期内重复).