最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

语义web一些简单示例

IT圈 admin 2浏览 0评论

语义web一些简单示例

语义web一些简单示例

示例1 (xml部分-用xml描述书籍信息)

题目:写出三本书,每本书有:标题,作者,出版社,出版日期,,,,,;写出对应的XML文件;根据你写的XML文件,写出对应的DTD文件和XML Schema文件;进行XPath查询(这个比较简单)

  • xml文件(book.xml)

    <bookList><book><book_title id="book1">红楼梦</book_title><book_author>曹雪芹</book_author><book_press>人民文学出版社</book_press><book_press_date>2020年</book_press_date></book><book><book_title>三体1:地球往事</book_title><book_author>刘慈欣</book_author><book_press>重庆出版社</book_press><book_press_date>2008年01月01日</book_press_date></book><book><book_title>时间简史</book_title><book_author>霍金</book_author><book_press>湖南科学技术出版社</book_press><book_press_date>1988年</book_press_date></book>
    </bookList>
    
  • dtd使用(book.dtd)

    <?xml version="1.0" endcoding="UFT-8"?>
    <!ELEMENT bookList>
    <!ELEMENT book>
    <!ELEMENT proudect (book_title,book_author,book_press,book_press_date)>
    <!ELEMENT book_title (#PCDATA)>
    <!ELEMENT book_author (#PCDATA)>
    <!ELEMENT book_press (#PCDATA)>
    <!ELEMENT book_press_date (#PCDATA)>
    
  • XML Schema (book.xsd)

    <?xml version="1.0" encoding="UTF-8" ?>
    <xs:schema xmlns:xs=""><!-- 属性的定义 --><xs:attribute name="id" type="xs:string"/><!-- 简易元素的定义--><xs:element name="book_title" type="xs:string"/><xs:element name="book_author" type="xs:string"/><xs:element name="book_press" type="xs:string"/><xs:element name="book_press_date" type="xs:string"/><!-- 复合元素的定义 --><xs:element name="book_title"><xs:complexType><xs:attribute ref="id" use="required"/><!-- id必须为属性 --></xs:complexType></xs:element>
    </xs:schema>
    
  • 进行XPath查询

    • nodejs环境

      bookList/book/book_title //示例xpath路径

      <!-- 引用 -->
      var fs = require('fs');
      var xpath = require('xpath');
      var dom = require('xmldom').DOMParser;
      <!-- 读取xml文件 -->
      let file = "book.xml"; 
      var data = fs.readFileSync(file, { encoding: 'UTF-8' });
      var doc = new dom().parseFromString(data);
      <!-- xpath查询 -->
      let path = "bookList/book/book_title";
      var childNodes = xpath.select(path, doc);
      childNodes.forEach((nodeItem, index) => {console.log(childNodes[index].localName + ": " + childNodes[index].firstChild.data);
      });
      console.log('\n\r');
      
    • python环境

      ···
      

示例2 (RDF部分-用RDF描述关系图表)

学号姓名年龄课程
210张三25语义web
234李四26高等数学

题目:用RDF Schema文件写出上图的概念和对应的关系;用RDF文件实现上述两条目录;用SPRQL查询语句,查询26岁以下上语义web课程的姓名。

  • 用RDF Schema文件写出上图的概念和对应的关系

    <?xml version="1.0" encoding="UTF-8"?>
    <rdf:RDF xmlns:ns1="/"xmlns:rdf=""><rdf:Description rdf:about=""><ns1:学号 rdf:resource=""/><ns1:姓名 rdf:resource=""/><ns1:年龄 rdf:resource=""/><ns1:课程 rdf:resource=""/></rdf:Description><rdf:Description rdf:about=""><ns1:学号 rdf:resource=""/><ns1:姓名 rdf:resource=""/><ns1:年龄 rdf:resource=""/><ns1:课程 rdf:resource=""/></rdf:Description>
    </rdf:RDF>
    
  • 用SPRQL查询语句,查询上语义web课程的姓名

    • python环境

      import rdflib
      import re
      rdfFile = 'stu.rdf'
      Object = '语义web'
      maxAge = 26  # 最大年龄26
      g1 = rdflib.Graph()
      g1.parse(rdfFile, format="xml")
      reData = []
      data = ['', '', '']
      q = "select ?Subject ?Predicate where {?Subject ?Predicate </" + Object + ">}"
      data[2] = Object
      x1 = g1.query(q)
      leng = len(list(x1))
      for i in range(leng):s = str(list(x1)[i])txt = re.findall(r'resource/.*?\'', s)data[0] = txt[0][9:-1]data[1] = txt[1][9:-1]str_ = data[0]+' '+data[1]+' '+data[2]reData.append(str_)
      print(reData)
      
      print打印结果:
      >>  ['张三 课程 语义web']
      

示例3 (OWL部分-用OWL描述图关系)

题目:通过动物种类与关系,编写owl文件

    <?xml version="1.0"?><rdf:RDF xmlns=""xml:base=""xmlns:owl=""xmlns:rdf=""xmlns:xml=""xmlns:xsd=""xmlns:rdfs=""><owl:Ontology rdf:about=""/><!-- --><owl:ObjectProperty rdf:about=""><rdfs:domain rdf:resource=""/><rdfs:domain rdf:resource=""/></owl:ObjectProperty><owl:ObjectProperty rdf:about=""><rdfs:domain rdf:resource=""/><rdfs:domain rdf:resource=""/><rdfs:domain rdf:resource=""/></owl:ObjectProperty><owl:ObjectProperty rdf:about=""><rdfs:domain rdf:resource=""/><rdfs:domain rdf:resource=""/><rdfs:domain rdf:resource=""/><rdfs:domain rdf:resource=""/></owl:ObjectProperty><!--  --><owl:Class rdf:about=""/><owl:Class rdf:about=""><rdfs:subClassOf rdf:resource=""/></owl:Class><owl:Class rdf:about=""><rdfs:subClassOf rdf:resource=""/></owl:Class><owl:Class rdf:about=""><rdfs:subClassOf rdf:resource=""/></owl:Class><owl:Class rdf:about=""><rdfs:subClassOf rdf:resource=""/></owl:Class><owl:Class rdf:about=""><rdfs:subClassOf rdf:resource=""/></owl:Class><owl:Class rdf:about=""><rdfs:subClassOf rdf:resource=""/></owl:Class><owl:Class rdf:about=""><rdfs:subClassOf rdf:resource=""/></owl:Class><owl:Class rdf:about=""><rdfs:subClassOf rdf:resource=""/></owl:Class><owl:Class rdf:about=""><rdfs:subClassOf rdf:resource=""/></owl:Class></rdf:RDF>

语义web一些简单示例

语义web一些简单示例

示例1 (xml部分-用xml描述书籍信息)

题目:写出三本书,每本书有:标题,作者,出版社,出版日期,,,,,;写出对应的XML文件;根据你写的XML文件,写出对应的DTD文件和XML Schema文件;进行XPath查询(这个比较简单)

  • xml文件(book.xml)

    <bookList><book><book_title id="book1">红楼梦</book_title><book_author>曹雪芹</book_author><book_press>人民文学出版社</book_press><book_press_date>2020年</book_press_date></book><book><book_title>三体1:地球往事</book_title><book_author>刘慈欣</book_author><book_press>重庆出版社</book_press><book_press_date>2008年01月01日</book_press_date></book><book><book_title>时间简史</book_title><book_author>霍金</book_author><book_press>湖南科学技术出版社</book_press><book_press_date>1988年</book_press_date></book>
    </bookList>
    
  • dtd使用(book.dtd)

    <?xml version="1.0" endcoding="UFT-8"?>
    <!ELEMENT bookList>
    <!ELEMENT book>
    <!ELEMENT proudect (book_title,book_author,book_press,book_press_date)>
    <!ELEMENT book_title (#PCDATA)>
    <!ELEMENT book_author (#PCDATA)>
    <!ELEMENT book_press (#PCDATA)>
    <!ELEMENT book_press_date (#PCDATA)>
    
  • XML Schema (book.xsd)

    <?xml version="1.0" encoding="UTF-8" ?>
    <xs:schema xmlns:xs=""><!-- 属性的定义 --><xs:attribute name="id" type="xs:string"/><!-- 简易元素的定义--><xs:element name="book_title" type="xs:string"/><xs:element name="book_author" type="xs:string"/><xs:element name="book_press" type="xs:string"/><xs:element name="book_press_date" type="xs:string"/><!-- 复合元素的定义 --><xs:element name="book_title"><xs:complexType><xs:attribute ref="id" use="required"/><!-- id必须为属性 --></xs:complexType></xs:element>
    </xs:schema>
    
  • 进行XPath查询

    • nodejs环境

      bookList/book/book_title //示例xpath路径

      <!-- 引用 -->
      var fs = require('fs');
      var xpath = require('xpath');
      var dom = require('xmldom').DOMParser;
      <!-- 读取xml文件 -->
      let file = "book.xml"; 
      var data = fs.readFileSync(file, { encoding: 'UTF-8' });
      var doc = new dom().parseFromString(data);
      <!-- xpath查询 -->
      let path = "bookList/book/book_title";
      var childNodes = xpath.select(path, doc);
      childNodes.forEach((nodeItem, index) => {console.log(childNodes[index].localName + ": " + childNodes[index].firstChild.data);
      });
      console.log('\n\r');
      
    • python环境

      ···
      

示例2 (RDF部分-用RDF描述关系图表)

学号姓名年龄课程
210张三25语义web
234李四26高等数学

题目:用RDF Schema文件写出上图的概念和对应的关系;用RDF文件实现上述两条目录;用SPRQL查询语句,查询26岁以下上语义web课程的姓名。

  • 用RDF Schema文件写出上图的概念和对应的关系

    <?xml version="1.0" encoding="UTF-8"?>
    <rdf:RDF xmlns:ns1="/"xmlns:rdf=""><rdf:Description rdf:about=""><ns1:学号 rdf:resource=""/><ns1:姓名 rdf:resource=""/><ns1:年龄 rdf:resource=""/><ns1:课程 rdf:resource=""/></rdf:Description><rdf:Description rdf:about=""><ns1:学号 rdf:resource=""/><ns1:姓名 rdf:resource=""/><ns1:年龄 rdf:resource=""/><ns1:课程 rdf:resource=""/></rdf:Description>
    </rdf:RDF>
    
  • 用SPRQL查询语句,查询上语义web课程的姓名

    • python环境

      import rdflib
      import re
      rdfFile = 'stu.rdf'
      Object = '语义web'
      maxAge = 26  # 最大年龄26
      g1 = rdflib.Graph()
      g1.parse(rdfFile, format="xml")
      reData = []
      data = ['', '', '']
      q = "select ?Subject ?Predicate where {?Subject ?Predicate </" + Object + ">}"
      data[2] = Object
      x1 = g1.query(q)
      leng = len(list(x1))
      for i in range(leng):s = str(list(x1)[i])txt = re.findall(r'resource/.*?\'', s)data[0] = txt[0][9:-1]data[1] = txt[1][9:-1]str_ = data[0]+' '+data[1]+' '+data[2]reData.append(str_)
      print(reData)
      
      print打印结果:
      >>  ['张三 课程 语义web']
      

示例3 (OWL部分-用OWL描述图关系)

题目:通过动物种类与关系,编写owl文件

    <?xml version="1.0"?><rdf:RDF xmlns=""xml:base=""xmlns:owl=""xmlns:rdf=""xmlns:xml=""xmlns:xsd=""xmlns:rdfs=""><owl:Ontology rdf:about=""/><!-- --><owl:ObjectProperty rdf:about=""><rdfs:domain rdf:resource=""/><rdfs:domain rdf:resource=""/></owl:ObjectProperty><owl:ObjectProperty rdf:about=""><rdfs:domain rdf:resource=""/><rdfs:domain rdf:resource=""/><rdfs:domain rdf:resource=""/></owl:ObjectProperty><owl:ObjectProperty rdf:about=""><rdfs:domain rdf:resource=""/><rdfs:domain rdf:resource=""/><rdfs:domain rdf:resource=""/><rdfs:domain rdf:resource=""/></owl:ObjectProperty><!--  --><owl:Class rdf:about=""/><owl:Class rdf:about=""><rdfs:subClassOf rdf:resource=""/></owl:Class><owl:Class rdf:about=""><rdfs:subClassOf rdf:resource=""/></owl:Class><owl:Class rdf:about=""><rdfs:subClassOf rdf:resource=""/></owl:Class><owl:Class rdf:about=""><rdfs:subClassOf rdf:resource=""/></owl:Class><owl:Class rdf:about=""><rdfs:subClassOf rdf:resource=""/></owl:Class><owl:Class rdf:about=""><rdfs:subClassOf rdf:resource=""/></owl:Class><owl:Class rdf:about=""><rdfs:subClassOf rdf:resource=""/></owl:Class><owl:Class rdf:about=""><rdfs:subClassOf rdf:resource=""/></owl:Class><owl:Class rdf:about=""><rdfs:subClassOf rdf:resource=""/></owl:Class></rdf:RDF>

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论