繁体   English   中英

在RDF和OWL / WOL中,简单的JSON对象格式是什么样的?

[英]What does simple JSON object format look like in RDF and OWL/WOL?

我有以下JSON对象...

var people = [
  {"LName": "Smith", "FName": "Jane", "Gender": "Female", "Age": 20},
  {"LName": "Doe", "FName": "John", "Gender": "Male", "Age": 40},
  {"LName": "Smith", "FName": "Mary", "Gender": "Female", "Age": 29}
];

请注意,以上表示只是“第一范式(1NF)”,表示三(3)个非规范化对象,其中每个对象都是“ People”表中的行,其列名称为“ LName”,“ FName”,“ Gender”和“年龄”。

鉴于以上所述,以上内容在转换/转换为OWL / WOL后会是什么样?

没有单一的方法可以做到这一点。 可以以多种方式在RDF或OWL中对相同信息进行编码。 这完全取决于您要编码和保留的信息类型。 如果只需要有关三个人的信息,则可以使用FOAF词汇对信息进行编码。 或者,如果您想保留JSON语义,则可以使用JSON结构的编码。 或者,您可以定义具有所需属性的本体,并根据该本体进行编码。 这是前两种方法的外观。 当然,您显然可以提出其他建议。

在FOAF中

如果使用FOAF词汇表(严格来说,它不是OWL,而是定义了RDF词汇表),则可能会得到如下所示的结果:

在N3中

prefix foaf: <http://xmlns.com/foaf/0.1/>

[] a foaf:Person ;
   foaf:firstName "Smith" ;
   foaf:lastName "Jane" ;
   foaf:gender "Female" ;
   foaf:age 20 .

[] a foaf:Person ;
   foaf:firstName "Doe" ;
   foaf:lastName "John" ;
   foaf:gender "Male" ;
   foaf:age 40 .

[] a foaf:Person ;
   foaf:firstName "Smith" ;
   foaf:lastName "Mary" ;
   foaf:gender "Female" ;
   foaf:age 29 .

在RDF / XML中

<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:foaf="http://xmlns.com/foaf/0.1/">
  <foaf:Person>
    <foaf:firstName>Smith</foaf:firstName>
    <foaf:lastName>Mary</foaf:lastName>
    <foaf:gender>Female</foaf:gender>
    <foaf:age rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"
    >29</foaf:age>
  </foaf:Person>
  <foaf:Person>
    <foaf:firstName>Doe</foaf:firstName>
    <foaf:lastName>John</foaf:lastName>
    <foaf:gender>Male</foaf:gender>
    <foaf:age rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"
    >40</foaf:age>
  </foaf:Person>
  <foaf:Person>
    <foaf:firstName>Smith</foaf:firstName>
    <foaf:lastName>Jane</foaf:lastName>
    <foaf:gender>Female</foaf:gender>
    <foaf:age rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"
    >20</foaf:age>
  </foaf:Person>
</rdf:RDF>

JSON编码

如果您想保留更多的JSON信息(例如,您有一个数组,它具有三个元素等),则可以执行以下操作:

在N3中

prefix json: <urn:json:>

[] a json:Array ;
   json:elements (
     [ json:hasProperty [ json:propertyName "LName" ;
                          json:propertyValue "Smith" ] ,
                        [ json:propertyName "FName" ;
                          json:propertyValue "Jane" ] ,
                        [ json:propertyName "Gender" ;
                          json:propertyValue "Female" ] ,
                        [ json:propertyName "Age" ;
                          json:propertyValue 20 ] ]
     [ json:hasProperty [ json:propertyName "LName" ;
                          json:propertyValue "Dow" ] ,
                        [ json:propertyName "FName" ;
                          json:propertyValue "John" ] ,
                        [ json:propertyName "Gender" ;
                          json:propertyValue "Male" ] ,
                        [ json:propertyName "Age" ;
                          json:propertyValue 40 ] ]
     [ json:hasProperty [ json:propertyName "LName" ;
                          json:propertyValue "Smith" ] ,
                        [ json:propertyName "FName" ;
                          json:propertyValue "Mary" ] ,
                        [ json:propertyName "Gender" ;
                          json:propertyValue "Female" ] ,
                        [ json:propertyName "Age" ;
                          json:propertyValue 29 ] ] 
   ) .

在RDF / XML中

