在本体中,如何将属性的值定义为日期时间

Kri*_*ian 5 rdf owl ontology sparql owl-time

在编写本体并且你想要创建一个与时间/日期相关的类和属性时,我假设你将在结构上有这样的东西(伪代码):

class:Project
  label: Project

property:duedate
  label: The expected completion time and date of project
  domain: Project
  range: datetime (?)
Run Code Online (Sandbox Code Playgroud)

我已经用Google搜索并发现了Owl-Time本体,但用例让我感到困惑,因为看起来我应该定义相当多的东西.我在这里走在正确的轨道上吗?

Jos*_*lor 5

你还没有提到你是如何构建你的本体论的.如果您是手工编写OWL(例如,使用函数语法),那么您可以单向执行; 如果您正在编写RDF,那么您将另外执行(您将编写OWL公理的RDF编码).查看这些操作的最简单方法可能是使用Protégé或类似的图形编辑器定义本体,然后查看生成的代码.我假设你使用了术语datetime,你会看到一个数据属性,其值应该是数据类型的文字xsd:dateTime.

在Protégé

在Protégé你会做这样的事情:

在此输入图像描述

在OWL功能语法中

数据属性范围公理的语法在9.3.5数据属性范围中给出,来自OWL 2 Web本体语言结构规范和功能样式语法(第二版).当我们在函数语法中保存本体时,我们得到:

Prefix(xsd:=<http://www.w3.org/2001/XMLSchema#>)
Prefix(owl:=<http://www.w3.org/2002/07/owl#>)
Prefix(xml:=<http://www.w3.org/XML/1998/namespace>)
Prefix(rdf:=<http://www.w3.org/1999/02/22-rdf-syntax-ns#>)
Prefix(rdfs:=<http://www.w3.org/2000/01/rdf-schema#>)


Ontology(<http://stackoverflow.com/q/21486301/1281433/projects>

Declaration(Class(<http://stackoverflow.com/q/21486301/1281433/projects#Project>))
Declaration(DataProperty(<http://stackoverflow.com/q/21486301/1281433/projects#dueDate>))
DataPropertyDomain(<http://stackoverflow.com/q/21486301/1281433/projects#dueDate> <http://stackoverflow.com/q/21486301/1281433/projects#Project>)
DataPropertyRange(<http://stackoverflow.com/q/21486301/1281433/projects#dueDate> xsd:dateTime)
)
Run Code Online (Sandbox Code Playgroud)

重要的公理是

DataPropertyRange(<http://stackoverflow.com/q/21486301/1281433/projects#dueDate> xsd:dateTime)
Run Code Online (Sandbox Code Playgroud)

在RDF中

OWL可以在RDF中序列化,RDF可以通过多种方式进行序列化.这是本体在RDF的Turtle序列化和RDF/XML序列化中的样子:

@prefix :      <http://stackoverflow.com/q/21486301/1281433/projects#> .
@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 rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

<http://stackoverflow.com/q/21486301/1281433/projects>
        a       owl:Ontology .

:Project  a     owl:Class .

:dueDate  a          owl:DatatypeProperty ;
        rdfs:domain  :Project ;
        rdfs:range   xsd:dateTime .
Run Code Online (Sandbox Code Playgroud)

当然,重要的三重奏是

:dueDate rdfs:range xsd:dateTime
Run Code Online (Sandbox Code Playgroud)
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns="http://stackoverflow.com/q/21486301/1281433/projects#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
  <owl:Ontology rdf:about="http://stackoverflow.com/q/21486301/1281433/projects"/>
  <owl:Class rdf:about="http://stackoverflow.com/q/21486301/1281433/projects#Project"/>
  <owl:DatatypeProperty rdf:about="http://stackoverflow.com/q/21486301/1281433/projects#dueDate">
    <rdfs:domain rdf:resource="http://stackoverflow.com/q/21486301/1281433/projects#Project"/>
    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#dateTime"/>
  </owl:DatatypeProperty>
</rdf:RDF>
Run Code Online (Sandbox Code Playgroud)

它仍然是重要的三元组,但在这种格式中,它写成:

  <owl:DatatypeProperty rdf:about="http://stackoverflow.com/q/21486301/1281433/projects#dueDate">
    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#dateTime"/>
  </owl:DatatypeProperty>
Run Code Online (Sandbox Code Playgroud)