rdf - RDF 与海龟的文本表示

标签 rdf turtle-rdf

我想用 Turtle 制作 RDF 图的文本表示。以蜘蛛侠和绿魔之间的关系为例。请参阅此处的引用https://www.w3.org/TR/turtle/

@base <http://example.org/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rel: <http://www.perceive.net/schemas/relationship/> 

<#green-goblin>
    rel:enemyOf <#spiderman> ;
    a foaf:Person ;    # in the context of the Marvel universe
    foaf:name "Green Goblin" .
<#spiderman>
    rel:enemyOf <#green-goblin> ;
    a foaf:Person ;
    foaf:name "Spiderman", "Человек-паук"@ru .

“蜘蛛侠”和俄语单词之间的逗号 (,) 是什么意思?

另一个更重要的问题是:随着时间的推移,我如何才能对一个城市和一个国家做到这一点?例如:莱比锡在 1990 年之前一直属于东德。如今莱比锡是德国的一座城市。

最佳答案

这里似乎是两个非常不同的问题。一篇关于语法,一篇关于建模。

对于语法问题,我建议查看 Turtle - Terse RDF Triple Language 。 Turtle 指定了三元组,这需要在三元组规范中包含三个实体。 . 指定三元组的结尾。作为快捷方式,; 意味着当前的主语被转移到下一个三元组规范 - 因此只需要指定谓词和宾语。 , 表示主体客体 被转移到下一个三元组。因此,

<#spiderman> foaf:name "Spiderman", "Человек-паук"@ru .

指定两个三元组:

<#spiderman> foaf:name "Spiderman" .
<#spiderman> foaf:name "Человек-паук"@ru .

一个建模问题,要指定莱比锡在不同时期的不同国籍,请指定一个属性,例如具有 fromDate 属性的 isMemberOfCountry >迄今为止。然后将填充国家/地区成员资格的每个实例:

@prefix ex: <http://example.org/geoex/> 
ex:Leipzig
  ex:isMemberOfCountry [
      ex:country ex:DDR ;
      ex:fromDate 1945 ;
      ex:toDate 1990 ;
    ] ;
  ex:isMemberOfCountry [
      ex:country ex:Germany ;
      ex:fromDate 1990 ;
    ] .

使用 Bnode 来确保名称可能无关紧要的对象在整个数据集中的唯一名称(如果重要,则指定一个对象来代替 bnode)。然后要查询当前国家/地区,请使用:

SELECT ?country
WHERE {
   ex:Leipzig ex:isMemberOfCountry ?member .
   ?member ex:country ?country .
   FILTER NOT EXISTS {
      ?member ex:toDate ?d
   }
}

要查找特定年份的成员资格,请使用以下命令:

SELECT ?country
WHERE {
 BIND("1991"^^xsd:integer AS ?date) #placeholder - ?date should be passed into the query
    ex:Leipzig ex:isMemberOfCountry ?member .
    ?member ex:country ?country .
    ?member ex:fromDate ?fdate .
    OPTIONAL {?member ex:toDate ?td}
    BIND(IF(bound(?td), ?td, year(now())) AS ?edate)
    FILTER (?date >= ?fdate && ?date <= ?edate)
}

请注意,将 ?date 绑定(bind)到 1990 将产生两个结果,鉴于此示例模型中使用的是年份而不是日期,这是正确的。

关于rdf - RDF 与海龟的文本表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36378962/

相关文章:

graph - 使用 SPARQL 计算自定义直方图指标以了解图结构

c++ - 使用Raptor RDF Parser Toolkit生成FOAF rdfxml文件

java - 我如何在 JRuby 中使用 Sesame 的 RDFXMLParser?

schema - 如何根据模式验证 JSON-LD?

python - 如何向 SPARQL 查询添加外部变量?

owl - 猫头鹰成员 :Class versus owl:NamedIndividual

xml - 使用 Java 从 URL 下载 XML/RDF 文件

php - 如何使用 Turtle sparql php

java - 耶拿从海龟中读取失败

owl - rdfs :domain and rdfs:range mean? 是什么意思