sparql 检索最小约束的值

sparql to retrieve the value of a min constraint

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

在假设的世界里你有这样的说法:

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)

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

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

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