问题标签 [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.
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中找不到它
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 中的注释和源代码。
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!
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:text
SPIN 构造函数的表示,如何指示它使用出现在导入的 RDF 文件头部的前缀定义?到目前为止,我有 69 个构造函数并且还在增加。虽然我可以在每个构造函数中嵌入前缀定义,但这样做似乎很浪费。
当我剥夺 RDF4J 的sp:text
SPARQL 源代码表示时,构造函数会使用在导入的 RDF 文件头部定义的前缀按预期运行。在实例化我定义了构造函数的类之前,我可以通过执行删除源代码的查询来剥夺 RDF4J 的源代码。我已经使用这个 SPARQL 更新查询来完成这个目的:
我想保留 SPARQL 源代码以在我正在构建的 GUI 中显示,该 GUI 通过 SPARQL 查询与 RDF4J 服务器通信。sp:text
我尴尬的临时解决方法是使用下面第 5 步中使用的 SPARQL 更新查询替换另一个自定义数据属性。此属性替换成功地阻止 RDF4J 找到 SPIN 构造函数的 SPARQL 源代码。然后 RDF4J 转而解释规则的标记化 RDF 表示。有没有更简洁的方法来强制 RDF4J 从 RDF 而不是从 SPARQL 源代码执行 SPIN 构造函数?我在想必须有某种方式来指示 RDF4J 来解释 RDF 表示而不是 SPARQL 源代码,但我不知道如何。
现在,让这种情况可重现的血腥细节......
- 使用 RDF4J 工作台在 RDF4J 中创建一个支持 SPIN 的存储库。我的名为 TakeRDF4J4SPIN(存储库→新存储库)
- 使用 RDF4J 工作台清除存储库(修改 → 清除)
- 使用 RDF4J 工作台加载pub7.rdf ...(修改 → 添加 w/ 使用基本 URI 作为上下文标识符未选中)
请注意,此 RDF 文件在文件开头定义了所有相关前缀:
另请注意,附加到该类的 SPIN 构造函数pub7:Pub7TestClass
是:
- 尝试创建
pub7:Pub7TestClass
...的实例
我在 RDF4J 工作台的 Modify → SPARQL Update 中使用这个 SPARQL 更新查询来创建实例...
由于尝试基于sp:text
SPARQL 源代码表示执行上述构造函数,这将导致在 RDF4J 工作台中报告前缀未定义错误:
sp:text
现在使用以下 SPARQL 更新查询从 RDF4J 中隐藏 SPIN 构造函数:
.
现在重新运行步骤 4 中显示的 SPARQL 更新查询以实例化测试类。这次更新查询应该没有错误地运行。
现在使用 RDF4J Workbench 的 Explore → Explore 函数来查看我们刚刚创建的实例化/个体,
inst:aPub7TestClassInstance_test1
. 应该看到实例化通过spin:hasConstratintViolation
属性有一个约束违反通知,提供了测试构造函数这次确实在没有sp:text
表示的情况下运行的证据,被迫使用 SPIN 构造函数的 RDF 标记化表示。
sparql - SPARQL-查询具有特定前缀的所有对象?
我创建了一个具有不同前缀(rdf、rdfs、owl、example、car、bike、...)的本体。我用它们来划分不同的领域和例子。
如何查询所有带有 profix 即“汽车”的对象?
先感谢您!
sparql - 在 SPARQL 中更改前缀
我创建了一个具有不同前缀(rdf:
, rdfs:
, owl:
, example:
, car:
, bike:
, ...)的本体。我用它们来划分不同的领域和例子。
一小段摘录:
有没有办法将“”更改为PREFIX
例如car:
“ plane:
”,并保持关系:
我仍然需要所有的关系。带有PREFIX
“ car:
”的对象不必替换;PREFIX
用新对象创建新对象并将旧对象保留在数据库中就足够了。
感谢您的任何建议!
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 无法做到这一点,我还可以使用哪些其他工具/工作流程?
对不起,这样的新手问题。任何帮助表示赞赏。
jena - 对新实例执行 SHACL 规则?
我有一个应用程序,其中我使用 SPIN 构造函数作为实现事件/条件/操作 (ECA) 策略的手段。ECA 是一种经典的策略构造。在这种情况下,事件始终是一个类对个体的断言,它导致该类的 SPIN 构造函数在该新个体上运行。Condition 是在我的 SPARQLWHERE
子句中表达的模式,而 Action 是由 SPARQLCONSTRUCT
子句中的断言提供的。我的理解是 SPIN 构造函数只会在类的新个体上运行,而不是在类的所有个体上运行。
我现在正在考虑切换到 SHACL 作为 SPIN 的继任者。我正在 TopBraid Composer Maestro Edition 中开发,我可以使用 Jena SHACL API 来实现。
假设我将 ECA 策略表示为 SHACL 形状并通过sh:targetClass
SHACL 谓词定位一个类。假设我的目标类是family:Person
. 每次我断言一个新family:Person
个体时,我都想只对那个新个体运行我的 ECA 策略(表示为 SHACL 形状)。我知道可以使用侦听器来感知新的班级成员资格。我也知道,RuleUtil.executeRules()
一旦感知到更改,就可以使用诸如此类的方法来执行所有目标节点(family:Person
在我的示例中为类的个人)上的所有规则。但是,有没有办法将 SHACL 形状仅应用于目标类的新个体? 在我的应用程序中,个人会随着时间的推移而积累,并且可能会变得非常多。我担心重复运行形状对相同的、旧的、未改变的个体的计算负载会变得很重要。
sparql - 检查具有非确定性(基于 UUID)URI 的 RDF 模型之间的差异?
我和一所大学分别将电子健康记录实例化为三元组。 我们想比较我们的 10k 到 100k 三元组的集合,看看它们是否具有相同的形状。
作为一项策略,我基于 UUID 创建 URI,因此其中没有嵌入任何语义。我想坚持这个政策,因为我和我的大学真的在尝试从整体上比较现有的工作流程。
我知道如何在 TopBraid Composer 中比较两个 RDF 文件,但我认为如果我们有相同的数据模式但不同的 URI,它不会有用。我将我的三元组存储在 Ontotext GraphDB 中,但很高兴使用任何其他工具。
例如,关于 person ...fe54977c174a
和 person ...的三元组4bcdc1c8abf9
应该被认为是等价的,但 ...fe54977c174a
和 ...ae00dc86b3bb
不应该。 这可行吗?
ASK
我不希望对手工制作的 SPARQL语句进行抽查。
具有与此相同的形状(尽管 URI 不同):
但这在结构上是不同的(由于不同的性别和诊断提及):