- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试自定义 Stardog 规则。自定义规则基本上如下所示:
@prefix rule: <tag:stardog:api:rule:> .
[] a rule:SPARQLRule ;
rule:content """
PREFIX : <http://url/draft#>
IF {
?x a :Person; :has_yob ?yob.
BIND (2014 - ?yob AS ?age)
}
THEN {
?x :has_age ?age
}
""" .
我已经使用以下 java 代码上传了这个 ttl 文件:
final Connection conn = ConnectionConfiguration.to("db_name").server("snarl").connect();
conn.begin();
conn.add().io().context(new URIImpl("http://url/rules")).file(ttlFile);
conn.commit();
因为我想将规则保存在单独的图表中,所以我在 http://url/rules
中加载了规则三元组。图形。默认图形,表示为 tag:stardog:api:context:default
在 Stardog 中,包含本体公理。当我使用以下 SPARQL 查询时,Stardog 规则按预期工作:
PREFIX : <http://url/draft#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?s ?age
FROM <tag:stardog:api:context:default>
FROM <http://url/rules>
FROM NAMED <http://url/datasource>
WHERE {
?s rdf:type :Person .
?s :has_age ?age .
}
您现在可能想知道出了什么问题。我想我对 FROM 和 FROM NAMED 子句的理解有误。当我离开FROM <http://url/rules>
在查询之外,我希望查询没有结果。然而,我仍然得到与原始查询一样的结果。这怎么可能?这就是我对这些条款的看法:
FROM <tag:stardog:api:context:default>
:使用来自的本体公理默认图FROM <http://url/rules>
: 使用这里的规则特定查询FROM NAMED <http://url/datasource>
: 实际数据需要查询的所以我重复我的问题,当我将第二个 FROM 子句排除在 SPARQL 查询之外时,为什么我得到了正确的结果?仅供引用,我一直使用推理类型 SL。
在@user1538695 回答后编辑
当我在模式 (TBox) 中保留规则时,我仍然必须添加 FROM <tag:stardog:api:context:default>
在我的查询中。我只想查询一个命名图并使用模式进行推理。如果不必明确提及默认图形(模式),这难道不是可能的吗?这就是我当前的查询:
PREFIX : <http://url/draft#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?s ?age
FROM <tag:stardog:api:context:default>
FROM <http://url/datasource>
WHERE {
?s rdf:type :Person .
?s :has_age ?age .
}
最佳答案
首先,对FROM NAMED 子句存在误解。 FROM NAMED 子句指定将用于匹配 GRAPH 子句中的图形模式的命名图形。如果您的查询没有 GRAPH 子句,则 FROM NAMED 将无效。
其次,Stardog 将规则视为模式的一部分,并且数据库的模式通过 reasoning.schema.graphs
数据库选项固定。无论您的查询使用什么 FROM 或 FROM NAMED 子句,所使用的模式公理和规则都是相同的。 FROM 或 FROM NAMED 子句将仅确定实例将从中匹配到查询的命名图。
最后,Stardog 2.x 中 reasoning.schema.graphs 的默认值是默认图(在 Stardog 3.0 中,默认值更改为所有图)因此命名图中的任何公理或规则都将被忽略,除非您更改此选项。但是还有 query.all.graphs
配置选项指示 Stardog 使用所有图的并集作为默认图。因此,使用 reasoning.schema.graphs=default
但更改 query.all.graphs
也会间接更改架构图。
根据此信息,如果您仍然没有得到预期的答案,您应该整理一个最小示例并将其发送到 Stardog 邮件列表。
关于java - 触发 Stardog 规则的 SPARQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29145032/
我在问自己一个问题:我有一个 .ttl 文件存储在互联网上的某个地方(比如说 http://www.example/org/myFile ),我想查询它。 我可以用Stardog查询吗?类似于(在 n
我在 Stardog 中创建了一个自定义聚合函数来计算标准差。当您将 SPARQL 查询发布到端点或通过管理控制台中的查询面板时,这非常有用。 到目前为止,一切顺利,但我们面临一些问题。首先,当我们执
我正在使用 java 在 stardog 中创建一个新数据库。 当我创建数据库并在本地主机中导入 RDF 文件时,它的工作正常。 但是当我在远程服务器中创建数据库时,我收到同一 RDF 文件的文件未找
我可以使用以下 CLI 命令将自定义规则添加到 Stardog 中的命名图表: stardog data add db_name -g "http://graph_name"/path/to/rule
我正在使用 Stardog 来存储一堆来自不同来源的三元组。我使用 Jena 收集数据并将其合并到单个 Jena 图中。所有这些三元组都是 ABox 的一部分。 我不确定 Stardog 是否会要求
几周前它运行良好,但现在我在使用 stardog-admin.bat server start 启动服务器时遇到问题。当我这样做时,出现以下错误: WARNING: An illegal reflec
看一下下面的代码。1.我正在创建一个到stardog的连接池 2. 从池中获取连接。3、使用完毕后将连接归还到池中。 我的问题是,如果我执行 aConn.close() 而不是返回到池中,会发生什么。
所以我已经将这个.rdf加载到Stardog上然后我使用 Pubby跑过码头,浏览三重商店。 在我的 rdf 文件中,我有几个空白节点,stardog 为其赋予了空白节点标识符。这是 rdf 文件的一
我正在使用 RDFLib Python 库来操作 Stardog 数据库。如何添加空白节点?我正在尝试g.add((BNode(),FOAF.knows,Literal('amy'))) ,但我收到异
我正在尝试做一些非常简单的事情:连接到数据库,读取一些记录,并将它们显示在一个漂亮的界面中。 到目前为止,我所做的只是使用以下代码启动和停止服务器: Server aServer = Stardog
我正在尝试自定义 Stardog 规则。自定义规则基本上如下所示: @prefix rule: . [] a rule:SPARQLRule ; rule:content """ PREFIX
我有一个 SPARQL 查询,它在启用推理时在 Stardog 查询面板中返回结果,但在禁用时不返回结果。当我尝试使用 SPARQLwrapper 通过 python 进行查询时,我没有得到任何结果。
我是一个 Linux super 新手,所以让我们来分解一下。我正在关注these instructions但它似乎仍然不起作用。 我的 stardog.conf 文件如下所示: descriptio
我无法在 Sesame 2.8.1 存储库的帮助下将 Topbraid Composer 4.6.3 连接到 Stardog 3.0。这些是我正在执行的步骤: 创建新的 RDF/OWL Sesame2
我刚刚下载了 Stardog,并尝试在我的机器 (Mac OS X 10.14.2) 上运行它。 我使用 ZSH shell 并在我的 .zshrc 文件中添加了以下两行: export STARDO
我正在尝试使用 graphql 查询 stardog 服务器,下面是我的代码。 import { GraphQLSchema, GraphQLObjectType, GraphQLInt,
我正在尝试将我的应用程序与 stardog 集成。该应用程序已通过 sesame RemoteRepository 接口(interface)访问 Java 中的其他 RDF 存储库。 Stardog
尝试从 Node JS 应用程序查询本地运行的 Stardog 数据库。 查询在 Stardog 界面中运行时返回结果。 在 Node 中运行它时,返回 null 和错误的 promise 会搞砸。
正如标题所说,我正在尝试使用来自 visualstudio 的 SPARQL 查询来创建三元组。在 stardog studio 中使用相同的 SPARQL 查询是可行的,但是当我尝试使用 stard
我是一名优秀的程序员,十分优秀!