有没有一种方法可以从 OWL 本体文件中获取基本名称空间,而不使用 DOM 或类似的东西,而只使用 Jena 的 API?例如,来自 OWL 文件:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:protege="http://protege.stanford.edu/plugins/owl/protege#"
xmlns="http://www.owl-ontologies.com/Ontology1254827934.owl#"
xmlns:xsp="http://www.owl-ontologies.com/2005/08/07/xsp.owl#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:swrl="http://www.w3.org/2003/11/swrl#"
xmlns:swrlb="http://www.w3.org/2003/11/swrlb#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://www.owl-ontologies.com/Ontology1254827934.owl">
Run Code Online (Sandbox Code Playgroud)
我怎样才能http://www.owl-ontologies.com/Ontology1254827934.owl在运行时得到?
我创建了这个本体,其中包含两个类:血糖和服务。Blood-Sugar有两个数据属性:范围为 xsd:int 的hasValu和范围为 xsd:string 的hasStatut 。对象属性triggerService以“血糖”为域,以“服务”为范围。
\n\n我想用这个规则推断数据属性断言:
\n\n\n\n\nBlood_Sugar(?x) \xe2\x88\xa7 hasValue(?x, ?y) \xe2\x88\xa7 swrlb:greaterThan(?y, 126) \xe2\x88\xa7 swrlb:lessThan(?y, 500) \ xe2\x86\x92 hasStatut(?x, "高")
\n
然后我想用这个规则推断一个新的对象属性:
\n\n\n\n\nBlood_Sugar(?x) \xe2\x88\xa7 hasStatut(?x, "高") \xe2\x88\xa7 Service(?s) \xe2\x86\x92 triggerService(?x, ?s)
\n
然而,当我创建规则应适用的个体时,推理机并没有给出我想要的结果。这是演示这种行为的本体:
\n\n<?xml version="1.0"?>\n\n\n<!DOCTYPE rdf:RDF [\n <!ENTITY owl "http://www.w3.org/2002/07/owl#" >\n <!ENTITY swrl "http://www.w3.org/2003/11/swrl#" >\n <!ENTITY swrlb "http://www.w3.org/2003/11/swrlb#" >\n <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >\n <!ENTITY rdfs …Run Code Online (Sandbox Code Playgroud) 我有一个具有以下等价的 OWL 类(采用曼彻斯特表示法):
A
and not (hasB some
(B
and (hasC some C)
and (hasD some D)
and (hasList some
(OWLList
and (hasContents some
(OWLList
and (hasContents some
(E
and (hasValue some integer[< 200])
and (hasType value "xsd:integer"^^string)))
and (hasNext some EmptyList)))
and (hasNext some EmptyList)))))
我希望对此类强制执行封闭世界推理,以便任何不满足语句后剩余条件的个人都not将成为此类的成员。
为此,我尝试使hasC,hasD和hasList属性具有功能性,以便 OWL 知道不可能有这些属性的其他实例附加到此类。
不幸的是,该hasB属性可能会多次出现,因此无法对其进行限制。为了尝试“关闭”班级的这一部分,我oneOf在班级中添加了一条声明B,指定班级可以接受的所有可能的个人B。
在我看来,函数属性和oneOf语句的这种组合应该成功“关闭”该类。谁能告诉我我做错了什么?
我正在使用http://owl-workshop.man.ac.uk/acceptedLong/submission_12.pdf提出的 OWLList 类和相关属性。
非常感谢。
我是 RDF/本体论的新手,我不太清楚在这个领域的工作方式。目前我对三重验证感到困扰。我仍然以关系方式思考,首先创建一个模式,然后为了插入数据,我需要遵循该结构。
为了插入三元组,我使用 Jena,然后使用生成的字符串来执行插入命令。这是我的问题:
有没有办法验证我生成的 RDF 三元组(当前使用 Jena)实际上遵循我的本体结构。
或者,当我执行插入时,有没有办法让 rdf 存储(当前的 Virtuoso)通知我?我做了一些搜索,发现:How to Import Ontology into Virtuoso? 。这是否意味着我的三元组将根据我的本体进行检查/验证?
还找到了RDF和OWL工作流程问题。那里说
对于以下 XSD:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified">
<xs:simpleType name="size">
<xs:restriction base="xs:string">
<xs:enumeration value="small" />
<xs:enumeration value="medium" />
<xs:enumeration value="large" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="jeans">
<xs:simpleContent>
<xs:extension base="size">
<xs:attribute name="sex">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="male" />
<xs:enumeration value="female" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
我想将 xs:enumeration 转换为 owl。我只找到了一种方法:
将字符串文字转换为 owl:Class:
:Class_2
a owl:Class ;
rdfs:subClassOf dtype:EnumeratedValue ;
rdfs:subClassOf
[ a owl:Restriction ;
owl:maxCardinality "1"^^xsd:int ;
owl:onProperty dtype:hasValue
] ;
rdfs:subClassOf
[ a owl:Restriction ;
owl:allValuesFrom xsd:string ;
owl:onProperty …Run Code Online (Sandbox Code Playgroud) 这是我的最低数据:
@prefix : <http://example.org/rs#>
:item :hasContext [:weight 0.1 ; :doNotRecommend true] , [:weight 0.2 ] .
:anotherItem :hasContext [:weight 0.4] , [ :weight 0.5 ] .
Run Code Online (Sandbox Code Playgroud)
如您所见,每个item都有一个或多个 hasContext,它的对象hasContext是一个可以有doNotRecommed谓词的实例。
我想要的是,如果这些实例之一(hasContext 的对象)包含 donNotRecommed,我希望总和为零。** 和总和我的意思是权重的总和**,所以换句话说,如果该属性存在,忽略所有权重(无论它们是否存在),只需将其设为零
select ?item (SUM(?finalWeight) as ?summedFinalWeight) {
?item :hasContext ?context .
optional
{
?context :doNotRecommend true .
bind( 0 as ?cutWeight)
}
optional
{
?context :weight ?weight .
}
bind ( if(bound(?cutWeight), ?cutWeight , if(bound(?weight), ?weight, 0.1) ) …Run Code Online (Sandbox Code Playgroud) 我尝试在互联网上搜索,但找不到合适的工具,所以如果有人可以为我提供指向该工具的链接,该工具可以解析和显示 RDF 和 OWL 本体的图形。
我目前正在从事一个项目,该项目需要某些描述现实生活场景的 OWL2 XML 文件被“转换”为 AnyLogic 模型的 ALP(XML 类型)格式,以便它们可以在应用程序中打开。这种转换最终应该通过另一个应用程序自动发生。
这些情景描述了荷兰某些地区的旅游流量。这些场景以 RDF-OWL2 格式在本地 Semantic MediaWiki 中定义和导出。在 AnyLogic 中,我们已经设法创建了我们想要的仿真模型和场景。现在,我们希望将这些场景从 MediaWiki 直接“转换”到 AnyLogic,以便无需接触 AnyLogic 应用程序即可创建仿真模型。参数的类型、类、代理等我们都已经定义好了,所以这只是“语义维基页面A中的旅游区应该变成AnyLogic中的旅游区A”的一个例子。
例如,零件输入 RDF 文件可能如下所示:
<genericTrainStation>
<name>Station Amsterdam</name>
<size>20km</size>
....
</genericTrainStation>
Run Code Online (Sandbox Code Playgroud)
在 AnyLogic 中,如果我要在应用程序中创建相同的站点,.alp 文件中的输出将类似于...
<EmbeddedObject>
<stuffIrrelevant></stuffIrrelevant>
<stuffIrrelevant2></stuffIrrelevant2>
<name>Station Amsterdam></name>
<size>20km</size>
Run Code Online (Sandbox Code Playgroud)
问题是是否可以通过某种方式使用 RDF 补充或替换 AnyLogic ALP 文件中的某些值,直接在输入和输出之间进行转换。
到目前为止,我有两个想法:
使用 XSLT 尝试执行翻译
使用 AnyLogic ALP 格式作为基础,并围绕执行翻译构建编译器
我一直在寻找任何与操作 ALP AnyLogic 格式有关的资源,但无济于事。我通常正在寻求关于这两个想法的总体合理性的帮助,以及我可以在我的任务中使用的最终资源。
我正在开发一个系统来使用 OWL 和知识图来表示历史时期和里程碑。是否可以使用 xsd:dateTime 数据类型来表示 BC 日期,例如罗马帝国的开始?