【问题标题】:How to get data type property values using SPARQL如何使用 SPARQL 获取数据类型属性值
【发布时间】:2010-06-08 07:08:42
【问题描述】:

我在 protege 中创建了一些示例本体。根据我的本体,有一个名为 person 的类,它有一个名为 Student 的子类。有一些学生个体(john、paul、marry、...)。 我已经定义了一些名为“email”的数据属性并分配了他们的电子邮件地址。

以下查询导致本体中的所有个体。但我想获取每个个体及其电子邮件地址。

String queryStr =
    "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "+
    "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>  "+
    "select   ?ind "+
    "where { "+
    "?ind  rdf:type <http://www.semanticweb.org/ontologies/2010/5/Ontology1275975684120.owl#Student> ;"+

"}\n ";

以上查询在 eclipse IDE 中的 jena 上进行了测试。

有什么想法吗?

提前致谢!

【问题讨论】:

    标签: sparql


    【解决方案1】:

    要获取电子邮件地址,您需要 1) 为它们添加一个变量到 SELECT 行,以及 2) 在 WHERE 模式中绑定该变量。而且您可能希望为您自己的本体添加一个前缀,因为您现在需要引用它两次。比如:

    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    PREFIX my: <http://www.semanticweb.org/ontologies/2010/5/Ontology1275975684120.owl#>
    
    SELECT ?ind ?email
    WHERE {
      ?ind rdf:type my:Student .
      ?ind my:Email ?email
    }
    

    【讨论】:

    • :: 我根据你的回答得到了结果!祝你有美好的一天!非常感谢!
    【解决方案2】:

    更紧凑的方式如下:

    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    PREFIX my: <http://www.semanticweb.org/ontologies/2010/5/Ontology1275975684120.owl#>
    
    SELECT ?ind ?email 
    WHERE { 
           ?ind rdf:type my:Student ;
                my:Email ?email .
         }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-07
      • 1970-01-01
      • 2012-01-11
      • 2023-03-13
      • 1970-01-01
      相关资源
      最近更新 更多