我知道这个问题已经被问到了,但不知何故,在谷歌搜索大约一个小时后我找不到任何令人信服的解决方案。
我正在使用 apache-jena 从 url 加载 RDF 模型。我收到IncompatibleClassChangeError以下消息
Class org.apache.http.impl.client.SystemDefaultHttpClient does not implement the requested interface org.apache.http.client.HttpClient
Run Code Online (Sandbox Code Playgroud)
有人可以指点我如何解决这个错误。
问候阿山
我正在使用Jena TDB加载RDF数据集并对其进行SPARQL查询.我正在使用以下maven依赖项:
<dependency>
<groupId>org.apache.jena</groupId>
<artifactId>apache-jena-libs</artifactId>
<type>pom</type>
<version>3.0.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
这是我试图创建TDB数据集的java代码:
public void loadDirectory(String outputFile){
Dataset dataset = TDBFactory.createDataset(directoryPath);
Model tdb = dataset.getDefaultModel();
FileManager.get().readModel(tdb, outputFile);
tdb.close();
dataset.close();
LOG.info("RDF dataset loaded to memory");
}
Run Code Online (Sandbox Code Playgroud)
它在函数的第一行失败:TDBFactory.createDataset(directoryPath),带有以下错误消息:
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.sdw.model.JenaModel.loadDirectory(JenaModel.java:69)
at org.sdw.Main.main(Main.java:75)
Caused by: java.lang.NullPointerException
at org.apache.jena.tdb.sys.EnvTDB.processGlobalSystemProperties(EnvTDB.java:33)
at org.apache.jena.tdb.TDB.init(TDB.java:250)
at org.apache.jena.tdb.sys.InitTDB.start(InitTDB.java:29)
at org.apache.jena.system.JenaSystem.lambda$init$40(JenaSystem.java:114)
at java.util.ArrayList.forEach(ArrayList.java:1249)
at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:179)
at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:156)
at org.apache.jena.system.JenaSystem.init(JenaSystem.java:111)
at org.apache.jena.tdb.TDBFactory.<clinit>(TDBFactory.java:40)
Run Code Online (Sandbox Code Playgroud) 我想知道是否有办法启动 Apache Jean Fueseki 服务器来接受日志重复三元组。请参阅https://jena.apache.org/documentation/serving_data/
现在我正在使用以下命令启动 Fuseki
./fuseki-server --update --mem /ds
Run Code Online (Sandbox Code Playgroud)
然后我使用 Fuseki 附带的 post 工具加载 xml/rdf 文件,如下所示:
./s-post http://localhost:3030/ds/data default ~/Desktop/scta/commentaries/pp-projectdata.rdf
Run Code Online (Sandbox Code Playgroud)
该文件pp-projectdata.rdf有时包含相同的三元组,但我希望加载这些重复项,以便我可以计算该三元组的实例数。
我正在尝试将 Apache Jena 3.0 中的 a 转换ResultSet为 a Model。
以前我用过
ResultSetFormatter.toModel功能,但这似乎已被删除。
当前获取结果集模型(用于序列化为 JSON-LD 和 RDF/XML)的最佳方法是什么?
我已经使用 Apache Jena 构建了一个 TDB-Store,现在我想使用我的商店中的数据来实现一些漂亮的可视化。所以毕竟有必要使用 JavaScript 访问我的 TDB。
我想,有两种可能性可以实现这一点:
第 1 步:运行 Fuseki 服务器并在其端点(即http://localhost:3030/dataset/sparql)上运行 sparql 查询。我如何用js查询这个端点?
第2:直接从js访问TDB。这可能吗?
预先感谢,FFoDWindow
我正在尝试用Jena读取N-Quads文件,但我得到的只是一个空模型.我正在尝试阅读的文件取自N-Quads 文档中的示例:(
<http://example.org/#spiderman> <http://www.perceive.net/schemas/relationship/enemyOf> <http://example.org/#green-goblin> <http://example.org/graphs/spiderman> .
我将其保存为名为file.nq的文件).
我加载模型的方式是使用RDFDataMgr.但它也没有用Model.read.
RDFDataMgr.loadModel("file.nq", Lang.NQUADS)
产生一个空模型.
我错过了什么?Jena不支持N-Quads开箱即用吗?
我将使用Apache Jena并将RDF作为输入格式.但我有CSV格式的数据.我研究了很多,找不到转换它的方法.有谁知道如何有效地做到这一点.
我已经通过像xml123这样的工具,但下载链接无法正常工作.
我正在将 .ttl 文件加载到 Jena Fuseki 服务器中,而不是使用默认图形,而是使用命名图形<http://examples/test>。
/home/user/jena-fuseki-1.1.1/./s-put http://192.168.1.38:3030/ds/data http://example/test /home/user/testdata.ttl
Run Code Online (Sandbox Code Playgroud)
我能够使用以下命令加载图形并检索结果。
/home/user/jena-fuseki-1.1.1/./s-get http://192.168.1.38:3030/ds/data http://example/test
Run Code Online (Sandbox Code Playgroud)
但是当我开始使用该s-query命令进行查询时,它采用的是默认的未命名图。如何使s-query命令在命名图上工作。
/home/user/jena-fuseki-1.1.1/./s-query --service http://localhost:3030/ds/query 'SPARQL Query'
Run Code Online (Sandbox Code Playgroud)
这是对默认的未命名图进行查询。如何使它在命名图上工作<http://example/test>?
我想使用 Java 查询 DBPedia。下面是我的代码,它没有返回正确的结果。我想从 [ http://dbpedia.org/page/Ibuprofen页面和标签名称中获取摘要部分。但它只返回http://dbpedia.org/resource/Ibuprofen 11 次。如果可能,你能告诉我错误在哪里吗?这是我的代码:
import org.apache.jena.query.ParameterizedSparqlString;
import org.apache.jena.query.QueryExecution;
import org.apache.jena.query.QueryExecutionFactory;
import org.apache.jena.query.ResultSet;
import org.apache.jena.query.ResultSetFormatter;
import org.apache.jena.rdf.model.Literal;
import org.apache.jena.rdf.model.ResourceFactory;
public class JavaDBPediaExample {
public static void main(String[] args) {
ParameterizedSparqlString qs = new ParameterizedSparqlString(""
+ "prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n"
+ "PREFIX dbo: <http://dbpedia.org/ontology/>"
+ "\n"
+ "select ?resource where {\n"
+ " ?resource rdfs:label ?label.\n"
+ " ?resource dbo:abstract ?abstract.\n"
+ "}");
Literal ibuprofen = ResourceFactory.createLangLiteral("Ibuprofen", "en");
qs.setParam("label", ibuprofen);
QueryExecution exec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", qs.asQuery());
ResultSet results …Run Code Online (Sandbox Code Playgroud) 我从dbpedia下载了dbpedia_quotationsbook.zip,其中包含dbpedia_quotationsbook.nt triplestore.
在这个三元店
subject是authorname
谓词是"sameas"
对象是authorcode
我使用JENA尝试了这个查询三元组,简单的查询正在运行.
现在我想要所有的authorcode,其authorname与给定的字符串部分匹配.所以我尝试了以下查询
select ?code
where
{
FILTER regex(?name, "^Rob") <http://www.w3.org/2002/07/owl#sameAs> ?code.
}
Run Code Online (Sandbox Code Playgroud)
上面的查询应返回其authorname包含"Rob"的所有authorcodes
我得到以下异常
Exception in thread "main" com.hp.hpl.jena.query.QueryParseException: Encountered " "." ". "" at line 5, column 74.
Was expecting one of:
<IRIref> ...
<PNAME_NS> ...
<PNAME_LN> ...
<BLANK_NODE_LABEL> ...
<VAR1> ...
<VAR2> ...
"true" ...
"false" ...
<INTEGER> ...
<DECIMAL> ...
<DOUBLE> ...
<INTEGER_POSITIVE> ...
<DECIMAL_POSITIVE> ...
<DOUBLE_POSITIVE> ...
<INTEGER_NEGATIVE> ...
<DECIMAL_NEGATIVE> ...
<DOUBLE_NEGATIVE> ...
<STRING_LITERAL1> ...
<STRING_LITERAL2> …Run Code Online (Sandbox Code Playgroud) apache-jena ×10
jena ×5
sparql ×5
java ×4
rdf ×4
fuseki ×2
semantic-web ×2
converter ×1
dbpedia ×1
eclipse ×1
javascript ×1
maven-3 ×1
named-graphs ×1
openrefine ×1
rdfs ×1
tdb ×1