问题标签 [rdf4j]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
197 浏览

sparql - RDF4J 中的类型化文字是否“棘手”?

在 RDF 中,我可以拥有一个由单个属性绑定到多个文字值的实体。也可以键入这些值以增加清晰度。

在 SPARQL 中,我可以只查询我想要的类型

RDF4J 中是否有类似getStatement的东西可以受这样的数据类型约束?

0 投票
1 回答
80 浏览

scala - 将 RDF4J 流过滤器(lambda?)从 Java 转换为 Scala

RDF4J 中的类型文字是否“棘手”的后续行动?

我有一些三倍于自卸卡车的重量,使用具有不同数据类型的文字对象。我只对整数值感兴趣,所以我想根据数据类型进行过滤。大约一周前,Jeen Broekstra 发送了一个 Java 解决方案,但我无法将它转换为我团队的首选语言 Scala。

这就是我到目前为止所拥有的。日食在抱怨

未找到:值 l

0 投票
2 回答
239 浏览

date - Manipulate Date/Time in RDF4J for Debugging

I'm using RDF4J 2.2.1 on Windows 10 Professional 64-bit. I will have some SPIN constructor rules which are sensitive to date/time. For example, I may want to compare a triple containing an xsd:dateTime datatype property to the output of SPARQL's built-in now() function. To debug this functionality, it would be convenient to manipulate RDF4J's perception of date/time somehow rather than manipulating the system clock. I'm aware that there is general commercial software (e.g. Solution Soft's "Time Machine") that can generally manipulate the perception of time for any Windows process. However, this software appears to be far too expensive for our little proof-of-concept project.

What I'd like to be able to do:

  • Set RDF4J's date/time to some arbitrary date/time value.
  • Have RDF4J's date/time proceed at real time speed or at some programmable faster speed during debugging.

Does anyone have suggestions for how to manipulate in this manner date/time for RDF4J? It would make my debugging of time-sensitive SPIN rules much more efficient. I'd prefer not to fight my PC's system clock since many other things depend on it. I suppose that running an entire virtual PC and debugging on the virtual PC is another option, but it seems there should be a simpler way.

Thanks.

0 投票
1 回答
542 浏览

java - 如何将 SPARQL/SPIN 查询/规则从 Java 转换为 RDF 结构?

我一直在使用 TopQuadrant Composer 免费版 (TBC FE) 将 SPARQL/SPIN 规则(主要是 SPIN 构造函数)嵌入到存储为 RDF 的 OWL 本体中。这个过程的一部分是根据http://spinrdf.org/sp.html将 SPARQL 源代码标记化/编码为 RDF 结构,该架构在http://spinrdf.org/sp中指定。正是这种结构实际上被 RDF4J 解释为运行 SPIN 规则。

我还使用 RDF4J 作为我的三重存储、推理器、SPARQL 端点和 SPIN 规则引擎。此外,我正在生成自定义 Java 代码和 GUI 来操作我的数据和规则。

我的问题是我可以在 Java 中使用什么将 SPARQL/SPIN 源代码编码为 RDF?请注意,我不是在问如何对查询结果进行编码(在另一个 stackoverflow 问题/响应中已回答),而是在问如何对查询本身进行编码。原因是我希望能够从我自己的 Java 代码中编辑 SPIN 规则,而不是仅仅依赖于 TBC FE。

另请注意,我知道存储原始 SPARQL 查询文本的选项。然而,我的经验是,这没有被正确解释,而标记化/结构化的 RDF 被正确解释。因此,我必须使用结构化 RDF。

我希望执行这种编码的大部分 Java 代码已经编写好了,也许是 Apache Jena 的一部分。我只需要一个关于在哪里看的指针。

谢谢!

PS:这是由 TBC FE 编码的示例 SPIN 构造函数的开始。它包括 SPARQL/SPIN 源代码的原始 sp:text 和结构化 RDF 的开头(在 sp:text 块之后)。这是我需要能够使用 Java 从 SPARQL 源代码生成的结构化 RDF。

0 投票
1 回答
107 浏览

java - 在 Hadoop/Mapreduce 作业的映射器类中,无法连接到 SPARQLRepository 未使用 openrdf(芝麻)

我确实使用 Sesame (RDF4j) API 编写了一个 Java 应用程序来测试 > 700 个 SPARQL 端点的可用性,但它需要几个小时才能完成,所以我正在尝试使用 Hadoop/MapReduce 框架分发这个应用程序。

现在的问题是,在映射器类中,应该测试可用性的方法不起作用,我认为它无法连接到端点。

这是我使用的代码:

输入是 TextInputFormat,它看起来像这样:http:
//visualdataweb.infor.uva.es/sparql
...

输出是一个 TextOutputFormat,我得到这个:http:
//visualdataweb.infor.uva.es/sparql null
...

Edit1:正如@james-leigh 和@ChristophE 所建议的,我使用了try-with-resource 语句,但还没有结果:

谢谢

0 投票
1 回答
251 浏览

java - rdf:id 的 rdf4j 过滤器模型

在 rdf4j 中是否可以通过它们来过滤模型rdf:id?我已经尝试了以下方法:

rdf:resource但是有了这个,我也得到了and的所有出现rdf:about。目前,我首先过滤所有出现的所需类型(返回一个模型)的整个模型。然后我为资源过滤此模型,并使用此资源过滤整个模型以获得所需的模型部分:

我认为我的解决方案会产生太多开销,因为我还需要typeModel为每个类型创建一个。是否有另一种过滤模型的方法rdf:id

更新:

这是一个简短的示例:我需要ACLineSegment借助rdf:resource.Terminal.ConductingEquipment

0 投票
1 回答
189 浏览

sparql - 当 sp:text 出现在导入的 RDF 文件中时,如何指示 RDF4J 使用 SPIN RDF 三元组?

我正在使用 RDF4J 服务器和工作台版本 2.2.2。我在 RDF4J 中使用支持 SPIN 的存储库,并且正在阅读我在 TobBraid Composer 免费版 (TBC FE) 中创建的包含许多spin:construct规则的 RDF 文件。TBD FE 设置为通过sp:text属性包含我的构造函数的 SPARQL 源代码。我观察到,当sp:text三元组存在使 SPARQL 源代码可用于 RDF4J 时,RDF4J 似乎使用 SPARQL 源而不是使用相同查询的 RDF 标记化表示。我的主要和次要问题是:

  • sp:text当导入的 RDF 文件中同时存在 和 RDF 表示时,如何指示 RDF4J 使用 SPIN 构造函数的 RDF 表示?
  • 如果 RDF4J 使用sp:textSPIN 构造函数的表示,如何指示它使用出现在导入的 RDF 文件头部的前缀定义?到目前为止,我有 69 个构造函数并且还在增加。虽然我可以在每个构造函数中嵌入前缀定义,但这样做似乎很浪费。

当我剥夺 RDF4J 的sp:textSPARQL 源代码表示时,构造函数会使用在导入的 RDF 文件头部定义的前缀按预期运行。在实例化我定义了构造函数的类之前,我可以通过执行删除源代码的查询来剥夺 RDF4J 的源代码。我已经使用这个 SPARQL 更新查询来完成这个目的:

我想保留 SPARQL 源代码以在我正在构建的 GUI 中显示,该 GUI 通过 SPARQL 查询与 RDF4J 服务器通信。sp:text我尴尬的临时解决方法是使用下面第 5 步中使用的 SPARQL 更新查询替换另一个自定义数据属性。此属性替换成功地阻止 RDF4J 找到 SPIN 构造函数的 SPARQL 源代码。然后 RDF4J 转而解释规则的标记化 RDF 表示。有没有更简洁的方法来强制 RDF4J 从 RDF 而不是从 SPARQL 源代码执行 SPIN 构造函数?我在想必须有某种方式来指示 RDF4J 来解释 RDF 表示而不是 SPARQL 源代码,但我不知道如何。

现在,让这种情况可重现的血腥细节......

  1. 使用 RDF4J 工作台在 RDF4J 中创建一个支持 SPIN 的存储库。我的名为 TakeRDF4J4SPIN(存储库→新存储库)
  2. 使用 RDF4J 工作台清除存储库(修改 → 清除)
  3. 使用 RDF4J 工作台加载pub7.rdf ...(修改 → 添加 w/ 使用基本 URI 作为上下文标识符未选中)

请注意,此 RDF 文件在文件开头定义了所有相关前缀:

另请注意,附加到该类的 SPIN 构造函数pub7:Pub7TestClass是:

  1. 尝试创建pub7:Pub7TestClass...的实例

我在 RDF4J 工作台的 Modify → SPARQL Update 中使用这个 SPARQL 更新查询来创建实例...

由于尝试基于sp:textSPARQL 源代码表示执行上述构造函数,这将导致在 RDF4J 工作台中报告前缀未定义错误:

  1. sp:text现在使用以下 SPARQL 更新查询从 RDF4J 中隐藏 SPIN 构造函数:

.

  1. 现在重新运行步骤 4 中显示的 SPARQL 更新查询以实例化测试类。这次更新查询应该没有错误地运行。

  2. 现在使用 RDF4J Workbench 的 Explore → Explore 函数来查看我们刚刚创建的实例化/个体,inst:aPub7TestClassInstance_test1. 应该看到实例化通过spin:hasConstratintViolation属性有一个约束违反通知,提供了测试构造函数这次确实在没有sp:text表示的情况下运行的证据,被迫使用 SPIN 构造函数的 RDF 标记化表示。

0 投票
1 回答
165 浏览

maven - 即使在安装 RDF4J 包之后,OpenDaylight OSGi 也无法找到 RDF4J 类

如果我只使用带有 Maven(没有 OSGi 容器)的 RDF4J,我可以利用 RDF4J 提供的所有类。但是当我将 RDF4J 与 OpenDaylight 一起使用时,我使用 RDF4J 类的捆绑包由于不满足要求而无法启动。我正在使用 IntelliJ Idea,并使用 OpenDaylight 原型创建了一个新项目,其中 groupId:org.opendaylight.controller、artifactId:opendaylight-startup-archetype、版本:1.4.0-SNAPSHOT 和存储库:https://nexus.opendaylight。 org/content/repositories/opendaylight.snapshot/archetype-catalog.xml

我的包的组 ID:org.exmaple,工件 ID:rdfTest,版本:1.0-SNAPSHOT,我使用的是 maven 3.3.9

原型编译成功,我可以安装所有功能。(./karaf/target/assembly/bin/karaf 然后通过 feature:install 命令安装功能)

但是当我在 impl 文件夹的 pom.xml 中添加 RDF4J 依赖项时

并在 impl/src/main/java/org/example/impl 的 RdfTestProvider.java 中添加以下内容,该功能不会安装。

我认为问题在于没有安装 RDF4J 包。我尝试了不同的方法来安装它,但都没有奏效(安装第 3 方非 osgi 捆绑包

有什么方法可以将 RDF4J 与 OpenDaylight 一起使用?

0 投票
1 回答
54 浏览

rdf - Virtuoso 崩溃“数据类型不支持 search.c:326 box_serial_length”

我正在使用 RDF4J Virtuoso 适配器连接到在 VirtualBox CentOS 7.3 64 位中编译和安装的 Virtuoso 7.20.3216。

我尝试使用以下代码在 Virtuoso 中加载 Turtle 文件:

Virtuoso 崩溃(停止)并显示以下日志:

当上传到指挥后台时,相同的 Turtle 字符串可以正常工作。这个文件很大,所以我不能在这里粘贴它。

我们已将问题缩小到字符编码问题。turtle 文件包含带有重音字符的文字,例如"Disque à gravure directe"@fr.

我们没有设置任何字符编码参数,无论是在 Virtuoso 配置端,还是在 JDBC 连接端。我们尝试添加charset=UTF-8JDBC 连接字符串,但没有成功。

似乎只有当数据库为空时才会出现问题。当数据库已经包含一些数据时,Virtuoso 不会崩溃。

任何想法

  1. 错误信息是什么意思?
  2. 问题的原因可能是什么?
  3. 如何解决或解决这个问题?

谢谢!

0 投票
1 回答
146 浏览

scala - 将文字拆分为值和数据类型的 RDF4J 方法

如果我连接cxn到一个空的 Triplestore,我会说:

我明白了

是否有一种 RDF4J 方法可以仅检索该文字的值?

我只想要 0 或“0”,没有数据类型

我想如果可能的话,我应该尝试在没有字符串操作/正则表达式的情况下做到这一点。