小编Jos*_*lor的帖子

避免静态方法过度使用的提示

我正在重构一些代码,我正在看一个名为HFile的类.HFile具有所有私有构造函数,因此您无法实际创建它的实例.而不是如下创建HFiles的实例:

var file = new HFile('filename')
file.Save()
Run Code Online (Sandbox Code Playgroud)

所有HFile交互都是通过静态方法处理的.所以,如果我想保存文件,我会打电话:

HFile.save('filename')
Run Code Online (Sandbox Code Playgroud)

然后在内部创建一个HFile实例然后保存.显然,在不了解整个故事的情况下,任何读者都必须保留判断力,但似乎使用静态方法在我的工作场所变得非常流行.所以我想知道静态方法的使用是否有良好的原则/最佳实践,可以帮助一群人坐下来回顾他们对静态方法的使用.

language-agnostic static-methods

9
推荐指数
3
解决办法
2930
查看次数

计算节点之间的路径长度?

如何检索两个节点之间的路径长度?例如,给定组织层次结构,如何确定父组织和后代组织分离的距离?请考虑以下方案:

  1. OrgA -hasSubOrganization-> OrgB, OrgC

    这是一个非常简单的情况,我希望得到一个实体的所有直接子组织.因此路径长度为1.

  2. OrgA -> OrgB -> OrgC

    或一般情况

    OrgA -> OrgB - - - - - - - - OrgZ
    
    Run Code Online (Sandbox Code Playgroud)

我想以递归方式遍历图表,并通过该hasSubOrganization属性查找属于另一个组织的每个组织.为了让所有子组织递归,我可以使用属性路径,例如+运算符:

OrgA hasSubOrganization+ ?subOrg
Run Code Online (Sandbox Code Playgroud)

这将为我提供所有子组织,直到叶节点.但我的最终目标是构建组织层次结构,但有关"节点/步骤/级别/跳过子组织的数量"的信息将丢失.这意味着我无法为可视化重新创建组织结构.

除了子组织的名称之外,我如何捕获"节点数"信息?

rdf sparql jena

9
推荐指数
1
解决办法
4071
查看次数

在Clojure重写Lisp土地的向导游戏

我正试图从"Land of Lisp"重写向导游戏 http://landoflisp.com/wizards_game.lisp

(def *nodes* {:living-room "you are in the living-room. a wizard is snoring loudly on the couch."
          :garden "you are in a beautiful garden. there is a well in front of you."
          :attic "you are in the attic. there is a giant welding torch in the corner."})

