我试图使用SPARQL Construct查询从现有的查询创建一个新的命名图.我查询的数据库包含http://graph.com/old
现有的命名图.我使用Jena TDB作为数据库,通过Jena Fuseki端点访问.以下查询给出了一个错误:
CONSTRUCT
{
GRAPH <http://graph.com/new> {
?s ?p ?o
}
}
WHERE
{
GRAPH <http://graph.com/old> {
?s ?p ?o
}
}
Run Code Online (Sandbox Code Playgroud)
如果我从CONSTRUCT块中删除图形语句,查询工作正常,但我想将三元组放入我指定的命名图形而不是默认图形.
据我所知,CONSTRUCT上的SPARQL 1.1部分没有说明构建命名图的任何内容.有没有办法做到这一点?
我想在我的Fuseki服务器中获取所有现有图形的名称,它应该返回一个带有所有图形名称列表的消息.
我在两个单独的查询中计算了有向图中每个节点的入度和出度:
SELECT ?s (COUNT(*) AS ?outdegree)
{ ?s ?p ?o }
GROUP BY ?s
ORDER BY DESC(?outdegree)
SELECT ?o (COUNT(*) AS ?indegree)
{ ?s ?p ?o }
GROUP BY ?o
ORDER BY DESC(?indegree)
Run Code Online (Sandbox Code Playgroud)
我需要计算图的最大度数。由于有向图的最大度是图的最大(入度+出度)值,我想知道如何组合上述两个查询的结果来计算它。
另外,如果有更有效的方法来做到这一点,也请提出建议。
我主要在处理查询时使用SPARQL SELECT进行调试,但最后我想以CONSTRUCT方式使用最终结果; 因为我想使用图形而不是键/值查询结果.
我还没有得到(并且似乎无法找到搜索引擎/文档)是我可以使用这样的功能.作为一个例子,我使用属性路径来连接我进入"超级字符串"的标题,我后来用它来构建Lucene索引以提高纯文本搜索质量:
PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT (group_concat(?title ; separator = " ") AS ?fancytitle) WHERE {
GRAPH ?graph {
<http://data.staatsarchiv-bs.ch/id/archivalresource/CH-000027-1/pa-633c-a-312-fasc-163> dc:relation+ ?relation .
?relation dc:title ?title .
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想和?fancytitle
新三人一样
<http://data.staatsarchiv-bs.ch/id/archivalresource/CH-000027-1/pa-633c-a-312-fasc-163> <fancytitle> ?fancytitle .
Run Code Online (Sandbox Code Playgroud)
所以我可以将它直接存储在一个新的图表中.这可能吗?我玩了一些查询,但无法让它被SPARQL处理器接受.仅供我使用Fuseki.
您可以在我的SPARQL端点上试用它
我们正在运行Apache Jena Fuseki.
如果我们上传graphA和graphB
SELECT (COUNT(*) as ?count)
FROM <graphA>
FROM <graphB>
WHERE { ?s ?p ?o . }
Run Code Online (Sandbox Code Playgroud)
给100分
如果我们将A和B中的三元组上传到默认值
SELECT (COUNT(*) as ?count)
WHERE { ?s ?p ?o . }
Run Code Online (Sandbox Code Playgroud)
给200
在FROM示例中,graphA和graphB之间似乎没有进行推理?
我们如何解决这个问题?
用Fuseki,TDB和命名图找到推理?但不明白是否是同一个问题.
示例数据:图A:
Mdworking:Measure
a owl:Class ;
mdmm:elementName "Measure" .
Run Code Online (Sandbox Code Playgroud)
图B:
Mddemobank:Account_Balance
a owl:Class ;
rdfs:subClassOf Mdworking:Measure ;
mdmm:elementName "Account_Balance" .
Mddemobank:Sub_Account_Balance
a owl:Class ;
rdfs:subClassOf Mddemobank:Account_Balance ;
mdmm:elementName "Sub_Account_Balance" .
Run Code Online (Sandbox Code Playgroud)
查询:
SELECT ?subject ?predicate ?object
FROM <A>
FROM <B>
WHERE {
?subject …
Run Code Online (Sandbox Code Playgroud) 我在某个服务器上运行了一个 Fuseki 端点。我想使用 Jena 的com.hp.hpl.jena.sparql.function
库传递用户定义的函数。不幸的是,我收到错误:
URI <java:path.to.functions.halfString> has no registered function factory
Run Code Online (Sandbox Code Playgroud)
我确保将类(包含文件的 jar)添加到类路径中,并且我可以从该服务器上使用此类的其他应用程序访问此类。
我现在正在尝试的示例案例是一些函数,它采用图中所有三元组的主题并返回每个主题的前半部分。
作为参考,我添加了以下功能:
URI <java:path.to.functions.halfString> has no registered function factory
Run Code Online (Sandbox Code Playgroud)
这是我使用的 SPARQL 查询:
PREFIX f: <path.to.functions.>
SELECT ?half ?s ?o ?g
WHERE {
?s ?p ?o
BIND (f:halfString(str(?s)) as ?half)
}
Run Code Online (Sandbox Code Playgroud)
运行 Fuseki(使用 fuseki 提供的默认配置):
cd FUSEKI_HOME
./fuseki-server --mem /ds
Run Code Online (Sandbox Code Playgroud) 我正在尝试在启动时将LinkedMDB(6.1m三倍)导入我的本地版本的jena-fuseki:
/path/to/fuseki-server --file=/path/to/linkedmdb.nt /ds
Run Code Online (Sandbox Code Playgroud)
并运行一分钟,然后死于以下错误:
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
at com.hp.hpl.jena.graph.Node$3.construct(Node.java:318)
at com.hp.hpl.jena.graph.Node.create(Node.java:344)
at com.hp.hpl.jena.graph.NodeFactory.createURI(NodeFactory.java:48)
at org.apache.jena.riot.system.RiotLib.createIRIorBNode(RiotLib.java:80)
at org.apache.jena.riot.system.ParserProfileBase.createURI(ParserProfileBase.java:107)
at org.apache.jena.riot.system.ParserProfileBase.create(ParserProfileBase.java:156)
at org.apache.jena.riot.lang.LangNTriples.tokenAsNode(LangNTriples.java:97)
at org.apache.jena.riot.lang.LangNTriples.parseOne(LangNTriples.java:90)
at org.apache.jena.riot.lang.LangNTriples.runParser(LangNTriples.java:54)
at org.apache.jena.riot.lang.LangBase.parse(LangBase.java:42)
at org.apache.jena.riot.RDFParserRegistry$ReaderRIOTFactoryImpl$1.read(RDFParserRegistry.java:142)
at org.apache.jena.riot.RDFDataMgr.process(RDFDataMgr.java:818)
at org.apache.jena.riot.RDFDataMgr.parse(RDFDataMgr.java:679)
at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:211)
at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:104)
at org.apache.jena.fuseki.FusekiCmd.processModulesAndArgs(FusekiCmd.java:251)
at arq.cmdline.CmdArgModule.process(CmdArgModule.java:51)
at arq.cmdline.CmdMain.mainMethod(CmdMain.java:100)
at arq.cmdline.CmdMain.mainRun(CmdMain.java:63)
at arq.cmdline.CmdMain.mainRun(CmdMain.java:50)
at org.apache.jena.fuseki.FusekiCmd.main(FusekiCmd.java:141)
Run Code Online (Sandbox Code Playgroud)
有没有办法可以提高内存限制或以较少的密集方式导入数据?
为了比较,当我使用一百万个三重源文件时,它会在不到10秒的时间内导入.
使用:jena-fuseki-1.1.0, apache-jena-2.12.0
我想要达到的目标和我目前的状态:
我正在尝试使用从 wiki.dbpedia.org/Downloads2014 作为 .nt 文件下载的 dbpedia Persondata(英语和德语)、跨语言链接、图像和维基百科文章链接来设置本地 jena-fuseki 服务器。我想对它们运行下面的 SPAQRL-Query 并获得与 dbpedia.org/sparql 相同的结果。这个查询应该给我所有在德国斯图加特出生的人,包括他们的姓名、生日、英语和德语描述文本、维基百科链接、图片链接和简短描述。
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
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/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX : <http://dbpedia.org/resource/>
PREFIX dbpedia2: <http://dbpedia.org/property/>
PREFIX dbpedia: <http://dbpedia.org/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT ?name ?birth ?description_en ?description_de ?wiki ?description ?pic
WHERE {
?person dbo:birthPlace :Stuttgart .
?person dbo:birthDate ?birth .
?person foaf:name ?name .
OPTIONAL{
?person dc:description ?description .
FILTER (LANG(?description) = 'en') …
Run Code Online (Sandbox Code Playgroud) 我正在为Fuseki 2中的TDB数据集提供一个包含10-20个命名图的数据集。我想使用推理程序对我的数据进行推断。我想看到的行为是,在每个图中推断出的三元组应该出现在这些图中(尽管如果三元组也出现在默认图中也可以)。有没有简单的配置方法?我还没有找到与我要尝试匹配的任何配置示例。
我尝试过的配置与以下标准示例非常相似。
数据集TDB-> GraphTDB-> InfModel-> RDFDataset
我看到的数据的最终视图只是数据的很小一部分(似乎所有命名的图都沿着该管道放置在某个地方,只剩下很小的默认图)。使用tdb:unionDefaultGraph似乎对此没有影响。
prefix : <#> .
@prefix fuseki: <http://jena.apache.org/fuseki#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> .
@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
# Example of a data service with SPARQL query and update on an
# inference model. Data is taken from TDB.
## ---------------------------------------------------------------
## Service with only SPARQL query on an inference model.
## Inference model base data is in TDB.
<#service2> rdf:type fuseki:Service ;
fuseki:name "inf" ; …
Run Code Online (Sandbox Code Playgroud) fuseki ×10
jena ×8
sparql ×8
rdf ×4
named-graphs ×3
tdb ×2
dbpedia ×1
java ×1
reasoning ×1
semantic-web ×1