Как встраивать MathML в онтологию и ссылочные части его
Я довольно новичок в MathML, поэтому я прошу прощения, если это глупый вопрос. Я хотел бы встроить MathML 3.0 в онтологию (RDF/OWL и т. Д.). Но я бы хотел, чтобы переменные в уравнении ссылались на сущности в онтологии.
Например, для уравнения (a + b), где a представлено exampleontology # a, а b exampleontology # b, я бы сделал что-то вроде:
Применить>
Я не уверен, что является наиболее подходящим способом для вставки этих ссылок.
4 ответа
Этот ответ на semanticweb.com на связанный вопрос о кодировании математических выражений в RDF может быть полезен для желаемой цели.
Он вводит словарь на основе OpenMath для математических объектов, а также для перекрестных ссылок между математическими выражениями и ресурсами и свойствами RDF (см. Также словарь содержимого OpenMath для RDF). Поскольку OpenMath также полностью совместим со строгим содержимым MathML, его легко конвертировать между обоими представлениями.
MathML и OWL традиционно сериализуются в XML с использованием своих независимых независимых тегов (пример: <owl:Class rdf:about="exampleontology#A"/>
). Так что это невозможно, нужно найти обходной путь.
Что вы можете сделать, это создать онтологию, а затем связать некоторый код MathML через свойство аннотации OWL (например, 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"><ci>a</ci></mathml>
</owl:Class>
</rdf:RDF>
Самый простой подход - определить новый тип данных для литералов 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 и < http://www.opengis.net/ont/geosparql
<apply> <csymbol cd="arith1">plus</csymbol>
<ci id='exampleontology#a'>a</ci>
<ci id='exampleontology#b'>b</ci>
</apply>
#
не является допустимым символом в XML-идентификаторе, я думаю, что наиболее естественный способ здесь - приравнять ваши онтологии к словарю контента OpenMath.
<apply> <csymbol cd="arith1">plus</csymbol>
<csymbol cd='exampleontology'>a</csymbol>
<csymbol cd='exampleontology>b</csymbol>
</apply>
содержимое символа принимается как имя символа в словаре содержимого.
Вы можете, но не обязаны использовать синтаксис OpenMath Content Dictionary для описания систем, или вы можете просто напрямую управлять онтологией как OWL.
Есть некоторые старые файлы, начинающие некоторые сопоставления между rdf / owl и openmath, например, представлениями о мире.
http://www.openmath.org/ontology/README
Список openmath по адресу http://www.openmath.org/lists/index.html, вероятно, является лучшим местом для общения с людьми, интересующимися OpenMath/MathML и RDF/OWL.