问题标签 [semantic-mediawiki]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
semantic-mediawiki - Semantic MediaWiki 中是否有类似 rowid 或解决方法的东西?
http://semantic-mediawiki.org/wiki/Help:Inline_queries
解释了如何在Semantic MediaWiki中进行查询
是此类查询的示例。
现在有一个列显示运行索引/rowid 会很好,如下 所示。
怎么可能做到这一点?
semantic-mediawiki - 如何跨类别查询和显示文本的公共部分?
我们在工作中为我们的内部 wiki 安装了 SMW。有一个名为“X”的类别,其中包含“A”、“B”和“C”页面,每个页面中都有一个名为“联系人”的部分。
问题:如何编写一个查询来显示属于“X”类别的每个页面的此联系人部分?
我已经..
我阅读了帮助:选择页面,并能够从 Special:Ask 页面列出 X 类别下的所有页面。
谢谢您的帮助!
mediawiki - Semantic MediaWiki:如何查询具有中间关系的页面?
假设我想在“知识图”中链接几个 wiki 页面。比方说,这里有一个地理对象的快速列表,从大到小,其中箭头表示直接的 MediaWiki 链接:
上面的页面有以下内容:
大陆:欧洲
国家:荷兰
城市:阿姆斯特丹
地点:喜力音乐厅
使用以下类型声明属性:
self:name
:[[has type::text]]
ref:continent
,ref:country
,ref:city
:[[has type::page]]
据我了解 Semantic MediaWiki 的工作原理,该#ask
功能适用于一个级别。比方说,{{#ask: [[self:name::+]] }}
可以获取所有 4 个页面,因为所有页面都self:name
设置了属性。我还可以通过过滤掉某个类别来缩小搜索结果的范围:{{#ask: [[Category:Venues]] [[ref:city::City:Amsterdam]] }}
. 这允许立即获得相关页面(这很容易,因为页面直接Venue:Heineken Music Hall
与页面相关City:Amsterdam
)。
现在,假设我想显示位于 的所有场地,Continent:Europe
因此应该以某种方式隐含地考虑。无法工作,因为查询组合了两个在同一页面上永远不会一起出现的属性。那么,Semantic MediaWiki 是否有任何查询语法/能力允许指定中间关系,以便它可以“抓取”和“内部连接”给欧洲的所有场所?Country:Netherlands
City:Amsterdam
{{#ask: [[Category:Venues]] [[ref:continent::Continent:Europe]] }}
是否可以跨多个页面查询以某种方式指定中间关系?还是 SMW 仅针对“扁平”/标记关系设计?
更新
我对我想要得到的东西不是很具体。假设您必须描述一个可以转换为人类可读形式的事件。目前,在非结构化 wiki 中,您可能会使用类似于以下的自定义模板:
产生以下结果:
2012年12月3日的演出在荷兰阿姆斯特丹的喜力音乐厅举行。
我正在寻找的是允许在 Semantic MediaWiki 中编写以下模板的东西:
因此,可以自动获得国家和城市,并以某种方式在上面定义的关系,但仍然给出结果:...,Netherlands 上的表现。
semantic-mediawiki - 在 SMW 中更新页面
我是 SMW 的新手,我继承了一个没人知道任何细节的系统。
我有几个问题:
我怎样才能找出 SMW 背后的数据库是什么以及在哪里?我认为某处有一个配置文件,但我找不到它。
当我查看带有 browsebysubject 的页面时,我看到了与数据关联的类型,例如:
这些类型是什么意思?
我被要求编辑 1000 页以删除 2 个字段并添加一个新字段。要使用 API 执行此操作,我会使用 browsebysubject 获取数据并修改该字典吗?但是那我怎么写回去呢?
或者我会使用 index.php?action=raw 获取原始数据,对其进行修改,然后使用编辑(https://www.mediawiki.org/wiki/API:Edit)将其写回。
我尝试了后者,这导致我要删除的 2 个字段的数据消失,但字段标题没有,并且我的新字段没有显示。然后我虽然必须更改表单,并且我做到了,但表单更改并未反映在页面中。我认为表单上的字段与数据库中的某些列或某些内容之间必须存在某种联系。我不认为我可以放入任何自由格式的标签并让它工作。
任何人都可以给我的任何帮助或指导将不胜感激。
mediawiki - Semantic MediaWiki:是否可以使用子查询而不是表的属性?
我仍在尝试使我的 wiki 更加“动态”,以消除重复数据。在我之前的问题中,我问我如何绑定多个页面并通过绑定页面检索属性。由于这个问题已经在简单的情况下得到解决(但是我不太喜欢我的解决方案),我想让它适用于表格。让我们再次考虑我在问题中提到的相同页面和属性结构,因此以下代码
使用内联查询检索地点、城市(阿姆斯特丹)和国家(荷兰)。但是我不确定这种方法是否适用于表格。据我所知,#ask
可以从直接属性中生成一个生成列的表:
输出:
我还想添加City和Country列。问题是,正如我上面提到的,城市和国家属性没有直接放入Venue页面,因此该#ask
函数可能使用内联子查询。但我不能让它工作:
我首先想到的是使用模板使用format = template
and template = TEMPLATE_NAME
。我设法通过创建所需的模板并解析{{{1}}}
...参数来使用这种方法提取绑定的城市,但我似乎无法提取国家(提取简单:日期、地点;复杂:城市;不能:国家)。同样使用模板方法似乎很脆弱,对我来说不是很一致。
是否可以指定子查询/表达式而不是表的属性以从 Semantic MediaWiki 中的间接绑定页面中提取属性(可能从不使用模板)?
mediawiki - 在 Semantic MediaWiki 中传递属性
目前我有 3 个类别,应用程序、应用程序实例和供应商。
现在,应用程序有一个到供应商的链接(通过属性 Made By)。应用程序实例需要通过属性链接回供应商。我有可以用来返回应用程序名称的查询,供应商是
然而
将属性设置为询问查询返回的供应商值不起作用。
还有其他方法可以做到这一点吗?
mediawiki - 使用页面变量作为模板变量
我目前有一个在内部媒体维基上运行的简单信息框模板。我想将页面类别传递给模板,以便我可以使用类别树生成列表。
是否可以让模板选择 Category = foo
从我已经有的页面
[[Category:Foo]]
写在他们身上?
即我在页面顶部的模板文本会有一个类似的部分
[[Category:Foo]]
从我所有页面上已有的内容中提取?
mediawiki - 无需复制内容即可使用 SMW 子对象
我想要实现的示例
我有许多补丁页面(“补丁 1.4”、“补丁 1.5”等)列出了对项目所做的更改,其中受影响/更改的内容链接到相应的页面(“确认对话框”、“foo” , ETC。):
补丁 1.4
- 修复了 [[确认对话框]] 中的拼写问题
补丁 1.5
- 添加了两个选项:[[foo]]、[[bar]]
在有关已更改内容的页面上(“确认对话框”,“foo”,...),我想自动显示所有相应的更改:
富
- [[Patch 1.5]]:增加了两个选项:[[foo]]、[[bar]]
Semantic MediaWiki 的子对象可以做到这一点
#subobject
允许我为补丁页面上的每个更改创建一个(匿名)对象:
在每一页(“foo”等)上,我可以包含一个#ask
子对象查询来列出所有匹配的子对象:
伟大的。
问题:我必须复制更改条目。
在补丁页面上,更改条目如下所示:
所以我必须两次指定“添加了两个选项:[[foo]],[[bar]]”:一次用于可见内容,一次用于不可见子对象。
(语义)MediaWiki 中有没有办法做到这一点而不必复制内容?
理想的解决方案只需要我附上更改条目并在其旁边指定受影响的页面,例如:
由于每个补丁页面可以列出数百个更改,我不想为每个更改创建单独的页面。
mediawiki - 内联查询,用于列出命名空间中的所有页面,不包含任何子对象
我需要一个内联查询,它列出来自特定命名空间的所有页面,但不列出这些页面上指定的子对象。
将结果限制为命名空间是可能的:
但它也列出了所有子对象。
解决方法:
在这些页面上指定一个类别(子对象不继承它)并查询该类别:
/li>在这些页面上指定一个属性(而不是在子对象上)并查询该属性(使用通配符值):
/li>
但是这两种解决方法都需要编辑,我想避免。有没有更好的方法来解决这个问题?