问题标签 [blank-nodes]
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,我的问题是:空白节点的目的是什么?
例子:
这意味着约翰认识一个出生于 04-21 的人。
但我无法理解其目的。
rdf - Property with blank node as range
When I define property in ontology, how would I define that range of this property is a "blank" node? For example I want to define property hasPhoneNumber
with domain Person
. Than I know that person can have more than one phone numbers, so instance of Person
will have blank node attached to hasPhoneNumber
property and then phone numbers attached to this blank node.
sparql - 带有空白节点的 Sparql 查询可能很复杂
我阅读了这篇博客文章,RDF 模型的问题:空白节点,其中提到使用空白节点会使数据处理复杂化。
你能举个例子,为什么使用空白节点很难执行 SPARQL 查询?我不明白空白节点的复杂性。你能解释一下存在变量的含义和语义吗?我不清楚 RDF 语义建议1.5 中给出的解释。空白节点作为存在变量。
rdf - 在耶拿规则中创建个人
我有很多人的本体,并使用 Jena 推理器来获取有关他们的信息。我的目标是根据规则内的给定信息创建新个体,并为他们分配属性。个人不必命名,但他们需要一个类型并且必须是一些属性的一部分。目前我可以创建匿名个人(在邮件列表帖子的帮助下),但我只能给他们一种类型或一种属性。
这是我的问题的一个小例子;我的规则是这样的(本体和推断结果可以在底部找到):
[test2: (?X rdf:type NS:Test1) ->
[(?Y rdf:type NS:Test2) <- makeSkolem(?Y, ?X)]]
这意味着当找到一个 Test1 个体时,将创建一个新的空白节点,然后将类型 Test2 赋予该节点。它工作正常,但我想给这个新个体一个分类和一个指向 ?X(Test1 个体)的指针(属性)。
像下面这样的东西是行不通的,因为“向后的规则只允许一个头子句”。但是,它的每个子句都可以正常工作。
[test2: (?X rdf:type NS:Test1) ->
[(?Y rdf:type NS:Test2), (?Y NS:hasClassification 'test'), <- makeSkolem(?Y, ?X)]]
这是我的本体:
这是第一条规则的结果(具有 ID 的空白节点A0
是A1
新个体):
php - EasyRDF:如何创建空白节点并设置 rdf:about 属性?
我正在使用EasyRdf在图中创建一些节点。我的问题是我正在尝试创建一个新的空白节点并为其设置一个rdf:about
指向正确资源的属性。
这段代码的问题在于它创建了一个新rdf:Description
节点,但我无法将其添加rdf:about
为属性。
我需要的是
我尝试添加rdf:about
为资源,但 W3C 验证器输出错误“ rdf:about is not allowed as an element tag here ”。
所以这行不通,也可能不是一个好主意。
创建新的空白节点时如何添加rdf:about
或您有什么其他建议?
java - 检索空白节点映射
我的小组目前正在开发一个点击界面,用于从 RDF 图中导航和提取信息。作为其中的一部分,我们使用 Jena 的 sparqlservice 方法连接到各种三重存储端点。为了移动用户当前正在查看的点,用户可以选择一个节点并将其作为中心。然后程序使用下面的表达式获取该节点的邻居:
其中 URI 是用户选择的节点(我们对文字做了一些稍微不同的事情)。然后按如下方式执行该表达式:
我们面临的问题是关于空白节点。当 Jena 从端点获得一个空白节点时,它会立即被分配一个 Jena bNode ID。这个 ID 不会和端点提供的 ID 相同,如果用户在客户端选择一个空白节点作为新的中心,这显然会引起问题。
因此,我的问题是:有什么方法可以在 Jena 中保留原始端点 ID?通过浏览 Jena 的腹部,我可以看到有几个ResultSet
类使用一个类来处理端点 ID 和 Jena ID 之间的映射,称为LabelToNodeMap
. 有没有办法检索这个映射?或者,阻止 Jena 使用其自己的 ID 架构,而是使用端点。
sparql - 带有可选部件的 SPARQL 更新
考虑以下 SPARQL 更新:
如果我不提供值(例如,在 Jena 的ParameterizedSparqlString.setIri()
for ?performer
、?singer
或?composer
中,此更新将不会插入带有相应对象的语句,这是预期的。
[] a mo:Composition
但是,如果?composer
丢失,我该如何压制。在第二个 INSERT 中创建它,其 WHERE 过滤器ISIRI(?composer)
似乎不是一个选项,因为该 INSERT 不会知道第一个已经创建的空白节点。
那么如何在单个 SPARQL 更新中支持这种可选参数呢?例如,有没有办法在两个 INSERT 之间“存储”空白节点?
sparql - DELETE/INSERT 操作可用于删除包含空白节点的三元组:如何?
我想使用 SPARQL DELETE/INSERT来确保在重复更新?performance
和某些连接的空白节点后没有多个属性值,而只有零(对于可选情况)或一个(对于强制情况)。
如果我将 DELETE/INSERT(见下文)发送到 Jena Fuseki 1.1.1 服务器,我会收到以下错误消息:“DELETE 模板中不允许有空白节点”。
但是,规范包含这句话:“DELETE/INSERT 操作可用于删除包含空白节点的三元组。”
那么在这种情况下,有效的 DELETE/INSERT 形式是什么?为便于维护,最好 DELETE 和 INSERT 部分可以保持结构相似。(这是一个后续问题。)