繁体   English   中英

哪个 SPARQL 查询将返回示例中的数据?

[英]What SPARQL query will return the data from the example?

在我的 RDF 商店中,我有以下三元组

对于模式:

ex:animal rdf:type rdf:Class;
    rdfs:subClassof ex:Package_animal.

ex:height rdf:type rdf:Property;
    rdfs:label "height";
    rdfs:domain ex:animal.

ex:age rdf:type rdf:Property;
    rdfs:label "age";
    rdfs:domain ex:animal.

ex:NumberOfLegs rdf:type rdf:Property;
    rdfs:label "NumberOfLegs";
    rdfs:domain ex:animal.

为实例:

ex:dog rdf:type ex:animal;
    ex:height "10";
    ex:age "2";
    ex:NumberOfLegs "4".

ex:cat rdf:type ex:animal;
    ex:height "10";
    ex:age "3";
    ex:NumberOfLegs "4".

我想要:

  1. 获取 class 的属性ex:animal
ex:height 
ex:age
ex:NumberOfLegs
  1. 获取 class ex:animal的实例 ex:dog 及其所有属性
ex:dog rdf:type ex:animal
ex:dog ex:height "10"
ex:dog ex:age "2"
ex:dog ex:NumberOfLegs "4"
  1. 我认为的 SPARQL 是:
SELECT ?s
WHERE
{
   ?p rdf:type rdf:Property.
   ?s ?p ?y.
   ?s rdf:type ex:dog.
}

这个查询

SELECT ?propertyName ?value
WHERE
{
    ex:dog ?propertyName ?value.
}

会给你这个结果

propertyName    value
rdf:type        ex:animal
ex:height       "10"
ex:age          "2"
ex:NumberOfLegs "4"

你可以绑定ex:dog URI 如果你想在结果中

SELECT ?dog ?propertyName ?value
WHERE
{
    BIND(ex:dog as ?dog).
    ?dog rdf:type ex:animal.
    ?dog ?propertyName ?value.
}

这将产生

dog     propertyName     value
ex:dog  rdf:type         ex:animal
ex:dog  ex:height        "10"
ex:dog  ex:age           "2"
ex:dog  ex:NumberOfLegs  "4"

如果你想获取ex:animal的所有属性,你需要更改你的数据。 我编辑了您的问题,因此它包含如下所示的数据。 对于方案知识:

   ex:animal rdf:type rdf:Class;
      rdfs:subClassof ex:Package_animal.

   ex:height rdf:type rdf:Property;
      rdfs:label "height";
      rdfs:domain ex:animal.

   ex:age rdf:type rdf:Property;
      rdfs:label "age";
      rdfs:domain ex:animal.

   ex:NumberOfLegs rdf:type rdf:Property;
      rdfs:label "NumberOfLegs";
      rdfs:domain ex:animal.

实例知识:

   ex:dog rdf:type ex:animal;
      ex:height "10";
      ex:age "2";
      ex:NumberOfLegs "4".

   ex:cat rdf:type ex:animal;
      ex:height "10";
      ex:age "3";
      ex:NumberOfLegs "4".

然后您可以使用此 SPARQL 查询:

SELECT ?dog ?animalPropertyName ?value
WHERE
{
    ?animalPropertyName rdfs:domain ex:animal.
    
    BIND(ex:dog as ?dog).  
    ?dog ?animalPropertyName ?value.
}

这将产生

dog     animalPropertyName  value
ex:dog  ex:height           "10"
ex:dog  ex:age              "2"
ex:dog  ex:NumberOfLegs     "4"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM