问题标签 [topbraid-composer]

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 投票
0 回答
119 浏览

sparql - 在 Topbraid Composer 中按标签查看类

我在 Topbraid Composer Maestro Edition 中画出了一些人之间的关系。我的核心本体是来自 OBO Foundry 的 OBIB,所以像 biobank 这样的术语一个 IRI,比如<http://purl.obolibrary.org/obo/OMIABIS_0000000>, 或obo:OMIABIS_0000000. 我希望在图表和类 Bowser 中看到它们的标签,以及它们的 rdfs:labels,而不是它们的 ID。

这可能吗?我在Windows -> 首选项 -> Topbraid Composer中找不到它

0 投票
1 回答
139 浏览

java - 在文本 SPARQL 语法和 SPIN RDF 词汇之间进行转换:如何添加 rdfs:comment 和 sp:text

使用 SPIN API ( http://topbraid.org/spin/api/ ) 并使用https://github.com/spinrdf/spinrdf/blob/master/src-examples/org/topbraid/spin的示例代码/examples/SPINParsingExample.java我正在尝试将 rdfs:comment 和 spin:text 的处理添加到示例中。Topbraid Composer 免费版 (TBC FE) 允许每个包含在 RDF 中的 SPIN 规则发表评论。TBC FE 还可以选择通过 sp:text 属性将 SPIN SPARQL 源代码包含为 xsd:string 值。我想在示例的扩展版本中执行相同的操作,然后将其转移到我想嵌入 SPIN 规则编辑的工作代码中。

这是我当前的示例代码的扩展版本。请忽略日志记录警告。请注意,我在示例查询顶部(第 54 行)插入的注释被静默地丢弃在输出中(输出也包括在下面)。

从上面的输出...

我确信有一种方法可以将 rdfs:comment 和源代码(通过 sp:text)添加到 RDF,但我还没有找到它。我怀疑可以通过示例中的 spinQuery 实例化调用 Select 类的方法(第 66 行),但我不确定如何实现。任何指针将不胜感激。

这个问题与我之前回答的问题有关如何将 SPARQL/SPIN 查询/规则从 Java 转换为 RDF 结构?但专门研究 RDF 中的注释和源代码。

0 投票
1 回答
705 浏览

sparql - Use COUNT inside a CONSTRUCT function in SPARQL

I am trying to write a SPIN-Rule that will count the number of incoming references and set this number as a property value. E.g., count number of Issues that occurred on a particular machine. Therefore I need to count the number of incoming references of type rdfs:occuredOn (domain: Issue, range: Machine).

Thank you in advance!

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 回答
763 浏览

sparql - SPARQL-查询具有特定前缀的所有对象?

我创建了一个具有不同前缀(rdf、rdfs、owl、example、car、bike、...)的本体。我用它们来划分不同的领域和例子。

如何查询所有带有 profix 即“汽车”的对象?

先感谢您!

0 投票
1 回答
975 浏览

sparql - 在 SPARQL 中更改前缀

我创建了一个具有不同前缀(rdf:, rdfs:, owl:, example:, car:, bike:, ...)的本体。我用它们来划分不同的领域和例子。

一小段摘录:

有没有办法将“”更改为PREFIX例如car:plane:”,并保持关系:

我仍然需要所有的关系。带有PREFIXcar:”的对象不必替换;PREFIX用新对象创建新对象并将旧对象保留在数据库中就足够了。

感谢您的任何建议!

0 投票
1 回答
288 浏览

sparql - 如何在 TopBraid Composer 中插入 Sparql?

我正在尝试通过在 TopBraid Composer(ME 5.5.2)中使用 Sparql 来插入新类。我的简单本体如下所示:

在此处输入图像描述

然后我写了一个 Sparql 查询Berry作为子类插入Fruit

但是出现了一条错误消息,说Encountered "insert". Was expecting one of: "base, "select", ...

类似的帖子:Sparql insert data not working说 Sparql Query 是与 Sparql Update 不同的语言。其他一些帖子说 Protege 不支持 Sparql 更新,但 Composer 支持(为此我下载了 Composer)。我还查看了 Composer 手册:https : //www.topquadrant.com/docs/TBC-Getting-Started-Guide52.pdf ,其中提到了 Sparql 更新但没有说太多。

那么我的问题是,是否可以在 TopBraid 中插入类和公理?如果是这样,怎么做?我的最终目标是插入的类将出现在分层视图中,并且它们插入的类定义也可以在侧面看到。如果 Composer 无法做到这一点,我还可以使用哪些其他工具/工作流程?

对不起,这样的新手问题。任何帮助表示赞赏。

0 投票
2 回答
237 浏览

jena - 对新实例执行 SHACL 规则?

我有一个应用程序,其中我使用 SPIN 构造函数作为实现事件/条件/操作 (ECA) 策略的手段。ECA 是一种经典的策略构造。在这种情况下,事件始终是一个类对个体的断言,它导致该类的 SPIN 构造函数在该新个体上运行。Condition 是在我的 SPARQLWHERE子句中表达的模式,而 Action 是由 SPARQLCONSTRUCT子句中的断言提供的。我的理解是 SPIN 构造函数只会在类的新个体上运行,而不是在类的所有个体上运行。

我现在正在考虑切换到 SHACL 作为 SPIN 的继任者。我正在 TopBraid Composer Maestro Edition 中开发,我可以使用 Jena SHACL API 来实现。

假设我将 ECA 策略表示为 SHACL 形状并通过sh:targetClassSHACL 谓词定位一个类。假设我的目标类是family:Person. 每次我断言一个新family:Person个体时,我都想对那个新个体运行我的 ECA 策略(表示为 SHACL 形状)。我知道可以使用侦听器来感知新的班级成员资格。我也知道,RuleUtil.executeRules()一旦感知到更改,就可以使用诸如此类的方法来执行所有目标节点(family:Person在我的示例中为类的个人)上的所有规则。但是,有没有办法将 SHACL 形状应用于目标类的新个体? 在我的应用程序中,个人会随着时间的推移而积累,并且可能会变得非常多。我担心重复运行形状对相同的、旧的、未改变的个体的计算负载会变得很重要。

0 投票
0 回答
25 浏览

topbraid-composer - “运行推理”在 Maestro 版本中不起作用

我下载了 maestro 版本,并按照入门指南和 Person 本体教程进行操作。在我尝试推理示例之前一直很好。我在“推理”视图中单击“推理->运行推理”,它是空的。没有任何推断。同样使用 SparQL 查询,它没有推断。我应该先配置一些推理器吗?

使用推理配置,它没有显示任何威廉姆斯的孩子。消息日志如下。 在此处输入图像描述

0 投票
1 回答
86 浏览

sparql - 检查具有非确定性(基于 UUID)URI 的 RDF 模型之间的差异?

我和一所大学分别将电子健康记录实例化为三元组。 我们想比较我们的 10k 到 100k 三元组的集合,看看它们是否具有相同的形状。

作为一项策略,我基于 UUID 创建 URI,因此其中没有嵌入任何语义。我想坚持这个政策,因为我和我的大学真的在尝试从整体上比较现有的工作流程。

我知道如何在 TopBraid Composer 中比较两个 RDF 文件,但我认为如果我们有相同的数据模式但不同的 URI,它不会有用。我将我的三元组存储在 Ontotext GraphDB 中,但很高兴使用任何其他工具。

例如,关于 person ...fe54977c174a和 person ...的三元组4bcdc1c8abf9应该被认为是等价的,但 ...fe54977c174a和 ...ae00dc86b3bb不应该。 这可行吗?

ASK我不希望对手工制作的 SPARQL语句进行抽查。

具有与此相同的形状(尽管 URI 不同):

但这在结构上是不同的(由于不同的性别和诊断提及):