我想获取具有特定uri(http://dbpedia.org/page/Weight_gain)的页面的id(或可能是其他信息).我试过这些:(没有一个有效)
select ?id WHERE {<http://dbpedia.org/page/Weight_gain>
<http://dbpedia.org/ontology/wikiPageID> ?id}
select ?uri ?id WHERE {?uri <http://dbpedia.org/ontology/wikiPageID> ?id.
FILTER (?uri = <http://dbpedia.org/page/Weight_gain>) }
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我正在使用Ontotext GraphDB的一个实例,并且经常想要清除具有大量三元组的命名图.
目前,我的技术涉及向图形服务器发出SPARQL命令,该命令搜索并匹配命名图形中每个三元组的三重模式:
DELETE { GRAPH example:exampleGraph { ?s ?p ?o }} WHERE {?s ?p ?o .}
Run Code Online (Sandbox Code Playgroud)
当存在大量三元组时,这种方法通常需要相当长的时间来清除命名图.
我想知道是否有更有效的方法来做到这一点.即使是特定于三层商店的解决方案也是我可以接受的.
我还应该注意到我正在使用RDF4J库与图表进行通信.我知道某些解决方案可能适用于Ontotext Web界面,但我只对我可以以编程方式实现的解决方案感兴趣.
我正在Semantic Web下做一个项目.这是我正在使用的RDF文件的一个例子
Run Code Online (Sandbox Code Playgroud)<?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://www.xmlns.com/foaf/0.1"> <rdf:Description> <foaf:name>aricent</foaf:name> <foaf:url>www.placementhub.net</foaf:url> </rdf:Description> </rdf:RDF>
如果用户输入"准备aricent"来搜索链接,我编码的方式是将每个值"prepare","for","aricent"并动态生成SPARQL查询以查找相关记录.这是SPARQL查询
String queryString ="PREFIX rdf:http: //www.w3.org/1999/02/22-rdf-syntax-ns# "+"PREFIX foaf:http://www.xmlns.com/foaf/0.1 "+ "SELECT?name?url WHERE {?a foaf:name?name FILTER regex(?name,'"+ values [i] +"')?a foaf:url?url}";
其中values [i]现在在第一个循环中"准备",第二个循环中的"for"和第三个循环中的"aricent".在这种情况下,如果它被执行,我会得到
--------------------------------------
| name | url |
======================================
| | |
--------------------------------------
--------------------------------------
| name | url |
======================================
| | |
--------------------------------------
--------------------------------------
| name | url |
======================================
| "aricent" | "www.placementhub.net" |
--------------------------------------
Run Code Online (Sandbox Code Playgroud)
因此,对于"prepare"和"for",结果集为空(没有值),结果仅为"aricent"获得,因为它在RDF中可用.您可以告诉我如何消除(只有具有值的表应该向用户显示获得的空结果集?我使用了JENA API.Thank You
我使用Sesame triplestore来存储我的数据.当我尝试使用带有Sesame的查询接口和外部资源(如dbpedia)时,我没有得到任何结果.在添加所有必需的前缀后,此查询返回带有snorql但不返回Sesame的结果:
select ?routes where {
dbpedia:Polio_vaccine dbpprop:routesOfAdministration ?routes
}
Run Code Online (Sandbox Code Playgroud)
我需要改变什么?
我对 GitHub 上 Matthew Horridge 的 owlexplanation 项目有疑问。
在README文件中有以下代码:
import org.semanticweb.owl.explanation.api.*;
import org.semanticweb.owlapi.model.*;
import org.semanticweb.owlapi.reasoner.OWLReasonerFactory;
OWLReasonerFactory rf = ; // Get hold of a reasoner factory
OWLOntology ont = ; // Reference to an OWLOntology
// Create the explanation generator factory which uses reasoners provided by the specified
// reasoner factory
ExplanationGeneratorFactory<OWLAxiom> genFac = ExplanationManager.createExplanationGeneratorFactory(rf);
// Now create the actual explanation generator for our ontology
ExplanationGenerator<OWLAxiom> gen = genFac.createExplanationGenerator(ont);
// Ask for explanations for some entailment
OWLAxiom entailment ; // …Run Code Online (Sandbox Code Playgroud) 我想编写一个SPARQL查询,它使用一组具有时间范围的实体来交叉引用具有单个时间点的实体.这是图形模式:
{
?entity :atTime ?probe.
?interval :startTime ?start ;
:endTime ?end .
FILTER (?start < ?probe)
FILTER (?probe < ?end)
}
Run Code Online (Sandbox Code Playgroud)
查询引擎运行此方法的一种方法是查找已:atTime定义的所有实体,查找所有间隔,并执行所有这些检查.但MarkLogic(以及大多数数据库)都有范围索引设施,因此可以更有效地完成.
我在ML文档中看到,您可以cts:contains在SPARQL中使用它来获取其字符串索引.有没有办法用范围查询做类似的事情?
有些数据库会像我在这里引用的那样识别代码中的设计模式,并且他们自己进行优化(这使代码保持标准!).也许MarkLogic这样做了吗?我找不到任何文件告诉我这件事.
我知道队列的创建并能够执行单个任务,但我如何并行执行多个任务。
并发队列---->
let concurrentQueue = DispatchQueue(label: "com.some.concurrentQueue", attributes: .concurrent)
concurrentQueue.async {
//executable code
}
Run Code Online (Sandbox Code Playgroud)
无优先级的BackgroundQueue 默认--->
DispatchQueue.global().async {
//executable code
}
Run Code Online (Sandbox Code Playgroud)
具有优先级的后台队列---->
DispatchQueue.global(qos: .userInitiated).async { //.userInteractive .background .default .unspecified
//executable code
}
Run Code Online (Sandbox Code Playgroud)
回到主队列---->
DispatchQueue.main.async {
//executable code
}
Run Code Online (Sandbox Code Playgroud)
所有都是异步的,但是我如何一次执行多个方法我应该如何快速编码。
我有一个用例,我需要在neo4j中的并行线程中运行我的存储过程.我编写了存储过程并将其包含在neo4j插件中.但是当我运行存储过程时,我得到以下错误:
2016-06-24 05:45:54.683+0000 INFO Remote interface available at http://localhost:7474/
java.lang.UnsupportedOperationException: Creating new transactions and/or spawning threads are not supported operations in store procedures.
at org.neo4j.kernel.impl.proc.ProcedureGDBFacadeSPI.assertSameThread(ProcedureGDBFacadeSPI.java:108)
at org.neo4j.kernel.impl.proc.ProcedureGDBFacadeSPI.isInOpenTransaction(ProcedureGDBFacadeSPI.java:124)
at org.neo4j.kernel.impl.factory.GraphDatabaseFacade.beginTransaction(GraphDatabaseFacade.java:335)
at org.neo4j.kernel.impl.factory.GraphDatabaseFacade.beginTx(GraphDatabaseFacade.java:330)
at example.SearchTask.call(SearchTask.java:33)
at example.SearchTask.call(SearchTask.java:17)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)
我已经明白,在neo4j中自定义存储过程无法在并行线程中运行.
但我在寻找有什么方法可以并行运行它.