语义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>