问题标签 [ontology]
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.
rdf - 是否有任何工具可以可视化 RDF 图?(请附上截图)
我正在寻找一种能够以合理有用的图形格式呈现 RDF 图的工具。图形格式的主要目的是包含在 PowerPoint 幻灯片中或在大型绘图仪上打印以供管理审查。
我目前正在使用 TopBraid Composer,它在可视化单个实体方面做得相当好,但似乎没有一种清晰的方式来可视化整个图形(作为一个整体)。
有人知道这个问题的任何好的解决方案吗?
rdf - 支持 A-Box 本体数据翻译的工具
有谁知道任何能够定义从一个本体到另一个本体的 T-Box 结构的声明性映射的工具,当执行时可以影响 A-Box 实例数据从一个本体的形式到另一个本体的转换?
我最近编写了这样一个工具来满足我的需求,但我想知道我是否重新发明了轮子。
semantic-web - 我在哪里可以找到各种领域的公共领域猫头鹰本体的良好集合?
我正在构建一个本体处理工具,并且需要大量各种猫头鹰本体的示例,因为人们在现实世界中构建和使用它们。我不是在谈论像 Cyc 这样的基础本体,我是在谈论更小的、特定于领域的本体。
rdf - 哪个 Triplestore 用于快速语义 Web 开发?
易于安装/使用是这里最重要的因素 - 而不是性能。
小是可以的,因为不需要大型数据集。
rdf - SPARQL 查询 - 类和子类给出类名和命名空间
在给定类名和命名空间的情况下,如何使用 SPARQL 查询从 RDF 数据源中获取所有类属性及其子类的属性?
java - 序列化 JENA OntModel 更改
我需要在一个套接字上保持几个Jena模型(特别是 OntModels)同步,并且我想一次做一个更改(出于各种原因——一个是从 OntModels 添加或删除的每个 Statement 是还适应了 JESS 规则库。)。我能够监听 OntModels 上的添加/删除事件,然后创建简单的事件实例,这些实例将添加/删除的语句与指示添加或删除语句的 ChangeType 一起包装,但序列化语句已被证明是问题。
不幸的是,我发现的所有 JENA 序列化文档都与将整个模型序列化为 xml / rdf / n3 / 等有关。由于语句只是字符串的三元组(无论如何,在一个级别上),它似乎应该是微不足道的在语句级别序列化数据。然而,Jena似乎没有提供一个 API 来创建带有“做正确的事情”的纯字符串的语句。类型化文字会出现问题。例如:
我可以创建语句:
但我可以得到的字符串版本如下所示:
(注意^^前没有“)
这不是什么大问题,因为文字仍然可以用正则表达式解析出来,但我无法使用正确的文字创建语句。显而易见的方法 (ModelCon.createStatement(Resource, Property, String)) 生成一个无类型的字符串文字,其中包含传入的字符串的完整值。
有谁知道我如何可靠地序列化(当然还有反序列化)单个 Jena 语句?
rdf - RDF 数据实例是否嵌入了 RDF Schema?
RDF Schema 存在一个预定义的规范。我想知道 RDF 数据实例中是否嵌入了 RDF Schema 片段?类似于类的名称,也恰好是主题/对象的名称。
java - 将 Jena OntModel 与 bnode 同步
这个问题与rcreswick关于Serializing Jena OntModel Changes的问题有关。我在需要通过套接字保持同步的两台(或更多)机器上有 Jena 模型。我需要解决的主要问题是模型可能包含匿名节点(bnodes),它可以源自任何模型。
问题:我是在正确的轨道上,还是有更好、更强大的方法我没有考虑?
我可以想到 3 种方法来解决这个问题:
- 序列化完整模型:这对于同步小更新来说非常昂贵。此外,由于任何一台机器都可能发生变化,我不能只用机器 A 的序列化模型替换机器 B 的模型。我需要合并它们。
- 序列化部分模型:使用专用模型进行序列化,该模型仅包含需要通过套接字发送的更改。这种方法需要特殊的词汇表来表示从模型中删除的语句。据推测,当我将模型从机器 A 序列化到机器 B 时,匿名节点 ID 对于机器 A 将是唯一的,但可能与在机器 B 上创建的匿名节点的 ID 重叠。因此,我必须重命名匿名节点并保留映射从机器 A 的匿名 ID 到机器 B 的 ID,以便正确处理未来的更改。
- 序列化单个语句:这种方法不需要特殊的词汇,但可能不那么健壮。除了匿名节点之外,还有其他我还没有遇到的问题吗?
- Generate global unique bnode ids (NEW):我们可以通过在 ID 前加上唯一的机器 ID 来为匿名节点生成全局唯一的 ID。不幸的是,我还没有弄清楚如何告诉 Jena 使用我的 ID 生成器而不是它自己的。这将允许我们在不重新映射 bnode ID 的情况下序列化单个语句。
这里有一个例子可以让这个讨论更深入一点。假设我在机器 A 上有一个列表,表示为:
我将这个模型从机器 A 序列化到机器 B。现在,因为机器 B 可能已经有一个(不相关的)匿名节点,id 为“a”,我将 id 'a' 重新映射到新的 id 'b':
现在机器 A 上的列表发生了变化:
由于机器 B 之前从未遇到过机器 A 的 id 'b',它添加了一个从机器 A 的 id 'b' 到新的 id 'c' 的新映射:
如果有两台以上的机器,问题会更加复杂。例如,如果有第三台机器 C,它可能有自己的匿名节点“a”,它不同于机器 A 的匿名节点“a”。因此,机器 B 确实需要保存从其他机器的每个匿名节点 ID 到其本地 ID 的映射,而不仅仅是从一般的远程 ID 到本地 ID。在处理传入的更改时,必须考虑更改的来源以正确映射 ID。
java - 生成 Jena Bnode ID
有没有办法覆盖 Jena 生成匿名节点 ID 的默认方法?
理想情况下,我想向 Jena 传递一个生成 ID 的函子,这样我就可以使它们在全球范围内独一无二(而不仅仅是机器独有的)。每当构造 AnonId 时都应使用仿函数。
这与我之前的问题有些相关。
编辑:我意识到 AnonId 有一个带有 id 参数的构造函数。我希望避免到处调用这个构造函数,而是简单地告诉 Jena(一次)如何生成 ID。
编辑 2:即使我不介意到处调用该构造函数,这也可能是不可能的,因为匿名节点可能是由我无权访问的库代码创建的。
rdf - OWL 程序集生成问题 (OWLGrinder)
我正在从我的 OWL 本体构建一个程序集,但是在解析本体时,它会在声明类型并给出一些值的“数据类型属性”处引发错误消息。我已经使用 Protege v3.4 编写了我的本体。
例如,引发错误的数据类型属性之一是“语言”,其类型为“字符串”,值如“英语和波斯语”。参考文献如下,由 protege 提供:
下面提到了“语言”属性:
我只是向 OWLGrinder 添加了一个本体。生成时出现此错误:
每次按下“生成”按钮时,“_:bnode”前面的数字都会发生变化。通过从“语言”属性中删除值,会发生与下一个 DataType 属性相关的另一个错误。这意味着定义的每个 DataType 属性(并为其指定了一些值)在 OWLGrinder 中出错。
我想知道是否有人可以指导我处理这个错误。