【问题标题】:Make a query in SPARQL with DataType Property在 SPARQL 中使用 DataType 属性进行查询
【发布时间】:2017-10-17 14:53:42
【问题描述】:

我正在使用本体 OWL 并对其进行查询。

我的查询是:

“前缀a:http://www.owl-ontologies.com/Indoor.owl#” +“选择?X” + "WHERE { ?X a:hasDay a:" + day + " ." + " ?X a:hasRoom a:" + 房间 + " . " + " ?X a:hasStartTime a:" + startTime +" }";

在进行查询的那一刻,NetBeans 的控制台抛出了我:

查询中使用的未定义对象属性:http://www.owl-ontologies.com/Indoor.owl#hasStartTime

但是本体中的 hasStartTime 不是对象属性,而是数据类型(int)。

【问题讨论】:

    标签: sparql


    【解决方案1】:

    假设 Java 变量 startTime 的值为例如420(早上 7 点),如果您查看您的 SPARQL 查询,最后一个三元组模式是由

    ?X a:hasStartTime a:加上``startTime,

    即结果是

    ?X a:hasStartTime a:420

    RDF 文字必须放在不带前缀的引号中 - 它是文字而不是带前缀的 URI,例如

    ?X a:hasStartTime 420

    或者使数据类型更明确(对于整数值,上面只是一个快捷方式)

    ?X a:hasStartTime "420"^^<http://www.w3.org/2001/XMLSchema#integer>

    【讨论】:

    • hasStarTime 是一个整数(实际上是一个时间但是以分钟为单位,例如早上 7 点 = 420),hasStartTime 的数据只是一个整数。
    • 好的,但不会改变您的错误原因。我只是举了一个文字值的例子,因为你没有显示你的数据问题仍然存在,你在文字值之前加上了一个前缀。我可以调整我的答案。
    • 我更改了查询:查询是 PREFIX a: owl-ontologies.com/Indoor.owl#> SELECT ?X WHERE { ?X a:hasDay a:Thursday 。 ?X a:hasRoom a:卧室。 ?X a:hasStartTime 528 }
    • 查询正常吗?如果 hasStartTime 是整数?谢谢你的回答。
    • 语法上没问题。我不知道它是否与您的数据匹配,但您不应该简单地尝试一下吗?我的意思是你有代码和数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多