如何在给定 ontology 中获取未定义 rdfs:range 的数据类型属性
How to get, in a given ontology, the datatype properties without a defined rdfs:range
我需要在给定的 ontology 中通过 SPARQL 查询检查未定义 rdfs:range 的数据类型属性。例如,在下面的代码中,我要查找的结果是 dataproperty2
.
ont:Class1 a owl:Class .
ont:Class2 a owl:Class .
ont:dataProperty1 a owl:DatatypeProperty ;
rdfs:domain ont:Class1 ;
rdfs:label "dataProperty1"@en ;
rdfs:range xsd:string .
ont:dataProperty2 a owl:DatatypeProperty ;
rdfs:domain ont:Class2 ;
rdfs:label "dataProperty2"@en .
我已经定义了这个 SPARQL 查询来检索与此条件匹配的属性的数量,但是由于是一个聚合函数,即 COUNT,我在获取数据类型属性而不是数字时遇到了问题,没有 rdfs:range 定义。
SELECT ?return WHERE
{
{
SELECT (COUNT(?p) as ?pCount)
WHERE
{
?p rdf:type owl:DatatypeProperty .
?p rdfs:range ?range .
}
}
{
SELECT DISTINCT (COUNT(?p) as ?prop)
WHERE
{
?p rdf:type owl:DatatypeProperty .
}
}
BIND((?prop - ?pCount) as ?return)
}
只是 select 数据类型属性,然后过滤掉没有范围属性的那些:
select ?p where {
?p a owl:DatatypeProperty
filter not exists {
?p rdfs:range ?range
}
}
我需要在给定的 ontology 中通过 SPARQL 查询检查未定义 rdfs:range 的数据类型属性。例如,在下面的代码中,我要查找的结果是 dataproperty2
.
ont:Class1 a owl:Class .
ont:Class2 a owl:Class .
ont:dataProperty1 a owl:DatatypeProperty ;
rdfs:domain ont:Class1 ;
rdfs:label "dataProperty1"@en ;
rdfs:range xsd:string .
ont:dataProperty2 a owl:DatatypeProperty ;
rdfs:domain ont:Class2 ;
rdfs:label "dataProperty2"@en .
我已经定义了这个 SPARQL 查询来检索与此条件匹配的属性的数量,但是由于是一个聚合函数,即 COUNT,我在获取数据类型属性而不是数字时遇到了问题,没有 rdfs:range 定义。
SELECT ?return WHERE
{
{
SELECT (COUNT(?p) as ?pCount)
WHERE
{
?p rdf:type owl:DatatypeProperty .
?p rdfs:range ?range .
}
}
{
SELECT DISTINCT (COUNT(?p) as ?prop)
WHERE
{
?p rdf:type owl:DatatypeProperty .
}
}
BIND((?prop - ?pCount) as ?return)
}
只是 select 数据类型属性,然后过滤掉没有范围属性的那些:
select ?p where {
?p a owl:DatatypeProperty
filter not exists {
?p rdfs:range ?range
}
}