(def *edges* {:living-room '((garden west door) (attic upstairs ladder))
          :garden '(living-room east door)
          :attic '(living-room downstairs ladder)})

(defn describe-location [location nodes]
  (nodes location))

(defn describe-path-raw [edge]
  `(there is a ~(last …
Run Code Online (Sandbox Code Playgroud)

lisp jvm clojure land-of-lisp

9
推荐指数
1
解决办法
1099
查看次数

使用Jena TDB在本地加载DBpedia?

我需要对DBpedia执行查询:

SELECT DISTINCT ?poi ?lat ?long ?photos ?template ?type ?label WHERE {
  ?poi  <http://www.w3.org/2000/01/rdf-schema#label> ?label .
  ?poi <http://www.w3.org/2003/01/geo/wgs84_pos#lat> ?lat .
  ?poi <http://www.w3.org/2003/01/geo/wgs84_pos#long> ?long .
  ?poi <http://dbpedia.org/property/hasPhotoCollection> ?photos .                      
  OPTIONAL {?poi <http://dbpedia.org/property/wikiPageUsesTemplate> ?template } .
  OPTIONAL {?poi <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?type } .
  FILTER ( ?lat > x && ?lat < y &&
           ?long > z && ?long < ? && 
           langMatches( lang(?label), "EN" ))
} 
Run Code Online (Sandbox Code Playgroud)

我猜这些信息分散在不同的转储(.nt)文件中,不知怎的,SPARQL端点为我们提供了结果集.我需要在本地下载这些不同的.nt文件(不是所有的DBpedia),只执行一次查询并在本地存储结果(我不想使用SPARQL端点).

  • 我应该在这一次运行中使用耶拿的哪些部分?

我从这篇文章中读到有点困惑:

因此,您可以将整个DBPedia数据加载到磁盘上的单个TDB位置(即单个目录).这样,您就可以对它运行SPARQL查询.

  • 如果我们有三个.nt DBpedia文件,如何以Jena术语将DBpedia加载到单个TDB位置?我们如何在这些.nt文件上应用上述查询?(任何代码都会有所帮助.)

  • 例如,这是错的吗?

 String tdbDirectory = "C:\\TDB";
 String dbdump1 = "C:\\Users\\dump1_en.nt"; …
Run Code Online (Sandbox Code Playgroud)

java semantic-web sparql jena dbpedia

9
推荐指数
1
解决办法
2293
查看次数

如何在现有数据集上使用替代/新本体

通常在讨论语义数据库和本体的力量时,我听到人们说RDF数据是通用的,因为可以将本体应用于数据以便以不同的方式查看它.

然而,根据我的经验,数据集通常通过谓词与特定本体相关联,即在subject-predicate-object谓词中根据某些本体定义某些属性或关系.因此,例如,在关于电影的查询中,如果没有数据引用某个人的新"电影本体",那么我不能在针对DBPedia或LinkedMDB的查询中使用它的术语,对吧?

然后,我偶尔会看到一个数据集中的"链接",它实际上将一个特定资源连接到另一个具有自己的本体的数据集中的类似资源.即linkedmdb有owl:sameAs,但这似乎并不是人们将本体应用于数据的意思.

它是如何工作的,如何在数据集的SPARQL查询中使用关于某些主题的不同本体?

rdf semantic-web ontology sparql linked-data

9
推荐指数
1
解决办法
497
查看次数

如何在MarkLogic中处理不区分大小写的SPARQL数据

我试图理解如何最好地处理Marklogic SPARQL数据中的文字,这在任何情况下都可能.我希望能够进行不区分大小写的搜索,但我相信语义查询是不可能的.我想要一个简单的例子:

SELECT *
WHERE { ?s ?p "Red"}
Run Code Online (Sandbox Code Playgroud)

SELECT *
WHERE { ?s ?p "red"}
Run Code Online (Sandbox Code Playgroud)

返回所有值,无论对象是"红色","红色","红色"还是"rED".

我的数据来自另一个具有可变大写规则的来源.目前我唯一能想到的是添加一个额外的三元组,它总是包含小写的文本,所以我总是可以搜索该值.或者,使用不区分大小写的排序规则在MarkLogic中创建一些新的范围查询是否有意义(如果可以在三重数据上进行)?

rdf sparql marklogic

9
推荐指数
1
解决办法
4169
查看次数

如何在Lisp中读取输入直到EOF

如何在Lisp中读取输入流直到EOF?在C中,你可以这样做:

while ((c = getchar()) != EOF)
{
  // Loop body...
}       
Run Code Online (Sandbox Code Playgroud)

我希望能够将数据传输到我的Lisp程序,而无需事先指定数据大小.这是我现在正在做的一个例子:

(dotimes (i *n*)
  (setf *t* (parse-integer (read-line) :junk-allowed T))
  (if (= (mod *t* *k*) 0) (incf *count*)))
Run Code Online (Sandbox Code Playgroud)

在这个循环中,变量*n*指定了我输出到程序的行数(从第一行输入读取的值),但我想只处理一个任意和未知数量的行,当它到达时停止流的结尾.

lisp common-lisp eof

8
推荐指数
2
解决办法
8238
查看次数

如何排除文件被maven复制到爆炸的战争中

我有一个Java Web应用程序,其中我在标准webapp源目录(src/main/webapp)中有一些文件夹,我不想被复制到war(explodedpackaged)中.

我不希望这些文件复制的原因之一是我们在爆炸战争中的.js和.css文件上运行YUI JS&CSS最小化器和压缩器.我想要排除的文件在压缩阶段产生错误.我不希望他们加入战争的另一个原因是他们支持测试位于webapp中的单页JS应用程序(它们是依赖于node/的客户端JS测试脚本angular.js).

以下是相关部分POM.xml:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
  <version>2.1.1</version>
  <executions>
    <execution>
      <id>parent-resources</id>
      <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
        <overlays>
        </overlays>
        <webappDirectory>${project.build.directory}/${project.build.finalName}-work</webappDirectory>
      </configuration>
      <phase>generate-sources</phase>
      <goals>
        <goal>exploded</goal>
      </goals>
    </execution>
  </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

我尝试过,warSourceExcludes但未成功地使用它来排除某些路径,但无济于事.我的用法示例如下所示,其中client/是直接位于下方的文件夹src/main/webapp:

<configuration>
  ...
  <warSourceExcludes>
    <excludes>
      <exclude>
        client/
      </exclude>
    </excludes>
  </warSourceExcludes>
  ...
</configuration>
Run Code Online (Sandbox Code Playgroud)

将Web应用程序源目录中的某些路径和/或单个文件排除在爆炸战争中的正确方法是什么?

UPDATE

根据@maba的建议,我更新了配置如下:

<configuration>
  <failOnMissingWebXml>false</failOnMissingWebXml>
  <overlays>
  </overlays>                                 
  <webappDirectory>${project.build.directory}/${project.build.finalName}-work</webappDirectory>
  <warSourceExcludes>client/</warSourceExcludes>
</configuration>
Run Code Online (Sandbox Code Playgroud)

该文件夹client/仍然被复制.有任何想法吗?

war maven

8
推荐指数
1
解决办法
2万
查看次数

只返回其参数的函数?

在Common Lisp中,标准库中是否有一个函数只返回给定的参数(即不操作数据)?这个功能相当于(lambda (x) x).我希望将它用作可选参数的默认值.例如,这样的函数将替换(lambda (x) x)为:

(defun some-function (value &optional (transformation (lambda (x) x)))
  (other-function (funcall transformation value))
Run Code Online (Sandbox Code Playgroud)

common-lisp

8
推荐指数
2
解决办法
734
查看次数

分页SPARQL结果

假设我有以下SPARQL查询:

SELECT DISTINCT ?result ?label
WHERE {
  ?result a database:Column .
  ?result rdfs:label ?label .
}
ORDER BY (LCASE(?label))
Run Code Online (Sandbox Code Playgroud)

我可以在查询中添加什么来将结果数限制为前10个?或者优选地,在第一个n×10结果之后的10个结果?我正在尝试实现分页以显示结果.

rdf sparql

8
推荐指数
1
解决办法
1996
查看次数