如何将MathML嵌入到本体中并引用它的一部分

时间:2013-03-05 22:01:42

标签: rdf ontology owl mathml

我是MathML的新手,所以如果这是一个愚蠢的问题我会道歉。我想将MathML 3.0嵌入到本体(RDF / OWL等)中。但我希望方程中的变量能够引用本体中的实体。

例如,对于等式( a + b ),其中 a exampleontology#a 表示 exampleontology#b b ,我会做类似的事情:

<应用> < csymbol cd =“arith1”> plus< / csymbol>

< ci id ='exampleontology#a'> a< / ci>

< ci id ='exampleontology#b'> b< / ci>

< /应用>

我不确定嵌入这些引用的最合适方法是什么。

4 个答案:

答案 0 :(得分:2)

This answer on semanticweb.com关于在RDF中编码数学表达式的相关问题可能有助于达到预期目标。

它为数学对象引入了一个基于OpenMath的词汇表,并为数学表达式和RDF资源和属性之间的交叉引用引入(另请参阅OpenMath content dictionary for RDF)。由于OpenMath也与Strict Content MathML完全兼容,因此很容易在两种表示形式之间进行转换。

答案 1 :(得分:1)

传统上,MathML和OWL都使用自己独立的特定标记序列化为XML(例如:<owl:Class rdf:about="exampleontology#A"/>)。所以不可能这样,你必须找到一个解决方法。

您可以做的是创建一个本体,然后通过OWL注释属性(例如mathml)链接一些MathML代码。然后,您可以通过访问注释属性的值来检索MathML代码。

例如,如果将以下代码块保存为.owl文件并使用Protege 4打开它,您应该能够理解该模式:

<?xml version="1.0"?>
<!DOCTYPE rdf:RDF [
<!ENTITY owl "http://www.w3.org/2002/07/owl#" >
<!ENTITY demo "http://www.example.org/demo.owl#" >
<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
<!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
<!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
]>
<rdf:RDF xmlns="http://www.example.org/demo.owl#"
 xml:base="http://www.example.org/demo.owl"
 xmlns:demo="http://www.example.org/demo.owl#"
 xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
 xmlns:owl="http://www.w3.org/2002/07/owl#"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<owl:Ontology rdf:about="http://www.example.org/demo.owl"/>

<owl:AnnotationProperty rdf:about="&demo;mathml"/>

<owl:Class rdf:about="&demo;a">
    <mathml rdf:datatype="&xsd;string">&lt;ci&gt;a&lt;/ci&gt;</mathml>
</owl:Class>
</rdf:RDF>

答案 2 :(得分:0)

<apply> <csymbol cd="arith1">plus</csymbol>
<ci id='exampleontology#a'>a</ci>
<ci id='exampleontology#b'>b</ci>
</apply>

#不是XML ID中的有效字符,我认为这里最自然的方法是将您的本体等同于OpenMath内容词典然后你可以去

<apply> <csymbol cd="arith1">plus</csymbol>
<csymbol cd='exampleontology'>a</csymbol>
<csymbol cd='exampleontology>b</csymbol>
</apply>

将csymbol的内容作为内容字典中符号的名称。

您可以但不必使用OpenMath Content Dictionary语法来描述系统,也可以直接将本体作为OWL进行管理。

有一些旧文件在rdf / owl和世界的openmath视图之间开始一些映射,例如

http://www.openmath.org/ontology/README

http://www.openmath.org/lists/index.html的openmath列表可能是与对OpenMath / MathML和RDF / OWL感兴趣的人联系的最佳位置

答案 3 :(得分:0)

最简单的方法是为MathML文字定义一个新的数据类型。我们说http://www.w3c.org/datatypes/mathMLLiteral。 (理想情况下,它应由W3C定义)

在Turtle格式中,这看起来像这样:

@prefix math:<http://example.org/ont/math#>

:APlusB a math:Addition
   math:serialization """<apply> <csymbol cd="arith1">plus</csymbol>
                         <ci id='exampleontology#a'>a</ci>
        <ci id='exampleontology#b'>b</ci>

        </apply> """^^<http://www.w3c.org/datatypes/mathMLLiteral> .

GeoSPARQL标准中使用类似的编码模式,其中几何以WKT或GML编码。 Geosparql为每个数据类型引入了两种不同的数据类型:http://www.opengis.net/ont/geosparql#wktLiteral和&lt; http://www.opengis.net/ont/geosparql#gmlLiteral