【问题标题】:Get structure of RDF graph by SPARQL query通过 SPARQL 查询获取 RDF 图的结构
【发布时间】:2017-10-04 09:08:26
【问题描述】:

我怎样才能只获得代表图形结构的三元组 - 类和属性层次结构(即没有个人、属性值)?

【问题讨论】:

  • 对于类层次结构:CONSTRUCT WHERE {?sub rdfs:subClassOf ?sup } 类似于使用谓词 rdfs:subPropertyOf 的属性层次结构
  • 或一次查询:CONSTRUCT { ?s ?p ?o . } WHERE { VALUES ?p { rdfs:subClassOf rdfs:subPropertyOf } ?s ?p ?o }
  • 谢谢,但似乎我还需要 rdf:type, owl:class :domain :range 三元组。
  • 好的,但是您要求提供类层次结构...然后只需将其他三元组添加到 CONSTRUCT 查询中:CONSTRUCT { ?s ?p ?o . } WHERE { VALUES ?p { rdfs:subClassOf rdfs:subPropertyOf rdfs:domain rdfs:range} ?s ?p ?o } 我不明白您为什么需要 <cls> rdf:type owl:Class 三元组。但是,如果您需要,也可以使用 UNION 将其添加到 CONSTRUCT 查询中

标签: sparql rdf rdfs


【解决方案1】:

看来我需要 rdf:type、owl:class 等三元组。这就是我的变种:

PREFIX rdfs:    <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl:     <http://www.w3.org/2002/07/owl#>

select ?s ?p ?o 
where
{
    {
        graph <http://graph.org/gr>
        {       
            ?s rdf:type ?o.
            ?s ?p ?o.
        }
        FILTER
            (?o IN (owl:Class, owl:DatatypeProperty, owl:AnnotationProperty, owl:ObjectProperty, owl:DataRange, owl:Ontology,
            owl:DataRange,owl:DeprecatedClass,owl:DeprecatedProperty,owl:OntologyProperty,rdfs:Class,owl:Restriction,owl:InverseFunctionalProperty,
            owl:FunctionalProperty,owl:AllDisjointClasses,rdf:Property, rdfs:Datatype )
            )
}
UNION
{
        graph <http://graph.org/gr>
        {
            ?s ?p ?o.
        }
        FILTER
            (?p IN (rdfs:subClassOf,rdfs:subPropertyOf,rdfs:domain,rdfs:range,rdfs:label,rdfs:comment,rdfs:member,
            rdf:first,rdf:rest,owl:allValuesFrom,owl:someValuesFrom,owl:AnnotationProperty,owl:equivalentClass,
            owl:equivalentProperty,owl:hasValue,owl:OntologyProperty,owl:SymmetricProperty,owl:TransitiveProperty,
            owl:versionInfo,owl:priorVersion,owl:oneOf,owl:maxCardinality,owl:minCardinality,owl:inverseOf,
            owl:incompatibleWith,owl:intersectionOf,owl:imports,owl:backwardCompatibleWith,owl:AllDifferent,
            owl:differentFrom,owl:disjointWith,owl:distinctMembers,owl:complementOf,owl:cardinality,owl:unionOf,owl:onProperty))
        }
}

【讨论】:

  • 下次应该在你的问题中澄清这一点。这听起来更像是在查询 OWL 本体的所有模式公理。您仍然缺少 ?p rdf:type owl:FunctionalProperty 等公理。
  • 此外,您要求三元组,因此,我不明白您为什么使用 SELECT 查询。
  • 抱歉,我把三元组和解决方案混淆了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多