<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:json="urn:json:">
  <json:Array>
    <json:elements rdf:parseType="Collection">
      <rdf:Description>
        <json:hasProperty rdf:parseType="Resource">
          <json:propertyName>LName</json:propertyName>
          <json:propertyValue>Smith</json:propertyValue>
        </json:hasProperty>
        <json:hasProperty rdf:parseType="Resource">
          <json:propertyName>FName</json:propertyName>
          <json:propertyValue>Jane</json:propertyValue>
        </json:hasProperty>
        <json:hasProperty rdf:parseType="Resource">
          <json:propertyName>Gender</json:propertyName>
          <json:propertyValue>Female</json:propertyValue>
        </json:hasProperty>
        <json:hasProperty rdf:parseType="Resource">
          <json:propertyName>Age</json:propertyName>
          <json:propertyValue rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"
          >20</json:propertyValue>
        </json:hasProperty>
      </rdf:Description>
      <rdf:Description>
        <json:hasProperty rdf:parseType="Resource">
          <json:propertyName>LName</json:propertyName>
          <json:propertyValue>Dow</json:propertyValue>
        </json:hasProperty>
        <json:hasProperty rdf:parseType="Resource">
          <json:propertyName>FName</json:propertyName>
          <json:propertyValue>John</json:propertyValue>
        </json:hasProperty>
        <json:hasProperty rdf:parseType="Resource">
          <json:propertyName>Gender</json:propertyName>
          <json:propertyValue>Male</json:propertyValue>
        </json:hasProperty>
        <json:hasProperty rdf:parseType="Resource">
          <json:propertyName>Age</json:propertyName>
          <json:propertyValue rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"
          >40</json:propertyValue>
        </json:hasProperty>
      </rdf:Description>
      <rdf:Description>
        <json:hasProperty rdf:parseType="Resource">
          <json:propertyName>LName</json:propertyName>
          <json:propertyValue>Smith</json:propertyValue>
        </json:hasProperty>
        <json:hasProperty rdf:parseType="Resource">
          <json:propertyName>FName</json:propertyName>
          <json:propertyValue>Mary</json:propertyValue>
        </json:hasProperty>
        <json:hasProperty rdf:parseType="Resource">
          <json:propertyName>Gender</json:propertyName>
          <json:propertyValue>Female</json:propertyValue>
        </json:hasProperty>
        <json:hasProperty rdf:parseType="Resource">
          <json:propertyName>Age</json:propertyName>
          <json:propertyValue rdf:datatype="http://www.w3.org/2001/XMLSchema#integer"
          >29</json:propertyValue>
        </json:hasProperty>
      </rdf:Description>
    </json:elements>
  </json:Array>
</rdf:RDF>

它可以采用多种形式,具体取决于您要如何对数据建模。

例如,您可以决定使用一些现有的词汇或本体(例如FOAF),或者创建自己的自制本体-在这种情况下,您可以选择定义对所涉及属性的限制(例如,功能,类型等)。 ),甚至提供其他规则以允许在分析数据时采用不同形式的推理(例如,将具有“女性”性别的人自动分类为Female类别)。

但是,通常,在创建本体时,您需要使用两个“部分”:定义模型的各种限制/类/属性的术语(TBox),以及根据实例化事物的断言(ABox)。该模型。

跳过以上大部分内容(某些基本属性限制除外)的裸露骨头表示(使用Turtle语法)可能看起来像这样:

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix : <http://foo.bar#> .

# TBox
:Person a owl:Class .

:first_name a owl:DatatypeProperty;
  rdfs:domain :Person;
  rdfs:range xsd:string .

:last_name a owl:DatatypeProperty;
  rdfs:domain :Person;
  rdfs:range xsd:string .

:gender a owl:DatatypeProperty;
  rdfs:domain :Person;
  rdfs:range xsd:string .

:age a owl:DatatypeProperty;
  rdfs:domain :Person;
  rdfs:range xsd:integer .

# ABox

:person_1 a :Person;
  :last_name "Smith;
  :first_name "Jane";
  :gender "female";
  :age 20.

:person_2 a :Person;
  :last_name "Doe;
  :first_name "John";
  :gender "male";
  :age 40.

:person_3 a :Person;
  :last_name "Smith;
  :first_name "Mary";
  :gender "female";
  :age 29.

作为进一步建模的示例,您可以决定:gender只能采用值“ female”或“ male”。 在这种情况下,定义:gender的另一种方法是:

:gender a owl:DatatypeProperty;
  rdfs:range  [
    a rdfs:Datatype;
      owl:oneOf ( "Female" "Male")
  ] .

我想您也可以将gender定义为功能属性(每个Person实例只有一个唯一值)。

暂无
暂无

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

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