【问题标题】:sparql to retrieve the value of a min constraintsparql 检索最小约束的值
【发布时间】:2015-06-02 21:12:06
【问题描述】:

如何使用 sparql 检索类属性的最小约束?我有value min 1000 decimal,我想得到1000

【问题讨论】:

  • 您需要提供您编写的查询。基本上是您尝试过的以及您期望得到的。
  • 谢谢@Artemis,我根本不知道怎么做,我知道如何选择个人、对象和数据属性、范围和域,但我不知道如何找到类和属性的限制,我想有可能获得这些信息,但我没有找到如何

标签: sparql jena


【解决方案1】:

在一个假设的世界里,你有这样的陈述:

Class: X subClassOf: hasObjectProperty min 1 Y

如果您将 SPARQL 查询编写为:

SELECT *
WHERE { 
    ?s rdfs:subClassOf ?o.
}

您必须提取所有refs:subClassOf 公理。但是,如果您需要精确并知道哪些具有基数限制,则需要更进一步:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix : <http://example.com#>
SELECT *
WHERE { 
    ?s rdfs:subClassOf ?o.
    ?o ?x ?y.
filter(?s = :X)
}

其中,您可以看到以下结果:

如您所见,有 2 个相关项,一个是 Y,一个是显示为非负整数的数字。因此,获取每个项目的一种方法是在 SPARQL 查询中为?x 放置一个过滤器,并逐个获取。例如,过滤器owl:onClass 会给你?y:

prefix : <http://example.com#>
SELECT *
WHERE { 
    ?s rdfs:subClassOf ?o.
    ?o owl:onClass ?y.
filter(?s = :X)

【讨论】:

  • 非常感谢!你是一个救生员,我学到了一些新东西
【解决方案2】:

这是我在 Artemis 回答后使用的 sparql 查询

SELECT ?min
WHERE {?s rdfs:subClassOf ?o.
       ?o owl:minQualifiedCardinality ?min. 
       FILTER(?s = :value) }

对于jena,我使用getLiteral("min").getFloat();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-27
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 2010-12-05
    相关资源
    最近更新 更多