【问题标题】:In SPARQL, can I distinguish between relationships and property keys?在 SPARQL 中,我可以区分关系和属性键吗?
【发布时间】:2014-02-05 21:41:22
【问题描述】:

在 Neo4j 快速查询窗格中,有“关系类型”和“属性键”,它们在 Neo4j cypher 查询语法的上下文中是有意义的。

在 SPARQL 中,有没有办法区分作为关系的三元组和作为属性的三元组?

我想一些示例数据可能如下所示:

<actor12> <http://some.ontology.com/#ActedIn> <movie45>           #relationship
<movie45> <http://some.ontology.com/#title> “Gone with the Wind"  #property key/val

【问题讨论】:

    标签: rdf sparql semantics rdfs triples


    【解决方案1】:

    SPARQL一种针对特定数据模型的查询语言,由 RDF 数据定义。通常用于查询RDFOWL数据。

    RDF 定义了properties,但没有在对象引用属性数据引用属性中区分它们。您可以通过检查它们的范围来间接区分它们。如果它们的范围是XSD 属性,那么您可以推断它是一个数据引用属性。

    OWL 实际上对这两种属性进行了形式上的区分。它们被称为 object propertiesdata properties。因此,如果您使用 OWL 数据模型,您可以直接通过其 OWL 类来识别属性的类型。你称之为“关系类型”的那些实际上是“对象属性”,而你称之为“属性键”的那些是 OWL 术语中的“数据属性”。它们分别被标识为owl:ObjectPropertyowl:DatatypeProperty类的实例。

    希望我能帮上忙!

    【讨论】:

      【解决方案2】:

      您可以通过测试对象是否为文字来检查数据:

         ?s ?p ?o 
         FILTER (isLiteral(?o) )
      

      【讨论】:

      • 你能详细说明一下吗?
      • @Kristian 您所称的属性键将 RDF 文字作为值,而不是 URI 或空白节点。如果搜索 ?s ?p ?o 并且只接受 ?o 是文字的匹配项,那么每个 ?p 将是一个数据类型属性(在 OWL 中)。实际上,这并不完全正确,因为注解属性也可以具有字面值,但想法是存在的:如果您查找具有字面值的属性,那么您会找到具有字面值的属性。
      【解决方案3】:

      Pantelis Natsiavas 正确地points out 在 OWL 中您可以区分对象和数据类型属性。您询问了如何在 SPARQL 中执行此操作。 owl:DatatypePropertyowl:ObjectProperty 是 RDFS 类,因此您可以查询事物是否是它们的实例。例如,您可以向 DBpedia 索取数据属性:

      select ?property where { 
       ?property a owl:DatatypeProperty
      }
      limit 10 
      

      SPARQL results

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-01
        • 2018-09-27
        • 2017-12-27
        • 1970-01-01
        • 2020-08-08
        相关资源
        最近更新 更多