问题标签 [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 回答
64 浏览

owl - 制作OWL本体的同名子类

我想对下面的 XML 代码做一个本体:

我用 EventInputs 和 EventOutputs 的子类构建了一个超类 InterfaceList,但是当涉及到子类时会出现问题:“Event”和“With”。由于在 owl 本体中不可能创建具有相同名称的子类,对于 EventInputs 和 EventOutputs 中不同的“Event”和“With”子类的建议是什么

0 投票
1 回答
128 浏览

rdf - SHACL 验证使用破折号:reifiableBy

我正在使用 TopBraidComposer Maestro Edition (v 6.3.2) 中的 SHACL 测试 RDF 数据的验证。在分析 SHACL 期间,我遇到了文档DASH Reification Support for SHACL。该文档的第 2 章定义了属性dash:reifiableBy,根据该文档,该属性“可用于将 SHACL 属性形状与一个或多个节点形状联系起来。任何具体化的语句都必须符合这些节点形状。

这似乎表明可以针对某些形状定义语句的 SHACL 验证。该文档有一个示例,我尝试在 TopBraidComposer 中运行该示例 - 但稍作修改,以便实际获得验证结果(在这种情况下,声明无效)。代码是:

作品,exshacl:PersonShape只要属性形状确保exschema:age存在 aexschema:Person并且具有 datatype xsd:integer

ex:BobAge23Reification但是,三元组上的 rdf 语句ex:Bob exschema:age "23"^^xsd:integer未针对exshacl:ProvenanceShape. 虽然exschema:author声明中存在财产,但财产exschema:date不存在。

示例代码是否错误或缺少关键位,或者dash:reifiableBy没有定义实际验证的 SHACL 约束组件(并且仅用于定义 GUI 中的编辑表单)?

0 投票
1 回答
117 浏览

java - 如何将推断的三元组输入(其他)SHACL 规则?

我最近接触了 SHACL,我真的很喜欢它。我对 SHACL 规则有疑问,我想知道你们是否可以帮助我。

我创建了这个小型本体,它是我正在研究的 GDPR 的更大本体的一部分。

有五个主要类:PersonalDataProcessing、DataSubject、LegalBasis、Consent 和 GiveConsent。并且,有四个(功能)对象属性:

  • hasLegalBasis(域:PersonalDataProcessing,范围:LegalBasis)。
  • hasAgent(域:GiveConsent,范围:DataSubject)
  • hasPatient(域:GiveConsent,范围:Consent)
  • objectOfConsent(域:Consent,范围:PersonalDataProcessing)

并且有一个名为“isLawful”并在 PersonalDataProcessing 上定义的数据类型(布尔)属性:每个 PersonalDataProcessing 都可以是合法的(isLawful=true)或不合法的(isLawful=false)。

我在 GiveConsent 类中创建了一个单独的“gc”。“gc”有一个代理“John”(他是一个 DataSubject)和一个病人“c”(这是一个同意)。同意“c”通过属性 objectOfConsent 连接到另一个个人“pdp”,这是一个 PersonalDataProcessing。

然后我有两个 SHACL 规则。其中一个有“sh:order 1”,所以它应该在另一个之后执行(默认 sh:order 等于 0);

上述第一条规则规定,如果有人同意 PersonalDataProcessing,则该同意是 PersonalDataProcessing 的法律依据。第二条规则(带有“sh:order 1 ;”)规定每个具有法律依据的 PersonalDataProcessing 都是合法的。

最后我写了一个Java文件来执行规则:

我写信给你是因为第一条规则通过上面的 Java 代码正确地创建了三重“pdp hasLegalBasis c”:

但是,在推断出此三元组后,第二条规则不会触发:isLawful 未设置为 true。

另一方面,如果我在本体中手动添加三重“pdp hasLegalBasis c”,两个规则都会触发:

我究竟做错了什么?你们中的任何人都可以帮助我吗?

非常感谢

0 投票
1 回答
52 浏览

owl - 我不能将 sh:lessThan 与 xsd:positiveInteger 一起使用

我有以下小本体,有两个类(“DataSubject”和“Minor”),一个属性从 DataSubject(s) 到 xsd:positiveInteger,还有一个个人(“John”,他是一个 DataSubject 并且有 -年龄等于 20)。

以下 SHACL 规则应将所有年龄低于 16 岁的 DataSubject 标记为 Minor。

然而,下面的 Java 代码将 John 推断为 Minor……但 John 不是,他 20 岁!当然规则是不正确的,特别是指令“sh:lessThan "16"^^xsd:positiveInteger ;"。

如何将数据类型属性与给定的常量进行比较?

提前致谢!

利维奥

0 投票
0 回答
26 浏览

owl - 使用 sh:maxExclusive 比较两个数据类型属性(的值)

连接到这个问题:

我不能将 sh:lessThan 与 xsd:positiveInteger 一起使用

事实上,我设法通过以下方式使我的示例工作:

但是,现在我想将“ontology:has-age”的值与常量进行比较,而不是与在同一个人上定义的另一个数据类型属性的值进行比较(并以 16 作为值):

正如你们中的许多人可能知道的那样,以下方法不起作用:

我真的在https://www.w3.org/TR/shacl和其他相关网页上进行了挖掘,但我不知道如何获取属性的值并通过 sh:maxExclusive 进行比较。

有人可以告诉我该怎么做吗?

非常感谢!利维奥

0 投票
1 回答
32 浏览

owl - 在 sh:lessThan 的参数中嵌入路径

连接到这个问题(及其以前的问题):

使用 sh:maxExclusive 比较两个数据类型属性(的值)

我创建了一个包含三个类的小型本体:DataSubject、MemberState 和 Minor。有两种数据类型属性:has-age 和 has-minimalage。前者是从 DataSubject(s) 到整数,后者是从 MemberState(s) 到整数。然后有一个对象属性 has-member-state 从 DataSubject(s) 到 MemberState(s)。

现在我们有以下个人:

我想写一个SHACL规则,说每个年龄小于其会员国最小年龄的DataSubject也是Minor类的个体。

根据我对其他问题的答复,我尝试了:

哪个不起作用:它将 John 分类为 Minor,但 20小于 16。当然我尝试了许多其他变体,例如,“sh:lessThan[sh:node[sh:path (ontology:has-member-state ontology :has-minimalage)];];",其中许多可能没有任何意义,但它们都不起作用。

有人可以建议我如何在 sh:lessThan 的参数中嵌入路径吗?

如果我开始对所有这些问题感到恼火,我很抱歉 :-( 我是 SHACL 和 SPARQL 的新手,但我真的在尽我所能从网上找到的所有东西中学习它们。

谢谢利维奥

0 投票
1 回答
65 浏览

shacl - TopQuadrant Shacl 规则引擎迭代推理

Shacl API 规则引擎是否像 TopBraid Composer 一样支持 sh:order 来执行规则。

我在 TBC 中测试了规则排序,它迭代地进行,直到达到一个固定点。没有更多的规则可以执行。我怀疑它被认为是一次性的,但是规则被优先考虑,并且它们的结果可用于在同一遍中执行的下一条规则。

无论如何,不​​管它是如何实现的,我想知道它是 shacl 规则引擎的一个特性还是一个特定于 TopBraid 作曲家的实现。

以下线程暗示了我正在寻找的答案,但没有达到。

如何将推断的三元组输入(其他)SHACL 规则?

0 投票
1 回答
49 浏览

rdfs - 我所有的标签都去哪儿了?Topbraid 猫头鹰到 SHACL 转换

我正在尝试将我的本体从 OWL 转换为 SHACL。但是,SKOS 标签、preflabels、评论等没有被转换。至少,它们不会在生成的 ttl 文件中返回。现在,我将原始 TTL 文件加载到 topbraid 中,并使用 Model -> Convert OWL/RDFS To SHACL... -> standard settings 。这很好用:我所有的对象属性、数据属性、基数等都被巧妙地转换,但是,所有不是 SHACL 的东西都完全从生成的 TTL 文件中省略,包括我的预标签和注释。

我做错了什么:或者更好:如何将所有内容转换为 SHACL,但将 SKOS 的东西保留在那里?

感谢您的任何提示!

0 投票
1 回答
94 浏览

owl - SHACL 规则中的多路径和存在量化(我应该使用 sh:oneOrMorePath 吗?)

我想了解如何在 SHACL 规则中处理多个路径和存在量化。让我用一个示例本体来举例说明我的问题。

本体包括类“Approve”、“Legal”、“Result”、“Man”和“Machine”,它们都是不相交的。它有两个属性“has-theme”和“come-from”以及以下个体:

因此:批准操作“:a”有两个主题:“:r1”和“:r2”。前者来自人“:m1”,后者来自机器“:m2”。

我想写一个 SHACL 规则,说明“每个批准动作在其主题中至少有一个来自男人的结果是合法的”。

我试过这个,将“:a”归类为合法(但它应该):

问题是 ":a" 有两个主题,一个来自人,另一个来自机器。

然后我在网上阅读了有关 sh:oneOrMorePath 的信息,并在 sh:property 中尝试了以下变体:

无事可做,这些变体也不起作用。

另一方面,如果我删除三重 ":r2 :come-from :m2" 或三重 ":a :has-theme :r2" ,它会起作用,因为本体中不再有从 ": a" 对非人。

你们中的任何人都可以帮助我吗?

谢谢!

利维奥

0 投票
0 回答
54 浏览

owl - 如何通过 SHACL 断言逆三元组(假设它们还不存在?)

我有一个本体,其中每个主题角色(例如,has-agent)都通过对象属性表示。此外,总是定义逆属性(例如,is-agent-of)。

我想通过 SHACL 规则在本体中断言所有逆三元组,前提是它们并不已经存在

因此,我编写了以下规则:

但它不起作用:它断言逆三元组即使它们已经存在(而且它不应该存在)。

我怀疑“sh:equals sh:this”不正确,即“sh:this”不能在 sh:property 中使用。另一方面,“sh:minCount 1;” 单独是行不通的,因为某人可以是多个行动的代理人。

谁能帮我?谢谢